Товары в корзине: 0 шт Оформить заказ
Стр. 1
 

245 страниц

1216.00 ₽

Купить официальный бумажный документ с голограммой и синими печатями. подробнее

Официально распространяем нормативную документацию с 1999 года. Пробиваем чеки, платим налоги, принимаем к оплате все законные формы платежей без дополнительных процентов. Наши клиенты защищены Законом. ООО "ЦНТИ Нормоконтроль".

Наши цены ниже, чем в других местах, потому что мы работаем напрямую с поставщиками документов.

Способы доставки

  • Срочная курьерская доставка (1-3 дня)
  • Курьерская доставка (7 дней)
  • Самовывоз из московского офиса
  • Почта РФ

распространяется на язык программирования Алгол 68 и его варианты и устанавливает требования:

к программе на языке программирования Алгол 68, представленной на машинном носителе или в комплекте программной документации;

к реализациям языка программирования Алгол 68 и его вариантов, используемым при создании или эксплуатации программных средств, в части выполнения программ на языке Алгол 68

Оглавление

1. Язык и метаязык

1.1. Метод описания

1.1.1. Введение

1.1.2. Прагматика

1.1.3. Синтаксис строгого языка

1.1.4. Семантика

1.2. Общие метаправила

1.2.1. Метаправила для видов

1.2.2. Метаправила, связанные с фразами и приведением

1.2.3. Метаправила, связанные со средствами

1.3. Общие гиперправила

1.3.1. Синтаксис общих предикатов

1.3.2. Выполнимость предикатов

1.3.3. Синтаксис общих конструкций

2. Вычислитель и программа

2.1. Терминология

2.1.1. Объекты

2.1.2. Соотношения

2.1.3. Значения

2.1.4. Действия

2.1.5. Сокращения

2.2. Программа

2.2.1. Синтаксис

2.2.2. Семантика

3. Предложения

3.0.1. Синтаксис

3.0.2. Семантика

3.1. Замкнутые предложения

3.1.1. Синтаксис

3.2. Последовательные предложения

3.2.1. Синтаксис

3.2.2. Семантика

3.3. Совместные и параллельные предложения

3.3.1. Синтаксис

3.3.2. Семантика

3.4. Выбирающие предложения

3.4.1. Синтаксис

3.4.2. Семантика

3.5. Циклические предложения

3.5.1. Синтаксис

3.5.2. Семантика

4. Описания, описатели и индикаторы

4.1. Описания

4.1.1. Синтаксис

4.1.2. Семантика

4.2. Описания видов

4.2.1. Синтаксис

4.2.2. Семантика

4.3. Описания приоритетов

4.3.1. Синтаксис

4.3.2. Семантика

4.4. Описания идентификаторов

4.4.1. Синтаксис

4.4.2. Семантика

4.5. Описания операций

4.5.1. Синтаксис

4.5.2. Семантика

4.6. Описатели

4.6.1. Синтаксис

4.6.2. Семантика

4.7. Соотношения между видами

4.7.1. Синтаксис

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

4.8.1. Синтаксис

4.8.2. Семантика

5. Основы

5.1. Синтаксис

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

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

5.2.2. Отношения одноименности

5.2.3. Генераторы

5.2.4. Псевдоимена

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

5.3.1. Выборки

5.3.2. Вырезки

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

5.4.1. Тексты процедур

5.4.2. Формулы

5.4.3. Вызовы

5.4.4. Переходы

5.5. Основы, связанные со значениями любого вида

5.5.1. Ядра

5.5.2. Пропуски

6. Приведение

6.1. Приведенные

6.1.1. Синтаксис

6.2. Разыменование

6.2.1. Синтаксис

6.2.2. Семантика

6.3. Распроцедуривание

6.3.1. Синтаксис

6.3.2. Семантика

6.4. Объединение

6.4.1. Синтаксис

6.5. Обобщение

6.5.1. Синтаксис

6.5.2. Семантика

6.6. Векторизация

6.6.1. Синтаксис

6.6.2. Семантика

6.7. Опустошение

6.7.1. Синтаксис

6.7.2. Семантика

7. Виды и среды

7.1. Независимость свойств

7.1.1. Синтаксис

7.2. Идентификация в средах

7.2.1. Синтаксис

7.2.1. Семантика

7.3. Эквивалентность видов

7.3.1. Синтаксис

7.4. Правильность построения

7.4.1. Синтаксис

8. Изображения

8.0.1. Синтаксис

8.1. Изображения простого

8.1.1. Изображения целого

8.1.2. Изображения вещественного

8.1.3. Изображения логического

8.1.4. Изображения литерного

8.1.5. Изображение пустого значения

8.2. Изображения битового

8.2.1. Синтаксис

8.2.1. Семантика

8.3. Изображения строки

8.3.1. Синтаксис

8.3.1. Семантика

9. Знаки и символы

9.1. Знаки

9.1.1. Синтаксис

9.2. Примечания и прагматы

9.2.1 Синтаксис

9.3. Представления

9.4. Эталонный язык

9.4.1. Представления символов

9.4.2. Символы прочих обозначений

10. Стандартная языковая обстановка

10.1. Тексты программ

10.1.1. Синтаксис

10.1.2. Соответствие языковой обстановке

10.1.3. Способ описания стандартной языковой обстановки

10.2. Стандартное вступление

10.2.1. Запросы к обстановке

10.2.2. Стандартные виды

10.2.3. Стандартные обозначения операций и функций

10.2.4. Операции синхронизации

10.3. Описание обмена

10.3.1. Книги, каналы и файлы

10.3.2. Значения для обмена

10.3.3. Бесформатный обмен

10.3.4. Тексты формата

10.3.5. Форматный обмен

10.3.6. Двоичный обмен

10.4. Системное вступление и список задач

10.4.1. Системное вступление

10.4.2. Список системных задач

10.5. Собственные вступления и заключения

10.5.1. Собственные вступления

10.5.2. Собственные заключения

Приложение 1. Историческая справка

Приложение 2. Требования к машинописному представлению программы

Приложение 3. Указатель применяемых в стандарте понятий

Приложение 4. Список метаправил

Показать даты введения Admin

Страница 1

Mots', ii

ГОСУДАРСТВЕННЫЕ СТАНДАРТЫ СОЮЗА ССР

ЯЗЫК ПРОГРАММИРОВАНИЯ АЛГОЛ 68 И АЛГОЛ 6В РАСШИРЕННЫЙ

ГОСТ 27974-88, ГОСТ 27975-88

Издание официальное

2 V»

I

да

7 §

10

i о t*>

о.

г

а

ГОСУДАРСТВЕННЫЙ КОМИТЕТ СССР ПО СТАНДАРТАМ

Страница 2

ГОСУДАРСТВЕННЫЕ СТАНДАРТЫ СОЮЗА ССР

ЯЗЫК ПРОГРАММИРОВАНИЯ АЛГОЛ 68 И АЛГОЛ 68 РАСШИРЕННЫЙ

ГОСТ 27974-88. ГОСТ 27975-88

Издание официальное

Страница 3

© Издательство стандартов, 1989

I

t


Страница 4

•' 681.3.06:006.354    Груши    П85

‘СУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР I

ЯЗЫК ПРОГРАММИРОВАНИЯ АЛГОЛ 6Я    ГОСТ

27974 -88

Programming language А!.(Ю1. 68

ОКСТУ 4002

Дата и ведения 01.07.90

Настоящий стандарт распространяется на язык программирования Алгол 681 и его варианты и устанавливает требования:

к программе на языке программирования Алгол 68. представленной на машинном носителе или в комплекте программной документации;

к реализациям языка программирования Алгол 68 и его вариантов, используемым при создании или эксплуатации программных средам, в части выполнении программ на языке Алгол 68.

Стандарт не распространяется на варианты языка Алгол 68 и програм-4 ка языке Алгол 68. составленные в учебных или исследовательских це-°х.

Вариантом языка Алгол 68 является определенный конкретной реализацией язык, сохраняющий основные конструкции языка Алгол 68, в опи-тми которого имеется ссылка на настоящий стандарт и четко перечислятся отличия определяемого языка от языка, определенного настоящим • -пом.

хбовання к машинному представлению программы приведены в ожении 2. Указатель применяемых в стандарте понятий приведен в •ожении 3. Список метаправил приведен в приложении 4.

• Историческая справка о ялике Алгол 68 приведена в приложении 1.

Перепечатка воспрещена

1

Страница 5

CJ ГОСТ 27974-88    |

I. ЯЗЫК И МКТЛЯЗЫК

1.1.    Метод описания    90\

1.1.1.    Введение

a)    Алгол 68 является языком, в котором могут формулироваться 1 алгоритмы для каких-либо вычислителей, т. е. автоматов или людей. Он определяется настоящим стандартом в четыре С1адии: ..синтаксис" {Ь}. „семантика” fc), „представления” fdj и „стандартная языковая обстановка” {е}.

b)    Синтаксис есть механизм, посредством которого могут порождаться _ все конструкты данною языка. Этот механизм действует следующим ов^Р** Л

30 M

(П| Заданы множества ,jиперпрэвил” и „метаправил” {1.13.4,

1.1.3.3>. из которых могут выводиться „порождающие правила”. Вхо дяшие в эти правила „мстапонятия” и „гипергюнятия” представлены I    .

настоящем стандарте так, что каждое из них выгляди! как i рпмматич* ски правильная русская фраза, возможно с добавлением цифр и с лещ , ! альных знаков, в которой {изменяемые} слова стоят в требуем^ грамматической форме Однако определение синтаксиса строгого яз» ка использует ..приведенную форму" этих правил, для получения кот» рой необходимо каждое слово, изменяемое в роде, числе или гадез»    .)

заменить на его форму именительного падежа единственного числа!, если возможно, среднего рода -{.сохранив время и залог Причала#.    г

Полученное слово записывается малыми (большими) синтаксически*    f

знаками, если исходное слово записано малыми (большими) синпка- ( ческими знаками {, причем в последнем случае сохраняются цифрын специальные знаки, приписанные к этому слову}.

-С Напри мер, приведенной формой гиперпонятия „УПАКОВКА обр* основ сш)ьно выдающих МАССИВ 1 из ВИДА в СРЕДЕ” (3.3 l.d) бу® "^Т „УПАКОВКА образ основа сильно выдающее МАССИВI из ВИД вСТ*Г‘ ~ ДА”.}

(ii)    „Конструктом в сгрогом языке” является всякое .дерево порождения” {I.1.3.2.f) . порождаемое применением подмножества указных порождающих правил; это дерево порождения содержит стати-скую {. г. с. известную во ..время трансляции”,} информацию, относящуюся к данному конструкту; дерево составлено из иерархии наследных деревьев порождения, оканчивающихся „символами” на самом нижнем уровне: с каждым деревом порождения связана „среда” из „ свойств, описанных на предыдущих уровнях и передаваемых к средам

его наследников.    *

(iii)    „Программа в строгом языке” есть дерево порождения для понятия 'программа' -С2.2.1 .а}. Кроме того, она должна соответствовать „языковой обстановке” {10.1.2}.

c)    Семантика приписывает каждому конструкту {, т. е. каждому дере-

4

Страница 6

ГОС Т 27974-88 С.З

ву порождения.} „смысл” {2.1.4.1.а}, определяя *}>фек1 ею „исполнения" {2 1.4 1> (которым, однако. може> бык. .ле определено”). 'Jro происходи! следующим образом:

(i)    Устанавливаю! динамическое {, J е. во время раГюты программы,} дерево активных .лействий" {2 1.4}: н большинстве случаев действием будет исполнение какого-нибудь дерева порождения Т в некотором „окружении”, согласующемся со средой этою Т. причем оно может привести к исполнению некоторых наследников Т в подходящих вновь со здаваемых наследных окружениях.

(ii)    Смысл программы в строгом языке состоит в эффекте се исполнения в пусюм ..первичном окружении”

d)    Программа в строгом языке должна бьмь представлена в каком-нибудь „языке представлении" {93.а}. выбираемом реализатором В большинстве случаев им будет официальный „ладонный язык”.

(i)    Всякую программу в языке представления получают заменой всех символов кзкой-го программы в строгом языке определенными гипо-|рафекими знаками {9,3}

(ii)    Даже эталонный язык допускает значительную свободу для реализатора {9.4.а,Ь,с} Некоторую ограниченную форму ладонного языка, в которой эта свобода не использована, можно назвать „канонической формой" данного языка; предполагают, что она будет применяться для алгоритмов. нрс;и(азна>{енных к публикации.

(iii)    Смысл программы в я^ыке представления • это смысл той программы {в стротм языке}, из которой она получена.

e)    Любой алгориш выражасчся посредством собственно-нрограммы, которую вместе с описанной в настоящем стандарте стандартной языковой обстановкой следует рассматривать как вложенную в некоторый текст-про(раммы {10.1.1.а}. Смысл собственмо->!ро|раммы {, в строгом я тыке или языке представления.} - это смысл программы. ..подобной” этому

'Kcvy-npoipaMMu {IO.I.2.3}.

1.1.2. П/югмягико

По ражым местам настоящего стандарт рассеяны „прагматические” замечания, заключенные в фигурные скобки .. {"и.. }”. Они не входят в определение языка, а служат для того, чтобы помочь понять назначение данных определений и вытекающих из них следствий, а 1акже. чтобы помочь найти соответствующие разделы или правила.

{Некоторые из прагматических замечаний содержат примеры, написанные на эталонном языке. Используюшие-иидикаторы входят в зги примеры вне конгскста своих определяющих индикаторов. Если не оговорено про-гивное. 1акие вхождения идентифицируют определяюшие-индикаторм, входящие в стандартное- {, библиотечное-} или собсгвснное-встунление и в собственное-заключение (10.2, 10.3, 10.5) (например, см. 10.2.3.!2.а для пи. 10.5.1 .Ь для печ и 10 5.2.а для стоп). или же в следующий текст:

Страница 7

С.4 ГОСТ 27974-88

«ел i, j, к, m, п; всш а, b, х, у; лог р, q. переполнение; лите; форма! f; слог г; строк $; бит t; компл w, г, имя вещ хх, уу; об (цел. веш) uir; прои пуст задача 1, эадачз 2;

[I : п] eeuixl.yl; подв [1 : nj веща);

(1 : m. 1 : п) вещ х2; (1 : n, 1 : п) веш у2; f 1 : п] цел »1;* [I : т, 1 : п) цел i2; [1 : п) компл zl; прои х или у = имя всш: если печ <.5 го х иначе у все; npou ncos = (цел i) вещ: cos (2Х пиХ i/n),

прои nsin = (цел i) веш sin (2ХПИХ i/п);    -ття/'

проц финиш » пуст: на стоп;

вил книга = ci (строк текст, имя книга следующая);

книга проект; принсгон: Гренобль: сен пьерде шартрез: коотвейк: варшава: зандвоорт: амстеряам: тиррения норт бервик: Мюнхен: финиш.}

1.1.3. Синтаксис строгого языка 1.1.3.1. Протопоннтия.

a)    В определении синтаксиса строгого языка используют формальную грамматику, в которой применяют специальные синтаксические знаки. Эги знаки можно классифицировать следующим образом:

(i)    „малые синтаксические знаки", изображаемые в данном стандарте как

,Л". ,.б’\ „в”, „г”, ,л”, „е”. „ж”. ,.з". ..и". „й". „Г\ „к”, „л". „м”. .л”, ..о", .л". „р*\ ..с”, „т”, ..у”. „ф’\ .л”. „и". „ч”. „ш*\ .ju”. ,.ъ”. S\

l” ш" в*’    \ W. ■

, „1и а    • •• V » »J

(ii)    „большие синтаксические знаки”, изображаемые в данном стандарте как

„А”, „Б’\ .3”. .Д”\ .Д", „Е". „Ж”, „3", ..И". .Я". „К". „Л", Ж, „Н”, „О”. „П”. .Г'. „С”, „Т*\ „У”, ,.Ф", „X”, ,Д*\ „Ч". „Ш”, „Щ".    „Ы".

„Ь", „Э", „Ю". „Я”, „О”, „Г, „2", „3”, .,4”, „5”, „6". „7”.„8". „9".

!»».

(iii)    „прочие синтаксические знаки”, изображаемые в данном стандарте как .. . ” („точка"), „ ," („запятая”).,,: "(.двоеточие"),,,; " („точка с запятой"), "(„апостроф"),,,. ” („дефис") и „• и („звездочка")

b)    „Протопопятие" есть возможно пустая последовательность малых синтаксических знаков.

c)    „Понятие" есть {непустое} протопонятие, для которого можно вывести -С 1.1.3.2.а, l.I.3.4.d} порождающее правило.

d)    „Мстапонягие” есть {непустая} последовагельиость больших синтаксических знаков, для которой задано или получено {1.1.3.3.а} какое-нибудь метаправило.

e)    „Гиперпонятие" есть возможно пустая последовательность, каждый элемент которой является либо малым синтаксическим знаком, либо мета-понятием.

Страница 8

ГОСТ 27974-88 СS

{Таким образом, протопонягия (Ь) образуют подкласс класса гиперио-нятий. Гиперпонятия используют в метаправилах (J .1.3.3), в гинерправнлах (1.1.3.4), н качестве парапонятий (1.1.4.2), а также сами по себе, чтобы „обозначать" определенные классы протопонятий (1.1.4.1).}

{..Парапонятие” есть тперионятие, к которому применяют определенные специалм1ме соглашения и интерпретации, как разьяснено и 1.1.4.2.} П ..Символ” есть протопонятие, начинающееся с символ'. {Каждое парапонятие символ (9 1.1.h) обозначает конкретное вхождение такого протопонятия.}

g) Для тою, чтобы выделить различные использования в тексте настоящего стандарта определенных выше терминов, приняты следующие соглашения:

(i) Внутри порождающих правил, метаправил и гиперправил никакие выделительные знаки { — кавычки, апострофы или дефисы -} не используют.

(и) Метанонягая и гиперпонятия, рассматриваемые сами по себе, {т.с. не в качестве обозначений протопонятий,} заключают в кавычки.

(iii)    Парапонятия не заключают ни во чго {. но, проставляют дефисы там. iae иначе были бы пробелы}.

(iv)    Все остальные гиперпонятия, {включая протопонятия.} не рас-

»    смотренные выше, заключают в апострофы {. чтобы указать, что они

к    обозначают некоторое протоноиятие, как зто определяется в 1 1.4.1.а}.

(v)    Особенности типографскою набора, такие, как пробел, перенос, переход на новую строчку или страницу, во внимание не принимают (см., однако, 9.4 d).

{Примеры:

(i) ЛОКАЛИЗУЮЩИЙ :: локальный; глобальный: первичный - является метаправилом;

(И) „ЧИСЛОВОЕ” является мегапонятием и не обозначает ничего, кроме самого себя,

(iii)    идентмфикатор-выдаюший-имя-ЧИСЛОВОГО. не заключаемый в апострофы, но снабженный дефисами, является парапонятием, обозначающим некоторый конструкт (1.1.4.2.а);

(iv)    'рациональное1 является как гиперпонятием, так и протопонятием; рассматриваемое как гиперпонятие оно обозначает самого себя в качестве протопонятия;

(v)    'имя вещественного' значит го же, чго и 'нмявешесгвекного' }

*    Г. 1.3.2. Порождающие правила и деревья порождения.

a)    „Порождающие правила” {Ь}, которые можно вывести из данных 'tteCfc „гиперправил" {1.1.3.4}. составляют {выводимые} порождающие правила настоящею языка; кроме тою. некоторые правила неформально указаны в 8.1.4.1.d и 9.2.I d.

b)    Всякое „порождающее правило" состоит из следующих элементов, расположенных в указанном порядке:

7

Страница 9

С.6 ГОСТ 27974-88

возможной звездочки; непустого протопонятия N; двоеточия;

непустой последовательности „альтерната'*, разделенных точками с запятой:

ТОМКИ.

Такое правило называют порождающим правилом .для’* {этого понятия (I 1.3 I.с)>N

{Возможная звездочка, если она есть, показывает, что эго понятие не используется в upyi их порождающих правилах, а заведено только для того, чтобы облегчить изложение в семантике. Звездочка показывает также, что данное понятие может использоваться как ..абстракция" (1.|.4.2.Ь) одной из своих альтернатив.}

c)    Любая „альтернатива" есть нспуаая последовательность ..звеньев'’, разделенных запятыми.

d)    Всякое „звено” есть либо

(i) понятие { . и тогда ею можно назвать продуктивным или нетерминальным)-. либо

(И) символ {. который терминален}, либо

(iii)    пусто, либо

(iv)    другое протопонятие {. для которого нельзя вывести никакого порождающего правила}, называемое в лом случае ..тупиком**. {Например, звено 'изображение имени вещественного' (. выводимое

из гиперправила 8.0.1 а.) является тупиком.}

{Примеры:

b)    порядок: запись десятичного основания,

степень десяти. (8.l.2.l.g) • запись десятичного основания

символ на десять в степени; символ буква е либо символ буква е лат (8.1.2.lh)

c)    запись десятичного основания, степень десяти •

символ на десять в степени •

символ буква е либо символ буква е лат

d)    запись десятичною основания •

степень десяти •

символ на десять в степени •

символ буква с либо символ буква е лат}

e)    „Конструктом в строгом языке'* является любое .лерсво порождения” { f}. которое можно „породить” из какого-нибудь порождающего правила данного языка.

f)    .Дерево порождения’* Т для понятия N. называемого „прообразом” этою Т, „порождается” следующим образом:

пусть Р есть {выводимое} порождающее правило для N;

8

Страница 10

ГОСТ 27974-88 С.7

берется копия N;

к этой копии присоединяется послеаовагсльносгъ деревьев порождения, называемых „прямыми наследниками" дерева Т, порожденных дня каждого непустого звена какой-то {одной} альтернативы А правила Р: порядок {деревьев в} этой последовательности совпадает с порядком указанных звеньев в А ;

взятая копия прообраза вместе с присоединенными прямыми наследниками составляет дерево порождения Т.

.Дерево порождения” дли символа состоит из копии этого символа {, г.с. оно состоит из какого-то символа}.

„Терминальным порождением'4 дерева порождения Т является последовательность, составленная из терминальных порождений прямых наследников этого Т. взятых в их порядке.

„Терминальным порождением" дерева порождения, состоящего только из одного символа, является этот символ.

{Пример:

порядок

запись десятичного основания'


степень лес пи


возможные плюс или минус'


шпуралыюс

число*


последовательность ДССЯ1ИЧИМЧ цифр1

ПЛЮС или минус

а?ся?ичн&м

цифра’


последовательность песятмл цифр'

. I ,

ассятичыя иифра


'цифре нуль'


’циф?» два'

символ цифра Нульг символ

символ б> kiu е*

символ

плюс'

цифра дм* }


9

Страница 11

С.8 ГОСГ 27974-88

{Терминальным порождением этого дерева будет последовательность символов на его концах. Пе представление в эталонном языке выглядело бы как е+02.}

„Терминальным порождением" понятия является терминальное порождение одного из деревьев порождения дли этого понятия {.следовательно, существует мною других терминальных порождений порядка', кроме показанного выше}.

{Синтаксис Строгого языка был выбран так, чтобы данная последовательность символов, являющаяся герминальным порождением какого-то понятия, была таковой в силу существования либо единственного дерева порождения, либо некоторого множества деревьев порождения, отличающихся друг от друта лишь настолько, чтобы исходы их исполнения были одинаковыми (например, деревья порождения, выводимые из правил 3.2.1.е (уравнивание). 1.3.1.d.e (предикаты) и6.7.1.а.Ь (выбор способа выписывания вида для приводимого, которое должно опустошаться); (см. также 2.2.2.3).

Поэтому на нрзктикс. в настоящем стандарте и в других случаях, вместо деревьев порождения берут терминальные порождения (или их представления) На самом же деле исполнение программ определяется в семантике настоящего стандарта исходя из деревьев порождения; семантика посвящена объяснению vMbiaia конструктов, прообразом которых служит понятие 'программа' }

g)    Дерево порождения Р является „наследником” дерева порождения О. если оно прямой наследник {!'} либо самого Q, либо некоторого его наследника. Говорят, что Q „содержит” своих наследников и что эти наследники „меньше" Q.

{Например, дерево порождения

'возможные плюс или минус'

I

плюс или минус 'символ плюс'

входит в качестве наследника в (. и меньше чем.) дерево порождения для 'порядка', (содержащее его и) показанное выше.}

h)    Дерево порождения „видимо" („невидимо"). если его герминальное порождение непусто (пусто).

i)    Наследник {g} U дерева порождения Т расположен ..прежде" („после”) другого наследника V того же Т. если терминальное порождение {f} этого U расположено прежде (после) терминального порождения V в терминальном порождении Т. Это {частичное} упорядочение наследников Т называется .дексгуальным порядком”. {В приведенном примере дерева порождения для понятия ’порядок' (f) дерево порождения, прообраз которого есть 'плюс или минус', расположено прежде дерева, прообраз которого есть ‘цифра два'.

j) Наследник Л дерева порождения „следует” („предшествует”) другому наследнику В » некотором текстуальном порядке, если А расположен

10

Страница 12

ГОСТ 27974-88 С.9

после (прежде) В в этом текстуальном порядке и не существует видимого {h} наследника С, расположенного между А и В. {Тем самым подразумевается ..непосредственное"следование (предшествование).}

к) Дерево порождения А „подобно*1 дереву порождения В. если терминальное порождение {f} А совпадает с 1ерминальным порождением В.

1.1.3.3. Метаправила и простая подегановка.

{Метаправила образуют в настоящем языке множество контексто-свободных грамматик, определяющих „метаязык" >

a)    „Метаправилами” {Ь} данного языка служат метаправила {в приведенной форме>, заданные в разделах настоящею стандарта, заюловки которых начинаются со слов „Синтаксис", „МетасиН1аксис” или „Метаправила", а также метаправила, получаемые следующим образом:

для каждого заданного метаправила, oiносящегося к какому-нибудь метапонятию М, создаются дополнительные правила, каждое из которых состоит из некоторой копии этого М и непосредственно следующего за ней одного из больших синтаксических знаков „О", „I", „2”, ,,3’\ ..4”. „5", ..6”. „7", ..8” или „9”. за которыми следуют два двоеточия, другая копия метапонятяя М и точка. {Таким образом, следует добавить метаправило „ВИД1 ВИЛ ”.}

b)    Всякое ..метаправило" состоит из следующих элементов, расположенных в указанном порядке:

возможной звездочки:

непустой последовательности М больших синтаксических знаков: двух двоеточий:

непустой последовательности гиперпонятий {1.1.3.1.с}, разделенных точками с запятой; точки.

Такое метаправило называют метаправилом „дли" {этого ме1апоня1ия (1.1.3.Id >М.

{Зведзочка. если она есть, показывает, что это метапонятие не используется в других мега- или гиперправнлах, а заведено только для того, чтобы облегчить изложение в семантике.}

{Примеры:

ЧИСЛОВОЕ :: ?РАЗМИРНОЕ целое;

7РАЗМЕРНОЕ вешественное. (1.2.1 .С) •

■’РАЗМЕРНОЕ :: длинное ?ДЛИННОЕ; короткое ^КОРОТКОЕ; ПУСТО. (1.2.1. D)}

c)    „Терминальное метапорожденис" ме1апонятия М еегь любое прото-понятие. получаемое „простой подстановкой" {d> из одною из 1Иперпоня-тий {, стоящих в правой части} метаправила для М.

d)    Протопонятие Р получается „простой подстановкой" из 1Иперлоня-гия Н, если копит {приведенной формы} этого Н можно преобразовать в некоторую копию {приведенной формы} Р заменой каждого мстапонятия М а указанной копии {приведенной формы} Н каким-нибудь терминальным метано рождением М

11

Страница 13

С.10 ГОСТ 27974-88

{Например, двумя возможными терминальными метапорожлемиями (с) „ЧИСЛОВОГО” будут 'целое' и 'длинное длинное вещественное'. Эю объясняемся тем. чю из гиперпонятий '7РАЗМЕРНОЕ целое' и ^РАЗМЕРНОЕ вещественное' (типсрпонятий метаправила пая {приведенной формы} ..ЧИСЛОВОГО") можно при помощи простой подстановки (d) вывести 'целое' и 'длинное длинное вещественное'; это в свою очередь возможно потому. что ' ' (пустое протононятие) и ’длинное длинное’ являются терминальными метапорождениями „?РАЗМ ЕРНОГО” >

{Используемые в настоящем стандарте метапонятия выбраны так. •побы конкатенация одного или нескольких из них не приводила к гон же последовательности больших синтаксических знаков, чю и при другой такой конкатенации. Этим устраняется источник возможной неоднозначности.

Хотя рекурсивная природа некоторых метаправил позволяет порождать терминальные металорождения произвольной длины, длина терминальных мета по рождений, вовлекаемых с необходимостью в порождение любой данной программы, конечна.>

1.1.3.4. Гипсрлравкма и согласованная подстановка.

a)    Гиперправилами {Ь> настоящего языка являются гиперп равила {в приведенной форме}, заданные в разделах стандарта, заголовки которых начинаются со слова „Синтаксис".

b)    Всякое „гиперправило" состоит из следующих элементов, расположенных в указанном порядке;

возможной звездочки;

непустого 1Иперпонятня Н;

двоеточия;

непустой последовательности „1ипсралыернатив", разделенных точками с запятой;

точки

Такое правило называют гиперправилом .для" {этою гиперпоиятии

(1 1.3.1.е)} Н

c)    Всякая „1инералыериатива"есгь непустая последовательность гиперпонятий. разделенных занятыми.

{Примеры:

b)    последовательность ПОНЯТИЙ :

ПОНЯТИЕ; ПОНЯТИЕ,последовательность ПОНЯТИЙ. (1.1.3.Ь)

c)    ПОНЯ1ИЕ, последовательность ПОНЯТИИ}

d)    Порождающее правило PR {1 l.i.2.b} ныводигся из некоторого ти-периравипа HR. если копию HR можно преобразовать в копию {приведенной формы} этого PR . применяя „согласованную подстановку" {с> к множеству всех {приведенных форм} гиперпонятий указанной копии HR.

с) Множество {одною или большего числа} проюпонятий РР получают, применяя „согласованную подстановку" к соответствующему множеству гиперпоиятии ИМ. если копию НИ можно преобразовать в копию {при веденной у. >мы> Г!-1 мри    ..сдукмшо тамг

Страница 14

ГОСТ 27974-88 C.l!

War: Если копия {приведенной формы НН> содержит одно или более метапонятий, то для некоторого терминального'метапорождения Т одного из этих метапонятий М каждое вхождение М в данную копию изменяется копией этого Т и данный шаг повторяется.

{См. 1.1.4.1.а по поводу другого применения согласованной подстановки.}

{Применяя указанный процесс выведения к данным выше (с) гиперправилам, можно создать правило

последовательность десятичных цифр: десятичная цифра; десятичная цифра,

последовательность десятчных цифр, которое поэтому есть порождающее правило настоящего языка. Отметим, что

последовательность десятичных цифр: десятичная цифра; десятичная цифра, последовательность букв б не является порождающим правилом данного языка, поскольку замена ме-тапонятия „ПОНЯТИЕ:" одним из его терминальных мс1зжэрождений должна проводиться согласованно повсюду.}

{Так как некоторые мета понятия имеют бесконечное число терминальных мстапорождсний, число порождающих правил, которые можно вывести, бесконечно. Однако настоящий язык построен так, что для порождения любой программы конечной длины потребуется только конечное число таких порождающих правил.}

{f) Правила в Синтаксисе снабжены „перекрестными ссылками", понимаемыми следующим образом

Каждое гиперпонятие Н некоторой гиперальтернативм гиперправила А сопровождают ссылками на тс гнперирзвнла В, откуда выводятся порождающие правила для понятий, которые можно подаавить в это Н. Точно гак же гиперпонятия каждого гииерправила В сопровождают обратными ссылками на А. Однако, если II следует заменить каким-нибудь символом, его сопровождаю! ссылкой на его представление в п. 9.4.1. Кроме того, вместо ссылок на многие гиперправила в некоторых случаях удобнее сделать ссылку на одно метаправило, и тогда опушенные ссылки можно нзйж в этом метаправиле.

Каждая такая ссылка служит в принципе номером пункта, за коюрым идет буква, указывающая строчку С нужным правилом или представлением. При этом используют следующие соглашения:

(i) ссылки, номер пункта в которых совпадает с номером пункт, где они всгрсчаются, дают первыми, и этот номер пункта опускают; например, „8.2.1.а” появляется в п. 8.2.1 как „а”;

(И) опускаются все точки и последняя 1. а 10 эзменяют на А, например. ..8.2.1.а” входи! во все остальные пунктм как ,.8-а”. а „103.4 l.l.i" входит в виде A34J Г,

13

Страница 15

C.I2 ГОСТ 27974-88

(iii)    опускаю! номер пункта, если он тот же. что и у предыдущей ссылки; нанрнмер. ..82a.82b.82c"’ входят как ..82а, Ь, с";

(iv)    посредством отмечают наличие тупика, выводимого из данного гиперпонятия; например, в 8.0.1 з после ..изображение ЗНАЧЬНИЯ". поскольку „ЗНАЧЕНИЕ” можно заменить, например, на 'имя вещественного'. а 'изображение имени вещественного' не является понятием} 1.1.4. Семантика

Семантика определяет „смысл" программ £2 2.1 а} п строгом языке с помощью предложений {некоторого формализованного естественного языка }. устанавливающих, какие .лействия" должны проводить во время ..исполнения" {2.1.4.1} этих программ. „Смысл" программы в языке представления - это смысл программы н строгом языке, которую она представляет <9.3}.

1.1.4.1. Гиперпонятия,обозначение и заложение.

{Гиперпонятия, заключенные в апострофы, используют, чтобы "обозначать" протопоняшя. принадлежащие к определенным классам; например. 'ЛОКАЛИЗУЮЩИЙ' обозначает любое из Протолоиятий локальный', 'первичный' и 'глобальный'.}

a)    Находящиеся в тексте данного стандарта гиперпонятия. кроме случаев, когда они входят в типерирзвнла {1.1.3.4.Ъ} или метаправила ■О.и.З.Ь}, „обозначают" любые протопоиятия, которые можно получить, применяя к ним согласованную подстановку {1.1.3.4.е}; согласованную подстановку применяют ко всем гиперпонятиям, содержащимся в каждом законченном отрынке текста (это или отрывок, выделяемый буквой со скобкой, если такой есть, или же нумерованный раздел целиком).

{Так, например. 'ОБОЗНАЧЕНИЕ для ПРИЗНАКА' есть гиперпонятие. обозначающее такие протопонятия, как буква и лат для целого', 'буква х для вещественного' к т.н. Если в каком-нибудь контексте оно фактически обозначает 'букву и лат для целого', то все вхождения метапонятия ..ПРИЗНАК" в текущий отрывок должны обозначать в этом контексте 'целое', а все вхождения „ОБОЗНАЧЕНИЯ" должны обозначать 'букву и лаг'. Тогда, например, из отрывка 4.8.2.а можно вывести, что когда „сцена приписывается некоторому опрсделяющему-букву-и-лат-индикатору-вы-даюшему-целое". именно ‘буква и лат для целого' „получает доступ к V внутри соответствующего участка".}

Иногда, когда контекст требует этого явно, согласованная подстановка распространяется менее чем на законченный отрывок текста. {Например, во введении к п.2.1.1.2 есть несколько вхождений „'ЗНАЧЕНИЕ’”, причем два из них служат для того, чтобы обозначать конкретные (и разные) протопоиятия, выписанные полностью, а другие, очевидно, используют, чтобы обозначать различные элементы из класса терминальных мстапорождений некоторого „ЗНАЧЕНИЯ” }

b)    Если протопоиятис (гиперпонятие) Р составлено конкатенацией про-гопонятий (гиперпонятий) А. В и С с возможно пустыми А и С. то Р „содержит” В ка месте, определяемом в Р длиной А. Так, например, 'абвгдевгжз' содержит 'вг' на третьем и седьмом местах.}

И

Страница 16

ГОСТ 27974-88 C.U

с) Протоионятие Р2, будучи протопонятием. обозначаемым гиперпоня-1исм Н2, „заложено" и протопопягие PI. если Р2 или какой-нибудь его эквивалент {2.1.1.2.а} содержится {Ь} на некотором месте в 1М. но не содержится ни на каком месте в любом другом -Спромежуточном} иротопо-иягии РЗ, также содержащемся в Р1 и таком, что Н2 может обозначать и эго РЗ.

{Так. например. 'ВИД*, заложенный в 'замкнутое предложение выдающее имя вещественного' есть 'имя вещественного', з не 'вещественное'; кроме того, в вил (2.1.1.2.Ь). специфицируемый описателем ст (веш а. ст(лог Ь, лит с) d). заложены только два ’ПОЛЯ'.}

1.1.4.2. Парапонятия.

{„Парапонятия" введены в данном стандарте, чюбы облегчить рассмотрение конструктов с определенными прообразами. Паражжятие это правильная фраза (русского языка), обозначающая конструкты (1.1.3.2.е); смысл парапонятия не обязательно тот. который можно найти в словаре, его можно вывести из приведенных ниже правил.}

a)    ..Парапонятие” Р есть -Сне заключенное и апострофы} гиперпонятие, используемое в тексгс данного стандарта, чтобы „обозначать" любой конструкт. прообраз О которого удовлетворяет следующему условию;

рассматриваемое как гипернонятис -С. те. как если бы оно было заключено в апострофы,} Р обозначает {1.1.4.1.а} некоторую „абстракцию” {Ь} прообраза О.

{Например, парапонятие „натуральное-число” могло бы обозначать конструкт, имеющий представление 02. поскольку если бы оно было в апострофах, то обозначало бы абстракцию понятия ’натуральное число', являющегося прообразом данного конструкта. Однако то же представление можно было бы описать и как последовательность'десятичных-цифри тогда оно было бы прямым наследником этого нагурального-числа.}

{Чтобы было легче выделять парапонягия среди других гиперпонятий, они не заключены в апострофы и снабжены дефисами там. где иначе были бы пробелы.}

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

Малый синтаксический знак в начале парапоишин часто {.например, в начале предложения.}заменен {.чтобы улучшить вид reKcia.} соответствующим большим синтаксическим знаком без изменения смысла этого парапонятия {; например. „Идентификатор’’ имеет тот же смысл, что и „идентификатор"}.

b)    Прогопонятнс Р2 есть „абстракция" протопонягия Р1,если

(i) Р2 есть абстракция понятия, порождающее правило для которого начинается со звездочки, а Р1 - одна из альтернатив этого правила.

15

Страница 17

С. 14 ГОСТ 27974-88

{например, 'ограничение' (5.3.2.1 Ji) сеть абстракция любого из понятий, обозначаемых гиперпонятиями, 'отрезок в СРЕДЕ', ‘индекс в СРЕДЕ’, 'возможная сдвинутая нижняя граница в СРЕДЕ' , или

(И) в Р1 заложено протолонягис РЗ, обозначаемое одним из „опускаемых гиперпонятий", перечисленных ниже в п. с), а Р2 - абстракция протопонятия, состоящего из Р1 без этого заложенного РЗ

{например, 'стзрт выбирающего по логическому’ есть абстракция понятий краткий старт выбирающего по логическому' и 'выделенный старт выбирающего по логическому’ (с опушенным 'ОФОРМЛЕННОЕ'из 9.1.1,а) >. или (iii> Р2 эквивалентно {2.1 .).2.а> Р1

{например, 'символ выделенное начало' есть абстракция прогопо-нятия символ выделенное начало’>.

{Чтобы привести пример, включающий все три правила, заметим, что 'определяющий индикатор выдающий объединение целого вещественного воедино' есть абстракция некоторого определяющего букву а идентификатора в СРЕДЕ выдающего объединение вещественного целого воедино’ (4.8.1.а). 'Краткий старт выбирающего по объединению целого вещественного воедино' не является абстракцией понятия 'краткий crapi выбирающего по объединению целого вещественного логического воедино', потому чю ’ло1ического'. которое, очевидно, опушего, не есть ’ЗНАЧЕНИЕ’, заложенное в это пои* 1ие >

c)    Упомянутые выше в разд. Ь) „опускаемые гиперпонятия” следующие:

„ОФОРМЛЕННОЕ”• „НОМЕР’* • „ЛОКАЛИЗУЮЩИЙ" • ..ПРИМЕНЯЮ-ИИЙ" • „ЛЮБОЙ” • ..ПРИВОДИМО" • „ЗНАЧЕНИЕ- • .для ЗНАЧЕНИЯ” • „выдающее ИМЯ ПРОВИДА” • .для метки” • „для процедуры” • „вида ПРОВИД" • „в СРЕДЕ" • „ШАРЫ4 • „с ‘.’ОПИСАНИЯМИ '•МЕТКАМИ” • „через 70ПИСАНИЯ 7МЕТКИ” • „определяющее СЛОЙ" • „ОБОЗНАЧЕНИЕ” • „как ИМЯ ПРОВИДА”.

{Какое из нескольких возможных понятий или символов служит прообразом конструкта, обозначаемого данным парапонятием, выясняют из контекста, в котором эго иарапонятие встречают. Например, когда говорится о формальном-оииспеле какого-то описания-тождества, его прообразом будет некоторое понятие, обозначаемое гиперпонятием 'формальный описатель имени вещественного в СРЕДЬ', если терминальное порождение (1.1.3.2.f) этого описания-тождества есть имя вещ хл JV)к веш.)-

{Так как всякое парапонятие обозначает некоторый конструкт, то все определенные для конструктов технические термины можно без дополнительной формализации применять и к парапонятиям.}

d)    Если два парапонятия Р и Q обозначают два конструкта S и Т соответственно, то Р называют „составляющим" О, если S - наследник Т и не! такого {Промежуточного конструктз} U, что

(i) S - наследник U,

16

Страница 18

ГОСТ 27974 -&8 С. 15

(ii)    U наследник Т и

(iii)    Р или Q может {в равной мере} обозначать U.

{Так например, a (S1)    -    это    составляющий    операнд    формулы

аХ (b+2t (i + j)) (T),ab (S2) - нет. поскольку это наследник промежуточной формулы Ъ + 21 (i + j) (U), которая сама есть наследник Т Аналогично (Ь + 21 (i + j)) сосгавляютсс замкнутос-предложение формулы Т, а зам-кмутоепредложение (i+j) - нет, поскольку это наследник промужеточио-го замкнутого-предложения. Однако (i + j) - составляющее замкнутое* предпожение-выдающее-целое формулы Т, так как указанное промежуточное замкиутое-предложение фактически является замкну ты м-предпоже-ниеивыдаюшим-веществсннос.

формула ах (Ъ + 21 0 + j))

операнд (b + 2t (I + J))


операнд

а


замкмугое-преаяоженис (-иьшдюикс-всшсствсннос)

(Ы-21 (i + j»

формула Ь+ 21 (i + j)

операнд

операнд

2: (i + j)

Ь

формула

операнд

операнд

<«*j)

2

замки утос-прсдложеяие (-выдаюихс-иелое) (i+j) >

Страница 19

С. 16 ГОСТ 27974 S8

1.1.4.3. Неопределенности.

a)    Если что-то оставлено „не определенным” или о чем-то сказано, что оно „не определено’*, то это означаем. что оно не определено лишь настоящим стандартом и для ею определении надо принять в расчет какую-нибудь чнформанию. находящуюся вне этого стандарта.

{Необходимо отличать выдачу неопределенного значения (, после чею исполнение продолжается с возможно непредсказуемыми результатами.) и полной неопределенноети дальнейшего исполнения Действия, которые следует предпринять в последнем случае, оаавляются на усмотрение реализатора. Это может быть одна из форм продолжения (. не обязательно оликаковая в разных реализациях.) или некоторая форма прерывания (2.1.4.3Ю. осуществляемая какой-нибудь проверкой во время p;iGoiw 1рограммы }

b)    Нели „требуется”, чтобы какое-ю условие удовлетворялось при некотором исполнении, то дальнейшее исполнение не определено, если это условие не удовлетворяется.

c)    „Осмысленная" программа эго программа {2.2 I .а>. исполнение которой определено настоящим стандартом

1.2. Обшие метаправила 1.2.1. Метаправила для видов

A)    ВИД :: ПРОСТОЕ; СОСТАВНОЕ; ИМЯ ВИДА; ПРОЦЕДУРА; ПРЕДСТАВИТЕЛЬ; ЦИ определение ВИДА; использование ЦИ.

B)    ПРОСТОЕ ЧИСЛОВОЕ; логическое; литерное

:> ЧИСЛОВОЕ :: ?РАЗМЕРН0Е целое; ?РДЗМЕРНОЕ вещественное.

0)    ^РАЗМЕРНОЕ :: длинное '.’ДЛИННОЕ; короткое’КОРОТКОЕ. ПУСТО, ■i) «ДЛИННОЕ::длинное7ДЛИНН0Е; ПУСТО.

7) '.'КОРОТКОЕ :: короткое '.‘КОРОТКОЕ; ПУСТО.

;> ПУСТО:;.

1)    СОСТАВНОЕ :: структура содержащая ’ПОЛЯ в себе; ’ПОДВИЖНЫЙ МАССИВ из ВИДА.

) ИЮЛЯ :: ПОЛЕ; !ПОЛЯ ПОЛЕ.

I) ПОЛЕ :: СЛОВО {942AJ для выборки ВИДА.

<) ’’ПОДВИЖНОЕ :: подвижное; ПУСТО.

■,) МАССИВ :: вектор; МАССИВ векторов, vl) ИМЯ :: имя: временное имя.

V) ПРОЦЕДУРА :: процедура 711 АРАМ ЕТРИЗОВАННАЯ вырабатывающая ЗНАЧЕНИЕ.

О) ’ПАРАМЕТРИЗОВАННАЯ ;: с! ПАРАМЕТРАМИ, ПУСТО.

>) МАРАМЕТРЫ :: ПАРАМЕТР; !ПАРАМЕТРЫ ПАРАМЕТР.

Q) ПАРАМЕТР :: параметр вида ВИД.

?) ЗНАЧЕНИЕ :: ВИД; пустое значение.

*) ПРЕДСТАВИТЕЛЬ :: объединение ЮБЫЧНЫХ воедино.

I 'ОБЫЧНЫЕ::ОБЫЧНОЕ; ЮБЫЧНЫЕ ОБЫЧНОЕ, d) ОБЫЧНОЕ :: ПРОСТОЕ; СОСТАВНОЕ; имя ВИДА; ПРОЦЕДУРА; пустое значение.

Страница 20

ГОСТ 27974-88 С.17

V) ЦИ::ии НОМЕР.

W) НОМЕР ;• I; НОМЕР.

1.2.2.    Mcianpaeu-ia, связанные с фразами и приведением

Л» ЗАКРЫТОЕ :: замкнутое; совместное: параллельное: ВЫБИРАЮЩЕЕ <34Д>* циклическое

B)    ДЕЙСТВУЮЩЕЕ :: и СРЕДЕ ПРИВОДИМО выдающее ЗНАЧЕНИЕ

C)    ПРИВОДИМО : сильно: крепко; раскрыто; слабо; мягко.

1.2.3.    Метаправила, связанные со средами

A)    СРЕДА :: СЛОЙ; СРЕДА с СЛОЕМ.

B)    СЛОЙ : новые '.'ОПИСАНИЯ 'МЕТКИ

C)    ''ОПИСАНИЯ ! ОПИСАНИЯ: ПУСТО.

D)    'ОПИСАНИЯ :: ОПИСАНИЕ. ЮНИСАНИЯ ОПИСАНИЕ

E)    ОПИСАНИЕ :: СЛОВО {942А} для ВИДА:    ИНФИКС {942F} для

приоритета ПРИОРИТЕТ: ИНДИКАНТ -C942D} для ЗНАЧЕНИЯ НО-МЕР, ИНФИКС {942F} для ДВУМЕСТНОЙ: ПРЕФИКС {942К} для ОДНОМЕСТНОЙ.

F)    ПРИОРИТЕТ :. I. II; III: III 1: HI II: III 111: III HI I: III III II: III III III

С) ОДНОМЕСТНАЯ :: процедура с ПАРАМЕТРОМ иырабатмнаюшаи ЗНАЧЕНИЕ

H)    ДВУМЕСТНАЯ :: процедура с ПАРАМЕТРОМ ПАРАМЕТРОМ: вырабатывающая ЗНАЧЕНИЕ

I)    •’МЕТКИ :: ’МЕТКИ, ПУСТО

J) !МЕТКИ •: МЕТКА, !МЕТКИ МЕТКА.

К) МЕТКА СЛОВО <942А> для метки.

1.3.    Общие I и п с р и р а в и л а

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

A)    ПОНЯТИЕ:: ЛИТЕРА; ПОНЯТИЕ ЛИТЕРА.

B)    ЛИТЕРА :: а; б: в; г; д; е; ж; э; и; й; к; л; м; н; о; п; р; с: т; у; ф; х; и; ч; ш; щ; ъ; ы; ь; >; ю; я; |.

C)    ’ПОНЯТИЕ :: ПОНЯТИЕ. ПУСТО

D)    УТВЕРЖДЕНИЕ :: ПОНЯТИЕ; (7ПОНЯТИЕ) ''ПОНЯТИЕ2; УТВЕРЖДЕНИЕ (''ПОНЯТИЕ I) ШОНЯТИЕ2

E)    ЕСЛИ :: если; если неверно что.

‘ а) если истина : ПУСТО

b)    если неверно что ложь . ПУСТО.

c)    если УТВЕРЖДЕНИЕ! и УТВЕРЖДЕНИЕ2: если УТВЕРЖДЕНИЕ!.если УТВЕРЖДЕНИЕ2.

19

Страница 21

С. 18 ГОСТ 27974-88

d) если УТВЕРЖДЕНИЕ! или УТВЕРЖДЕНИЕ2: если УТВЕРЖДЕНИЕ;

если УТВЕРЖДЕНИЕ2. с) сслк неверно что УТВЕРЖДЕНИЕ I н УТВЕРЖДЕНИЕ2: если неверно что УТВЕРЖДЕНИЕМ если неверно что УТВЕРЖДЕНИЕ2.

Г) если неверно что УТВЕРЖДЕНИЕ! или УТВЕРЖДЕНИЕ2: если неверно что УТВЕРЖДЕНИЕМ если неверно что УТВЕРЖДЕНИЕ2.

g)    ЕСЛИ (7П0НЯТИЕ1) есть (7ПОНЯТИЕ2) :

ЕСЛИ (■’ПОНЯТИЕ!) начинается с (7ПОНЯТИЯ2) {h, i,j> и (?П0НЯТИЕ2) начинается с (?ПОНЯТИЯ!) -Ch. i.j>

h)    ЕСЛИ (ПУСТО) начинается с (ПОНЯТИЯ) {g,j> .

ЕСЛИ ложь {Ь, •}.

О ЕСЛИ (7ПОНЯТИЕ) начинайся с (ПУСТО) {g. j}:

ЕСЛИ истина {а. -}. j) ЕСЛИ (ЛИТЕРА! ?ПОНЯТИЕ!) начинается с (ЛИТЕРЫ2 ’ПОНЯТИЯ 2) {g, j, m>:

ЕСЛИ (ЛИТЕРА 1) совпадаете (ЛИТЕРОЙ2) в (абвгдежзийклмнопроуфкцчшшьыъзюя!) {k, I. ■> и (ПОНЯТИИ) начинается с (ПОНЯТИЯ2) {h, i.j>. к) если (ЛИТЕРА) совпадает с (ЛИТЕРОЙ) в (ПОНЯТИИ) -Cj>: если истина {а}

1) если неверно что (ЛИТЕРА!) совпадает с (ЛИТЕРОЙ2) в (ПОНЯТИИ) {j>.

если (ПОНЯТИЕ) содержит (ЛИТЕРУ 1 ?ПОНЯТИЕ ЛИТЕРУ2) {т> или (ПОНЯТИЕ) содержит (ЛИТЕРУ2 ?110НЯТИЕ ЛИТЕРУ!) {т}. т) ЕСЛИ (ЛИТЕРА ’ПОНЯТИЕ) содержит (ПОНЯТИЕ) Urn}

ЕСЛИ (ЛИТЕРА ?ПОНЯТИЕ) начинается с (ПОНЯТИЯ) {j} или (^ПОНЯТИЕ) содержит (ПОНЯТИЕ) {пт, п}. п) ЕСЛИ (ПУСТО) содержит (ПОНЯТИЕ) {тл>:

ЕСЛИ ложь {Ь.-}.

{Малые синтаксические знаки ..("и.,)" используют, чтобы простым способом обеспечить однозначное применение зтих предикатов.}

1.3,2- Выполнимость предикатов

Всякий „предикат" есть протопонятие, начинающееся с 'если' или если неверно что' {объединяемых в 'ЕСЛИ'}. Для каждого предиката Р либо можно породить одно или несколько деревьев порождения {1.1.3.2.f} {. каждое из которых невидимо.} и тогда Р „выполняется”, либо нельзя породить никакою дерева порождения {, поскольку каждая попытка породить какое-нибудь из них заводит в тупик.} и тогда Р „не выполняется”.

{Например, предикат 'если (аб) есть (аб)' выполняется. Ею дерево порождения можно изобразить так:

20

Страница 22

ГОСТ 27974-88 С. 19

если (аб) есть (аб)'

I

'если (аб) начинаете* с (аб) и (аб) начинается с (аб)'

,--1-,

'если (аб) начинается с (аб)'    'ссяи    (аб)    начинается    с    (аб)

|(лалое одинаково

с девой ветвью)

1

'если (а) соьиадаетс (а) ь (абв...*1) и (б) начинаема с (б) ’

'если (а) совпадаете (а) в (абв ..*!)'

если истина'    'если    (б) начинается с (б)'

г----!—

'если (б) совпадает с (б) в (a6*...*lV

'если истина'    если    (    )    начинается с ( Г

сени истина

Если предикат выполняется, го его дерево порождения всегда оканчивается на 'если истина' или 'если неверно что ложь'. Если он не выполняемся, то тупиками обычно оказываются 'если ложь' и 'если неверно что нежна'. Хотя почти все соответствующие гиперправкла написаны ал я гиперпонятий, начинающихся с „ЕСЛИ" и нотог^ту каждый раэ обеспечивают порождающие правила для пары предикатов !ила 'если УТВЕРЖДЕНИЕ!' и если неверно, что УТВЕРЖЛЕНИЕГ. уто не значит, что в каждом таком случае должен выполняться какой-то один из этой пары предикатов. Например, предикат 'если цифра четыре считает 111’ {4.3.1.с} не выполняется, но не приняты никакие меры для того, чтобы выполнялся прс;ыкаг 'если неверно что иифра четыре считает НГ. поскольку в настоящем стандарте он не применяется.

В семантике не приписывают никакого смысла конструктам, прообразами которых служат предикаты Они нужны для чисто синтаксических целей.}

1.3.3. Синтаксис общих конструкции А) ОФОРМЛЕННОЕ :: краткое; выделенное; стиля НОМЕР.

a)    возможное ПОНЯТИЕ : ПОНЯТИЕ; ПУСТО.

b)    последовательность ПОНЯТИЙ <Ь> ПОНЯТИЕ; ПОНЯТИЕ, последовательность ПОНЯТИЙ tb>.

c)    список ПОНЯТИЙ {с> : ПОНЯТИЕ; ПОНЯТИЕ, знак а также {94f}. список ПОНЯТИЙ <с>.

Страница 23

СЛО ГОСТ 27974-ад

(!) упакованное ОФОРМЛЕННОЕ 7ПОНЯТИЕ . знак начало ОФОРМЛЕННЫЙ {94f, -}, 'ПОНЯТИЕ, знак конец ОФОРМЛЕННЫЙ {94f, е) индексирующее ОФОРМЛЕННОЕ ПОНЯТИЕ : знак открыть индексы

ОФОРМЛЕННЫЙ -C94f, ->. ПОНЯТИЕ, знак закрыть индексы ОФОРМЛЕННЫЙ {94f, •}.

О УТВЕРЖДЕНИЕ! либо УТВЕРЖДЕНИЕ2: УТВЕРЖДЕНИЕ!; УТВЕРЖ-ДЕНИЕ2.

{Из этою синтаксиса прямо следует, что имеются такие порождающие Правши, как

последовательность десятичных цифр: десятичная цифра;

десятичная цифра, последовательность десятичных цифр.

(которое используют в порождении примера в 1.1.3.2.Г, но дня которою Польше неi никакого явною порождающею правила.) Таким образом уменьшено число гииерправил. фактически выписанных в настоящем стандарте. а оставшиеся, стали нагляднее, гак как ли общие конструкции выписаны словами, позволяющими предположить, какими должны быть их порождения

По той же причине ссылки (1.1.3.4.f) на эти правила заменены более содержательными ссылками; например, вместо „последовательность десятичных аифр {133Ь}" в 8.1-1.1-Ь дано более содержательное ..последовательность десятичных цифр {с>*\ Кроме тою. ссылки внугри самих общих конструкций ограничены необходимым минимумом.}

2. ВЫЧИСЛИТЕЛЬ И ПРОГРАММА

Смысл программы в строгом языке объясняют в терминах гипотетического вычислителя, который осуществляет множество действий {2.1.4}, составляющих исполнение -{2.1.4 1} лай программы. Вычислитель работает с некоторым множеством ..объектов” {2.1.1}.

2.1.    Терминология

2.1.1.    Объект

„Обьект” является или конструктом {1 1.3 2.е}, или „значением" {2.1.1.1.а}. или „участком” {2.1.1.1-Ъ}. или „окружением'* {2.1 1.1 с}, или „сценой" {2.1.1 l.d}.

{Конструкты можно отнести к „внешним объектам*', гак как они соответствуют тексту Программы, которая для более реальных вычислителей могла бы транслироваться в какую-нибудь внутреннюю форму, в которой она была бы способна действовать с „внутренними объектами'*, а именно со значениями, участками, окружениями и сценами. Однако рассматриваемый здесь гипотетический вычислитель не нуждается в фазе трансляции. Предполагают, что он может анализировать программу и все ее наследные конструкты тогда же. когда он обрабатывает внутренние объекты.}

2.!. 1.1. Значения, участки, окружения и сцены

а)Всякое „значение*’ является или „простым значением” {2.1.3.1}. или

22

Страница 24

ГОСТ 27974 -88 C.2I

„именем" {2.1.3.2} , или ..составным значением" (i.e. „структурой {2.I.3.3} или „массивом" {2.1.3.4}),или „процедурой” {2.1.3.5}.

b)    Всякий „участок” {есгъ внутренний обьект. коюрый} соответствует каким-то 70ПИСАНИЯМ 7МЕТКАМ' {1.2.3.C.I}. ..Незанятый уча-сток” - эю участок, для которого '70ПИСАНИЯ 7.МЕТКИ' есть 'ПУСТО'.

{Каждое 'ОБОЗНАЧЕНИЕ дня ПРИЗНАКА' (4.8.1.F.G), заложенное в данные '70НИСАНИЯ ?М£1КИ‘, cooiecrcibyei опрсдсляющему-ОБО-ЗНАЧЕНИЕиндикаюрувыдаюшему-ПРИЗНАК (т.е. какому-нибудь идентификатору, обозначению-операции или индикатору-вида). описанному в конструкте, исполнение которого вызвало создание данного участка. Указанное 'ОБОЗНАЧЕНИЕ для ПРИЗНАКА' может ..получить доступ” к какому-то значению или сиене „внутри" этого участка (2.I.2.C).

Образом участка может служить ряд ячеек памяти, в которые помешены эти доступные обьекты}

{Все герминальные метапорождения мегапонятнй „ОПИСАНИЕ”. „МЕТКА" и „ПОЛЕ” (. или включающее их и чаше употребляемое мета-Помя1ис „ПАРА”.) имеют форму 'ОБОЗНАЧЕНИЕ для ПРИЗНАКА'. Обозначаемые 'ПАРАМИ' „свойства" применяю! в синтаксисе и семантике. чтобы в конкретной ситуации связывать с таким 'ОБОЗНАЧЕНИЕМ’ определенный признак.}

c)    Всякое „окружение” или пусто, или составлено из {какого-либо другого} окружения и некоторого участка

{Поэтому каждое окружение выводится из ряда других окружений, вытекающих в конечном счете из пустого „первичного окружения”, в котором исполняется программа (2.2.2.а>.>

d)    Всякая „сцена” S есть объект, составленный из конструкта С {1.1.3.2.е> и окружения Е. С называется конструктом, а Е окружением „этого” S {или окружением „и " Л}

{Доступ к сценам внутри участков (2.1.2.с) осуществляем черет ’МЕТКУ’ или 'ОПИСАНИЕ', возникающие из идентификаторов-выдаюшнх-мстку или нндикаюров-вида; сцены MOiyi также быть значениями

(2.1.3.5).}

2.1.1.2. Виды.

{Кзждое значение имеет атрибут, называемый его „видом”. Он определяет, как это значение связано с другими значениями и какие с ним можно производить действия. Этот атрибут описывают или. точнее, „выписывают” посредством какою-нибудь'ЗНАЧЕНИЯ' (1.2.1.R) (; например, существу* ет вид, выписываемый как 'вещественное', и вид. выписываемый как 'структура содержащая букву эр лат букву е лат для выборки вещественного букву и лат букву эм лат для выборки вешеавенного в себе'). Поскольку преследуется цель, чтобы виды, специфицируемые индикаторами-вила а и b в

вил а =ст (имя а Ь),

вид b =ci (имя ст (имя bb) b фактически были одинаковыми, го необходимо, чтобы как 'ЗНАЧЕЧШ

Страница 25

С.22 ГОСТ 27974-88

'ци! определение структуры содержащей букву бе лат для выборки имени использования ци I в себе', гак и 'ЗНАЧЕНИЕ'

'ци И определение структуры

содержащей букву бе ла! дли

выборки имени структуры

содержащей букву 6с лат для

выборки имени использования ци U в себе в собе'

(а на самом деле и многие другие) были возможными выписываниями одного и того же вида Аналогично специфицируемый описателем об (цел, веш) вил можно выписать как объединение целого вещественною воедино', так и 'объединение вещественного целого воедино'. Все протопонятии 'ЗНАЧЕНИЕ*, выписывающие один и тот же вил. называются „эквивалент-ними" (а).

Некоторые проголонятия 'ЗНАЧЕНИЕ', такие, как 'имя использования ии Ilf. ’имя ии III I определении ммеии использовании ци III Г, 'объединение вещественного имени вещественного воедино' и 'структура содержащая букву а дгтя выборки целою букву а для выборки вещественного в себе', не являются правильно построенными (7.4,4.7. l.fv4.8 l.c) и не выписывают никакого вида.

Хотя ДЛЯ большинства практических применений „вид" можно рассматривать просто как 'ЗНАЧЕНИЕ', его строгое определение включает целый класс прогопонятий 'ЗНАЧЕНИЕ', эквивалентных друт другу, и лю-бос из них может описывать этот вид.}

a)    'ЗНАЧЕНИЕ" {1.2.1.R} „эквивалентно* 'ЗНАЧЕНИЮ2Г, если выполняется {1.3.2} предикат 'если ЗНАЧЕНИЕ! эквивалентно ЗНАЧЕНИЮ' {7.3.1.а}.

{Правильно построенное 'ЗНАЧЕНИЕ' всегда эквивалентно самому себе; 'объединение целого вещественного воедино' эквивалентно объединению вещественного целою воедино'.}

Протопонятие Р „эквивалентно протопонятию О, если можно преобразовать копию Рс {приведенной формы} протопоиятия Р в копию Ос {приведенной формы} протопонятия Q при помощи следующею шага: Шаг: Если Рс не совпадает с Ос, некоторое 'ЗНАЧЕНИЕ!', содержащееся в Рс. но не содержащееся ни в каком {большем} ГЗНАЧЕИИИ2\ содержащемся в Рс. заменяют некоторым эквивалентным ему 'ЗНАЧЕНИЕМ ' и этот Шаг предпринимают снова.

{Таким образом, 'идентификатор выдающий объединение целого вещественного воедино' эквивалентен 'идентификатору выдающему обьеди-иеиие вещественною целого воедино' }

b)    Всякий ..вид'* есть такой класс С протопонятий 'ЗНАЧЕНИЕ', что каждый его элемент эквивалентен {а} каждому другому его элементу, а также {. чтобы обеспечить правильность построения}, самому себе, но не эквивалентен никакому 'ЗНАЧЕНИЮ!', не принадлежащему С.

24

Страница 26

ГОСТ 27974 -8Л С.23

■СОднако если эквивалентность видов специально не обсуждается, можно говорив о виде Просто как о терминальном метэпорождении „ЗНАЧЕНИЯ” в силу сокращения, которое будет дано в 2.1.5.1.}

с) Каждое значение имеет один конкретный вил.

{Например, видом значения 3.14 является 'вещественное' Не существует. однако, значений, виц которых начинается с 'объединение', ‘временное имя' или 'подвижный МАССИВ из' (см. 2.1.3.6).}

2.1.1.3. Области действия.

{Значение V может „именовать" (2.1.2.е) другой внутренний объект О или быть составлено из (2.1.1.1.d) него (, например, имя может именовать значение, а такая сцена, как процедура, частично составлена из окружения). Далее, время жизни ячеек памяти, содержащих (2.1.3 2.э) этот объект О или используемых в связи с ним (2 l.l.l.b), может оказаться ограниченным (. поскольку спустя некоторое время они могут обновиться) , и потому нельзя, чтобы V сохранялось дольше этого времени жизни, так как иначе можно было бы попытаться достичь через V какую-то уже не существующую ячейку памяти. Чтобы выразить это ограничение, говорят. что если V должно быть „присвоено" (5.1.2.1 -Ь) какому-нибудь имени W. то „область действия" W не должна быть „старше" области действия V. Таким образом, область действия значения V есть мера возраста указанных ячеек памяти и. следовательно, их времени жизни.}

a)    Каждое значение имеет одну определенную „область действии" {, зависящую от его вила и от способа, которым оно создано; область действия значения определяется так. чтобы совпадать с областью действия некоторою окружения}.

b)    Каждое окружение имеет одну определенную „область действия” {Область действия каждого окружения „младше" (2.1.2.0 области действия того окружения, из которого оно составлено (2.1 1.1.с).}

{Не следует смешивать область действия окружения с областями действия значений, доступных внутри его участка. Область действия окружения предпочтительно используют при определении области действия сцен, для которых оно необходимо (7.2.2.с), или области действия выдачи генераторов. для которых оно является „локализующим" (5.2.3.2.Ь). Область действия окружения определяют относительно (2.1.2.0 области действия некоторого другого окружения, тзк что создаются иерархии областей действия, в конечном счете зависящие от области действия первичного окружения (2.2.2.а).}

2.1.2. Соотношения

a)    Соотношения либо „постоянны", т.е. не зависят от данной протрам мы и се исполнения, либо под влиянием некоторых действий могут становиться „справедливыми" или ..несправедливыми". Кроме того, соотношения могут быть „транзитивными" , т.с. если - такое соотношение и Л*В и В*С оба справедливы, то справедливо и А*С.

b)    „Быть выдачей" есть соотношение между значением и действием, а именно исполнением сцены. Данное соотношение становится справедливым по завершении этого исполнения {2.1.4.1.Ь>.

25

Страница 27

С.24 ГОСТ 27974 - 88

c)    „Имен, доступ” есть соотношение между 'ПАРОЙ' {4.8.1.Ь} и значением или сценой V; оно может быть справедливым „внутри” определенного участка L {, в '70ПИСЛНИЯ ?МЕТКИ' которого заложена эта ПАРА’} Данное соотношение становится справедливым, когда эта 'ПАРА' „получает доступ" к V внутри L {3.5.2. War 4.4.8.2.а}. и тогда оно будет спра-ведлиным внутри L между любой 'НАРОЙГ. жвивалентной {2.1.1.2.а} этой 'ПАРЕ', и V.

d)    Постоянные соотношения между значениями: „быть того же вши. что и" {2.1 1.2.с}, „быть меньше”, „быть обобщаемым до*\ „быть удлиняемым до” {2.1.3.1 .е} и „быть эквивалентным” {2U.l.g}. Ьсли одно из них вообще определено для данной пары значений, то оно справедливо или несправедливо постоянно. Все эти соотношения транзитвны.

e)    „Именовать” есть соотношение между „именем" {2.1.3.2.а} N и каким-нибудь другим значением. Данное соотношение становится справедливым. когда N „начинает именовать” это значение, и перестает быть справедливым, гогда N начинает именовать другое значение.

Л Существуют три транзитивных соотношения между областями действия. а именно область действия А {2.1.1.3} может быть либо „младше”, либо „такая же. как и", либо „старше" области действия В. Если А младше В. то В старше А. и обратно. Если А такая же, как и В, то А не старше и не младше В {; обратное не обязательно справедливо, так как для некоторых пар областей действия соответствующее соотношение может быть не определено вообше}.

g) „Быть подыменем” есть соотношение между именем и „составным именем" {2.1,3.2.Ь}. Данное соотношение становится справедливым, когда это составное имя „снабжается подыменем” {2.1.3.3.е, 2.1.3.4.g} или „генерируется" {2.U.4.J, 1}. оно остается справедливым до тех пор. пока составное имя не будет снабжено другим множеством лодымен.

2.1.3. Значения

2.1.3.1. Простые значения

a)    Всякое простое значение является либо „арифметическим значением". т.е. „целым числом” или „вещественным числом”, либо „истинностным значением" f , либо „литерой" g , либо „пустым значением” h .

b)    Всякое арифметическое значение имеет „размер”, т.е целое число, характеризующее степень различия, с которой это значение сохраняется в вычислителе.

c)    Видом целого или вещественного числа размера п является некоторое '?РАЗМКРНОЕ целое' или *?РАЗМЕРН()Е вещественное’ соответственно; при этом если п положительно (равно нулю, отрицательно), то это '?РАЗМИРНОЕ' есть повторенное п раз 'длинное' (пусто, повторенное - п раз 'короткое').

d)    Число различаемых целых или вещественных чисел данного размера увеличивается (уменьшается) вместе с ним вплоть до достижения определенного размера, а именно до „числа добавошых удлинений” (взятого с обратным знаком „числа добавочных укорочений”) целых или вещсствен-

Страница 28

У    ГОСТ 27974-88 C.2S

ных чисел соответственно 110.2.1 я. b, d. е>. после чего оно остается постоянным.

е) Для объяснения смысла приведения, называемою обобщением, и описанных в стандаржомвступлении обозначений-операций предполагают, чю арифме!ические значения обладают следующими свойствами:

для каждой пары целых чисел или вещественных чисел одинакового размера определено соотношение „быть меньше" в его обычном математическом смысле {10.2.3.3^1, 10.2.3.4.а};

для каждой пары целых чисел одинакового размера может существовать отличимое от них третье число то\ху же размера: первое целое число ..минус” второе {10 2.3.3.g};

для каждой пары вещественных чисел одинакового размера могут существовать три ра зличимых вещественных числа тою же размера -первое вещее!венное число „минус” („умноженное на", .деленное «О второе число <10.2.3.4.g, 1, ш>;

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

каждое целое число данного размера „обобщаемо" до некоторого близкого к нему вещественного числа того же размера {6.5 У;

каж;*ое целое (вещественное) число данного размера может быть „удлинено до" некоторого близкого к нему целого (вещественного) числа, имеющего на единицу больший размер {. 10.2.3.3.q. 10.2.3.4.п}. 0 Всякое „истиниосшое значение" есть или „ИСТИНА", win ..ЛОЖЬ". Его видом является 'логическое'.

g)    Каждая .литера" „эквивалентна" некоторому неотрицательному целому числу размера нуль ее „целочисленному эквиваленту” (10.2 I .л >; это соотношение определено только в гой степени, что разные литеры имеют разные целочисленные эквиваленты и существует „наибольший целочисленный эквивалент" {10.2.1.р} . Видом литеры является 'литерное'.

h)    Единственное „пусюе значение" есть „пустое". Его видом является 'пустое значение'.

{Исполнение конструкта выдаст пустое значение, когда нет надобности в более полезном результате. Поскольку синтаксисом не предусмотрены псремеиныевида-пустое-эначение, описаиия-тождес1В-для*пустого-эначенин, формальные-парамегрывида-пустое-значение, программна не может воспользоваться пустыми значениями, за исключением тех, которые появляются при объединении (6.4).}

i)    Областью действия всякого простого значения является область действия первичного окружения {2.2.2.а}.

2.1.3.2. Имена.

а) Всякое „имя" есть значение, которое может или „начать именовать"

Страница 29

С.26 I ОСТ 27974-88

{d.5.2.3.2.a. 5.2 1.2.b} какое-нибудь друюе значение, или быть „псевдоиме-нсм" {и не именован, тогда никакого значения}: более того, для каждого вида, начинающегося с 'имя', существует в точности одно имя этого вида, которое является псевдоимснем.

Имя может быть „вновь созданным" {при исполнении генератора <5 2.3.2) или ФОРМЫ-после-вскторизации (6.6.2). когда некоторое составное имя снабжается подымснами (2.1.3.3 с, 2.1.3.4.g) и, возможно, koi да ими „юнерируется” (2.1 3.4 j, |)>. Созданное таким образом имя отличается от всех остальных уже существующих имен.

■[Имя можно рассмафивать как адрес ячейки или ячеек памяж и вычислителе. используемых, чтобы содержать именуемое значение. Создание имени предполагает отведение в памяти места для этого значения.}

b)    Видом всякого имени N является некоторое 'имя ВИЛА' и любое именуемое N значение должно быть „приемлемо для" {2.1.3.6.d} лого 'ВИДА'. Исли 'ВИЛ' есть какое-то 'СОСТАВНОЕ', то N называется ..составным именем”

c)    Область действия всякого имени - это область действии некоторою конкретною окружения {. которым обычно будет .локализующее окружение" (5.2.3.2.Ь) некоторого генератора}. Область действия имени, являющеюся псевдоимснем, есть область действия первичного окружения -С2.7 2.Э}

d)    Если N - составное имя. именующее структуру (массив) V {2 1.3 3. 2.1.3.4}, и какое-то его подымя {2.1.2.g}. выбираемое {2.1.3.3.C, 2.l.3.4.g} по ’СЛОВУ' (индексу) 1. начинает именовать {новое} значение X. ю N начинает именовать структуру (массив), отличающуюся or V только своим полем (элементом), выбираемым по 1, которое {стало теперь} этим X.

{Относительно вида подымени см. 2.1.3.3.d и 2.1.3.4.f}

2.1.3.3. Структуры.

a)    Всякая „структура" составлена из последовательности других значений се ..полей", каждое из которых „выбирается" {Ь} по определенному 'СЛОВУ' {9.4.2.1.А} {О выборке поля по указагелю-поля см. 2.1.5.g.}

{Упорядоченность полей структуры используется в семантике записсй-сгрукгуры (3.3.2 b), тскстов-формата (10.3.4) и в выстраивании (10.3.2.3.с).}

b)    Видом структуры V является некоторая 'структура содержащая ИЮЛЯ в себе'. Если заложенное в зтн ’!ПОЛЯ' n-с 'ПОЛЕ' есть некоторое 'СЛОВО дня выборки ВИДА', то это n-с поле значения V „выбирается” по данному ’СЛОВУ' и приемлемо для {2.1,3 6.d} данного 'ВИДА*.

c)    Облзсть действия всякой структуры - это самая младшая из областей действия ее полей.

d)    Если вид имени N {. именующего какую-то структуру,} есть некоторое 'имя структуры содержащей 1ПОЛЯ в себе' и выполняется предикат 'если СЛОВО для выборки ВИДА находится в ИЮЛЯХ’ {7.2.1.Ь, с}, то ви-

28

Страница 30

ГОСТ 27974-88 С.27

дом выбираемого {е> по этому 'СЛОВУ' подымсни данною N является имя ВИЛА'.

е) Когда имя N, именующее структуру V, „снабжается подыменами” •Се, 2.1.3.4.g, 4.4.2.b, 5.2.3.2.а>. тогда для каждого 'СЛОВА', выбирающего поле F в V:

• создается новое подымя М с такой же, как и у N. областью действия;

М начинает именовать none F;

М называется именем, .^выбираемым" по этому ’СЛОВУ’ в N;

если М - составное имя {2.1.3.2.Ь>. то оно само снабжается поды-

менами { с, 2.1.3.4.g>

2.1.3.4. Массивы.

a)    Всякий {п-мерный} „массив" составлен из ..паспорта” и последовательности других значений, его „элементов”, каждый из которых можно „выбрать" по определенному набору из п целых чисел, называемому ..индексом" этою элемента.

b)    „Паспорт" имеет форму

(Ol.tt,), (h. и,(1п.ип)).

где каждая пара (lj .uj), i = 1.....п, является целочисленной „граничной

парой”, в которой I; ссть i-я „нижняя граница", а и* есть i-я „верхняя граница",

c)    Если Uj < 1, для некоторого i, i ■ 1,.... п. то паспорт называется „вырожденным" и существует единственный элемен! массива, называемый „скрытым элементом" {и не выбираемый ни по какому индексу; см. также 5.2.1.2.Ь>; в противном случае число элементов равно

(U| I, ♦ 1) X (u2 - lj ♦ 1) X ...X (un — In + 1) и каждый из них выбирается по определенному индексу (г1,..., г„). где 1( < г; < и;, i = 1.....п.

d)    Вид всякого массива V - это 'МАССИВ из ВИДА', где 'МАССИВ' содержит 'вектор' столько раз, сколько граничных пар в паспорте этого V, и каждый элемент значения V приемлем для {2.1.3.6.d> 'ВИЛА'.

{ Например, если [ ] об (цел. вещ) ruir= (1; 2,0), то вид выдачи ruir есть ’вектор из объединения целого вещественного воедино’, вид ее первого элемента есть 'целое’, а вид второю - 'вещественное' }

e)    Областью действия массива, если его паспорт не вырожден, является самая младшая из областей действия его элементов, а иначе - область действия первичного окружения {2.2.2.а>.

0 Массив вида МАССИВ из ВИДА' может именоваться либо „именем подвижною" с видом 'имя подвижного МАССИВА из ВИДАГ.либо „именем фиксированною" с видом 'имя МАССИВА из ВИДА]', тде {в обоих случаях} .ВИД' „фиксирует" {2.1.3.6.Ь> 'ВИДГ.

{Это различие предполагает возможную разницу в способе, которым данное значение хранится в вычислителе. В случае подвижною должно быть позволено присваивать {5.2.1.2.Ь> массивы с различными границами одному и тому же имени, в то время как в случае фиксированного можно быть уверенным, что эта границы будут оставаться фиксированными с течение

29

Страница 31

СМ ГОСТ 27974 88

всею времени существования данного имени Отмстим, что „подвижность*’ ссгь свойство имени: указываемое значение является в обоих случаях одним и тем же массивом.}

Если видом имени N {, именующего массив,} является некоторое 'имя 7ПОДВИЖНОГО МАССИВА из ВИДА', то видом каждого подымсни этого N является 'имя ВИДА*.

g)    Когда имя N, именующее массив V, ..снабжается подыменами" {g, 2.1.3.3.е> 4.4.2.Ь, 5.2.1.2.Ь, 5.2.3.2.а}, тогда для каждого индекса, выбирающего элемент Е в V:

создается новое подымя М с такой же. как и у N, областью действия;

М начинает именовать элемент Е;

М называется именем, „выбираемым" в N по этому индексу; если М составное имя {2.1.3.2.Ь>, то оно само снабжается поды-

менами {g, 2.1.3.3 .е}

{В дополнение к выбору по индексу элемента (а) или имени (g) можно выбирай значение или генерировать новое имя, именующее такое значение, с помощью отрезка (h, i, j) или 'СЛОВА' (k, 1). Как эти отрезки, гак и индексы используются при исполнении вырезок (5.3.2.2.).}

h)    Всякий „отрезок” - это набор из п элементов* причем каждый элемент есть либо целое число {. соответствующее индексу}, либо тройка (1, и. d) {. соответствующая отрезку или воэможной-сдвинутойнижней-границе}, так что по крайней мере один из элементов отрезка является тройкой {; если все эти элементы - целые числа, то данный n-набор есть индекс (а) }. Каждый из элементов упомянутых троек или является целым числом, или „отсутствует".

{Отрезок (или индекс) выдается при исполнении индексатора (5.3.2.2.Ь).}

i)    Массив W {размерности т}, „выбираемый” по некоторому отрезку Т в {п-мерно м. 1 < ш < п} маехгиве V, определяется так:

Пусть Т состоит из целых чисел и троек Tj, i = 1,.... nf m из которых

фактически являются тройками; пусть j-я тройка есть (lj. Uj, dj). j = I.....

m;

W составляется из:

(I) паспорта ((it - d,. u, - d,). (b - dJf u2 - d2\.....(lm - dm,

Um * dm));

(ii) элементов массива V. причем выбираемым в W по индексу (wt,.... wm ){lj - dj < w} < uj - dj} элементом, если он существует, будет элемент, выбираемый в V по индексу (v,, ..., vn), определяемому следующим образом:

Для i* 1 у.... п.

Случай А : Т$ - целое число;

•    Vj - Т*;

Случай В : Т; есть j-я тройка (Ij.uj, dj) отреэкэ Т

•    Vj = Wj ♦ dj

30

Страница 32

ГОСТ 27974 -88 С.29

j) Имя М, „генерируемое” по отрезку Т из имени N. именующего массив V. есть имя {фиксированного. - не обязательно вновь созданное>, имеющее ту же область действия, что и N. Имя М именует массив W, выбираемый {1} no Т в V. Каждое лодымя этого М, выбираемое по индексу iw. является одним из выбираемых по некоторому индексу 1у {уже существующих} поды мен имени N, где каждый индекс lv определяется но этому Г и соответствующему 1* определенным в предыдущем подразделе методом.

к) Массив W. „выбираемый" по 'СЛОВУ' в массиве V {, каждый элемент которого является структурой.} составляется из:

(i)    паспорта этого V и

(ii)    выбираемых по данному 'СЛОВУ' в элементах этого V полей; причем выбираемым в W по некоторому индексу 1 элементом, если он существует, будет выбираемое по данному 'СЛОВУ' поле в том элементе массива V, который выбирается по индексу J.

1) Ими М, ..генерируемое” по 'СЛОВУ' из имени N, именующею массив V {, каждый элемент которого является структурой}, есть имя {фиксированного - не обязательно вновь созданное }. имеющее ту же область действия, что и N. Имя М именует массив.выбираемый {к} в V по этому 'СЛОВУ'. Каждое выбираемое по индексу I подыми этою М является {уже существующим} именем, выбираемым {2.1,3 З.е} поданному ’СЛОВУ’ в том подымени имени N, которое выбирается {g} по индексу I.

2.1.3.5.    Процедуры

a)    Всякая ..процедура” есть сцена {2.1.1.1 .d}, составленная иэ текста процедуры {5 4.1.1.3, Ь} и некоторого окружения {2.1.1.1.с}

{Процедура может быть „выэванз (5.4.3.2.Ь) и тогда будет исполняться основа ее текста-процедуры.}

b)    Видом процедуры, составленной из текста-ироиедуры-выдающего-ПРОЦЕДУРУ. является 'ПРОЦЕДУРА'.

c)    Область действия всякой процедуры это область действия ее окружения.

2.1.3.6.    Приемлемость значений

a)    {Значений, вид которых начинаекя с ’объединение’, не существует, но существуют имена, вид которых начинается с ’имя объединения’, иапри-мер и в об (цел. вещ) и;. В данном случае и, видом которого является 'имя объединения целого вещественного воедино', именует либо знамение вида 'целое’, либо значение вида ’вещественное'. При помощи сопоставляющего-предложения (3.4.1.q) в любой момент можно проверить, какая из этих ситуаций имесг место.}

Вид ’ЗНАЧЕНИЕ' „объединен из” вида 'ОБЫЧНОЕ'.если это ’ЗНАЧЕНИЕ' некоторое 'объединение ?ОБЫЧНЫХ1 ОБЫЧНОГО ?0БЫЧНЫХ2 воедино’.

b)    Не существует значений, вид которых начинается с 'подвижное', но существуют имена подвижного, вид которых начинается с 'имя подвижного', например а1 вподв [1:п] вещ а 1;. В данном случае аI, видом которого

31

Страница 33

I

С.ЗО ГОСТ 27974-88

является 'имя подвижного вектора из вещественных', именует массив с видом 'вектор из вещественных' (см. также 2.1.3.4.0 - Вообще существуют значения только тех ендов, которые получаются „фиксацией”.}

Вид 'ЗНАЧЕНИЕ2' ..фиксирует” вид 'ЗНАЧЕНИЕ 1', если выполняется предикат 'если ЗНАЧЕНИЕ2 фиксирует ЗНАЧЕНИЕ!’ {4.7.1.а. Ь. С>

■СВ ходе процесса фиксации 'ЗНАЧЕНИЕ2’, получается за счет устранении всех 'подвижное', содержащихся в '311АЧЕНИИГ на тех местах, на которых они не содержатся ни в каком 'ИМЕНИ ЗНАЧЕНИЯЗ’. Так. например.

'структура содержащая букву а для выборки подвижного вектора из литерных в себе'; не являющаяся видом никакого значения, фиксируется

’структурой содержащей букву а для выборки вектора из литерных в

себе';

являющейся поэтому видом значения, которое может именоваться подвижным именем, имеющим вид

'имя структуры содержащей букву а для выборки подвижного вектора из литерных в себе'.

Этот последний вил уже есть вид имени и, следовательно, его нельзя подвергнуть фиксации.>

c)    {Не существует имен, вид которых начинается с 'временное имя', „Временное имя” вила 'имя ВИДА' - это выдача некоторой ФОРМЫ-

выдающей-в ременное-имя-ВИЛА, но так как в настоящем языке нет описа телей врсменного имени-ВИДА (4.6.1), то синтаксисом гарантируется, что никакое временное имя никогда не будет присвоено, приписано или выработано в результате вызова процедуры.

Например, хх .=41 (i) не есть присваивание потому, что хх не есть иден-гификатор-выдающий-имя-врсмснного-имени-веществснного. Временные имена возникают в вырезках, выборках из массива или при векторизации имен подвижного.>

d)    Значение вида Ml „приемлемо для” вида М2, если

(i)    Ml такой же. как и М2, или

(ii)    М2 объединен из {a} Ml {например, для специфицированного описателем об (вещ, цел) вида приемлемы значения, вид которых специфицируется либо вещ, либо цел}, или

(ili) MI фиксирует {b> М2 {. например, для вида'подвижный вектор из вещественных' (. для которого не существует значений,) приемлемы «кие значения, как выдача фактического-описателя подв [1 : п] вещ, являющаяся значением вида 'вектор из вещественных'}, или

(iv) Ml - имя ВИДА', а М2 - временное имя ВИДА' {например, для вида 'временное имя вещественного' приемлемы значения (как выдача вырезки al (ij), вид которых есть 'имя вещественного'}.

{См. 2.1.4.1.b в связи с приемлемостью выдачи сиены.}

32

Страница 34

ГОСТ 27974-88 С.31

2.1А Действия

2.1.4.1.    Исполнение.

a)    „Исполнение" определенных сиен {, а именно тех. чьи кона рук !Ы обозначаются определенными парапонятиями,} описывается в разделах настоящего стандарта, озаглавленных ..Семантика". В них задается последовательность .действий*', которые надо провести в ходе исполнения каждой такой сцены.

{Примеры действий, которые могут описываться

•    сделать справедливыми какие-то соотношения.

•    создать новые имена и

•    исполнить дру| ие сцены.}

„Смысл** сиены это эффект действий, проводимых в ходе ее исполнения Любое из этих действий или любую их комбинацию можно заменить любым действием или комбинацией, вызывающими тот же зффикт

b)    Исполнение сцены S может ..выдавать" значение. Если конструктом из S являемся ПОНЯТИЕ-выдающсе-ЗНАЧЕНИЕ. то выдаваемое значение если не оговорено противное, {имеет такой вил. «по оно} приемлемо для {2.1.3.6 d} этого 'ЗНАЧЕНИЯ'.

{Это правило позволяет обсуждать выдачи в семан!ике без явною упоминания их вида. >

c)    Если исполнение некоторого конструкта А в некотором окружении Е ие описано явным способом, отличным от сказанного в этом пункте, и В единственный прямой наследник А, требующий исполнения {см ниже}. то исполнение А в Е состоит в исполнении В в Е. а выдача А, если таковая полагается, есть выдача этого В. если она существует {; такое автоматическое исполнение называется „предыслолнением” АвН}.

Конструкт не требует исполнения, если он невидим {I 1.3 2.li}, является символом {9.1.1 h} или его исполнение не описано никаким способом в настоящем стандарте и ни один из ею прямых наследников не требует исполнения,

{Например, исполнением замкнуто!о-иредложения-выдающего-имя-ве-ществеиного (3.1.1.а) (х:=3.14> является (, и выдает го же значение, что и) исполнение его составляющего послсдовательного-предложения-выдающе-го-имя-всшсствснного (3.2.1.а) х.г3.14}

2.1.4.2.    Последовательные и совместные дейавия.

a)    Всякое действие может быть „неделимым", „последовательным' или „совместным**. Всякое последовательное или совместное дейс1вие со-сюит из одного или нескольких других действия, называемых ею ,.лод-дейсгвнями". Неделимое действие не состоит из других действия {; какие действия неделимы, оставлено настоящим стандартом не определенным}.

b)    ..Наследным действием” другого действия В является поддействие либо В, либо наследного действия В.

c)    Действие А есть „наддейсгвие” действия В, если В - поддействис {а} для А.

d)    Поддействия всякого последовательного действия S выполняются

?-Г36<

33

Страница 35

С.32 ГОС Т 27974-ад

одно за другим: г.с. за завершением {2 1.4 З.с. а>поддейсгвия для Ьидс| запуск {2.1.4.3.Ь, с> следующего лоддействия эюго S. если оно есть. {Исполнение сцены, состоящее в общем случае hj последовательности лей-С1ьий. будет последовательным действием.}

e)    Поддейовия совместного действия совмещаются во времени; точнее, выбирается и доводится до конца одно из тех его наследных неделимых действий, которое в данный момент ..акгивно” {2.|.4.3.а}; и по его завершении {2.1.4.3 .с} выбирается другое такое действие и т.д. {вплоть до завершения их всех}.

Способ такою выбора оставлен настоящим стандартом не определенным. за тем лишь исключением, что если два действия {.совместные между собой,> названы „несовместимыми" {10.2.4} друг с другом, то {они не должны совмешагься, т.е} ни одно из наследных неделимых действий одного из них (одно из них {, если оно само неделимо,}) не должно выбираться, если другое {действие} активно в данный момент и одно или несколько. но не все из его наследных неделимых действий уже завершены.

f)    Нели одна или несколько сцен должны быть „исполнены совместно”, то зто исполнение есть совместное действие, состоящее из {совместного} исполнения данных сцен.

2.1.4.3. Запуск, завершение и прекращение

a)    Всякое действие либо „активно”, либо „неактивно”. Действие становится активным, когда оно „запускается” {Ъ, с} или „возобновляется** {g}; действие становится неактивным, когда оно „завершается” {с, Ь>. „прекращается” {е}, ,.приостанавливается” {f} или „прерывается” {h>.

b)    Когда последовательное действие „запускается”, запускается его первое полдействие. Когда ..запускается” совместное действие, запускаются все ею полдействия.

c)    Когда „запускается” неделимое действия, то оно может быть доведено до конца {см. 2.1.4.2.е}, после чего оно становится „завершенным”.

d)    Всякое последовательное действие „завершается”, когда завершается его последнее поддействие. Всякое совместное действие „завершается”, когда завершены все его лоддействия.

e)    Когда {последовательное или совместное} действие „прекращается”, прекращаются все его лоддействия {и. следовательно, все его наследные действия;} {после чего вместо него может запуститься другое действие . Прекращение дейсгвия вызывается исполнением перехода (5.4.4.2) }

0 Когда действие „приостанавливается” приостанавливаются все его лоддействия {и, следовательно, веч* его активные наследные действия} {Действие может приостановиться в течение ..вызова" процедуры, выдаваемой обозначением-олерации вниз (10.2.4.d), после чего оно может возобновиться впоследствии, во время вызова процедуры, выдаваемой обозначением-операцнн вверх (10.2.4 е).}    ,

Earn в какой-то момент приостанавливается некоторое дейс!вие. но являющееся наследным действием „процесса” „параллельною действия'.

34

Страница 36

ГОСТ 27974-ВВ С.ЗЗ

■С 10.2.4}. у цругого процесса (других процессов) которого продолжают существовать активные наследные неделимые действия, то дальнейшее исполнение не определено.

g)    Когда действие А „возобновляется**, возобновляются его поддай-ствия, приостановленные вследствие приостановки самого А.

h)    Всякое действие может ..прерваться” событием, {например, „переполнением*'.} не определяемым семантикой настоящею стандарта, »н> вызванным вычислителем, если сю возможности {2 2.2 Ь} не позволяют обеспечить удовлетворительное исполнение. Ко1да действие прерывается, прерываются все его полдействия и. возможно, ею наддсйствия. -(Возобновятся ли ли действия после прерывания, будут ли гзттушены другие действия или же окончится исполнение данной программы, настоящим стандартом оставлено не определенным.}

{Результат данных выше определений следующий -

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

Можно видеть, что все это аналогично обращению одной подпрей рам мы к другой - выполнение вызвавшей подпрограммы продолжается по завершении выполнения вызванной подпрот раммы. Данные в настоящем стандарте семантические правила для исполнения различных ларапонятий соответствуют текстам таких подпрограмм; эти семантические правила могут даже в подходящих обстоятельствах рекурсивно вызывать сами себя (, но в каждом таком случае с различными конструктами или в различных окружениях.)

Таким образом, в каждый момент существует дерево активных действий, наследных (2.1.4.2.Ь) для исполнения данной программы.}

2.1.5. Сокращения

{На веем протяжении текста настоящего стандарта свободно используются некоторые сокращения, позволяющие избежать некоторых длинных и ззпутанных фраз, необходимых в противном случае в семантике.} а) „А (этого) В** или „А из В”, где А и В - парапонятия, заменяет фразу „А, которое есть прямой наследник {1.13.2.С} В".

{Это позволяет сокращать „прямой наследник (конструкта)** до .его”, „из”, „этого” или же просто употреблять форму родительного пэде-МА\ например, i в присваивании (5.2 1.1а) »:=1 есть „его” получатель или i-пол уча тел ь „этого” присваивания, или даже i-получатель присванва-сия i: = I); в то время как i не есть получатель последоватсльного-предло-<ения i I; j: ■ 2 (.хотя он - составляющий получатель (I.I.4.2.d) этого тредложения).}

Ь) „С в L”, где С - конструкт, а Е - окружение, заменяет фразу „сцс-

35

2*

Страница 37

С.34 ГОСТ 27974-88

на. составленная -С2.1.1.1 -d> изС и Е". Иногда она сокращается просто до „С", если ясно, о каком окружении идет речь.

{Так как процесс исполнения (2.1.4.1.а) может применяться только к сценам, это сокpauicкис чаше всего встречается в таких формах, как „Ник-лнческос-прсдложение С в окружении Е1 исполняется...” (3.5.2) или „Присваивание А исполняется...” (5.2.1.2.а. где говорится об исполнении А в любом подходящем окружении).}

c)    ..Выдача (этого) S”. где S - сцена, исполнение которой не предписано явно, заменяет фразу „выдача, получаемая в результате запуска исполнения сцены S. если дожидаться завершения этого исполнения".

{Таким образом, высказывание (3.2.2.C) ..W есть выдача этой основы;", (использующее также сокращение, определенное в b выше.) надо интерпретировать как означающее

..Исполняется сцена, составленная из данной основы и того окружения, о котором идет речь: W является выдачей, получаемой по завершении исполнения згой сиены; ”.}

d)    „Выдачи S,.....Sn”', где S,.....S„ - сцены, исполнение которых не

предписано явно, заменяет фразу „выдачи, получаемые в результате запуска совместною исполнения {2.1.4.2.f} сцен S,.....Sn, если дожидаться за

вершения этого исполнения -С, что предполагает «вершение исполнения всех сиен}”.

Если некоторьте или все сцены S,, ..., Sn описаны как определенные составляющие какого-то конструкта, взятые в некотором окружении, то их выдачи должны рассматриваться расположенными в текстуальном порядке {I.UJ.i} этих составляющих в данном конструкте.

{Таким образом, высказывание (3.3.2.Ь)

„пусть V,, .... Vm будут {совместными} выдачами составляющих основ этого С;” должно интерпретироваться как означающее

„пусть V,, ..., Vmбудут соответствующими выдачами, получаемыми -в результате запуска и последующего завершения совместного испол ” нения сцен, состоящих из составляющих основ этого С, взятых в и£ текстуальном порядке, и того окружения, в котором исполняется С;”.}

e)    „Если А есть (является) В”, где А и В - гиперпонятия, заменяет фразу „если Л эквивалентно {2.1.1.2.а} В".

{Таким образом, в высказывании „Случай С: 'ВЫБИРАЮЩЕЕ' есть некоторое 'выбирающее по ПРЕДСТАВИТЕЛЮ’" (3.4.2.Ь) несущественно, будет ли это 'ВЫБИРАЮЩЕЕ' начинаться с 'выбирающее по объединению'или же с 'выбирающее по ИИ определению объединения'.}

О -.Вид есть (является) А”, где А гиперпонятие, заменяет фразу „вид {, являющийся классом протопонятий 'ЗНАЧЕНИЕ'}, который включает это А”.

{Это позволяет употреблять такие сокращенные формы, как „вид есть некоторая 'структура содержащая !ПОЛЯ в себе'”, „данный вид начинается

Страница 38

ГОСТ 27974-88 CJS

с 'объединение'” или „вид, в который заложено 'ПОЛЕ',, в общем случае вил можно указать, приведя только одно входяшее в него 'ЗНАЧЕНИЕ', >

g) „Значение. выбираемое (генерируемое) по данному указателю-no-ля F," заменяет фразу „если F - {11РИ.М1:НЯЮШИЙ-} СЛОВО-указатель-ноля {4.8.l.f}, то данное значение выбирается {2.1.3.3.а. с 2.l.3.4.k> (те-нернруегся {2.1.3.4.1>) по этому 'СЛОВУ'".

2.2. Программа

2.2.1.    Синтаксис

а) программа: замкнутое предложение в новом {пустом окружении} сильно выдающее пусюе значение {31 а>

{См также 10.1 >

2.2.2.    Семантика

a)    Исполнение программы есть исполнение се замкнутогопредло-жсния-в-новом-оильно-выдаюшего-пусгое-значение в пустом окружении {2.1.1.1.с}, называемом ..первичным окружением".

{Несмотря на то, что цель настоящего стандарта определять смысл собствеино-протрамм (lO.l.l.g). эго смысл устанавливается только через предваряющее определение смысла программы, в которую эта собственно-программа вложена (10.1.2).}

{В настоящем стандарте синтаксис определяет, какие последовательности символов являются терминальными порождениями понятия 'программа', а семантика - какие действия осуществляются вычислителем, когда программа исполняется. Как синтаксис, так и семантика рекурсивны. Хотя некоторые последовательноеik символов могут быть терминальными порождениями'программы' (см. также 1.1.3.2.f). порождаемыми более чем одним способом, зта синтаксическая неоднозначность не приводит к семантической двусмысленности.}

b)    В Алголе 68 предусмотрен специальный синтаксис дня конструктов. Вместе с их рекурсивным определением он даст возможность описывать и пазличать произвольно большие деревья порождения, различать произволь-

много значений данного вида (исключая такие виды, как 'логическое и стое значение') и различать как угодно много видов. Этот синтаксис позволяет существовать в вычислителе произвольно большому числу объектов к позволяет исполнению программы включать » себя произвольно большое, не обязательно конечное, число действий. Из этого не следует, что способ записи этих объектов в вычислителе тот же, что и в настоящем стандарте и что он имеет те же возможносги. Не предполагается, что эти два способа записи одинаковы и даже что между ними существует взаимно однозначное соответствие, фактически множество разных способов обозначения объектов данной категории может быть конечным Не прсдпола^ется, чю вычислитель может обрабатывав произвольные объемы предлагаемой информации. что скорость вычислителя достаточна для исполнения заданной программы за предписанный промежу ток времени и что количество объектов и соотношений, которые можно определить в вычислителе, достаточно для со исполнения вообще.

37

Страница 39

С.36 ГОСТ 27974-R8

с) Модель гипотетического вычкслигсля. испольоуюшая реальную вычислительную машину, называйся „реализацией” Алгола 68, если она не ограничивает применение насдоншего языка в других аспектах, отличных от упомянутых выше. Кроме гою, если определяется язык А. собственно-программы коюрого являются также собствснно-програми&ми языка В; и смысл каждой такой собственно-протраммы. определяемый языком А, совпадает с ее смыслом, определяемым языком В. то А называется ..подъязыком" для В. а В называется „надъязыком" для А.

{Так. например, подъязык Алгола 68 можно определить, опуская отдельные правила синтаксиса, обедняя данное стандартнос-вступление и,'или оставляя не определенным кое-что. определяемое в настоящем стандарте. Тем самым можно будет обеспечить более эффективное решение определенных классов задач или осуществить реализацию для малых машин.

Аналогично надъяэык Алгол 68 можно определить за счет некоторых добавлений к синтаксису, семангике или стандартному-вступлению и тогда можно улучшить эффективность (, позволяя пользователю поставлять добавочную информацию,) или дать возможность решать задачи, с трудом поддающиеся Алголу 68.>

Модель называют реализацией подъязыка, если она не ограничивает использование этого подъязыка в иных аспектах, нежели упомянутые выше.

{См. 9.3 с но поводу термина „реализация эталонного языка’’.}

3. ПРЕДЛОЖЕНИЯ

{Предложения обеспечивают

иерархическую структуру программ, введение новых блоков определений,

последовательную или совместную композицию, параллелизм, разветвления и циклы.

3.0.1. Синтаксис

a) "фраза: основа ДЕЙСТВУЮЩАЯ {32d>;    ч*

описание 'ОПИСАНИЙ в СРЕДЕ {41а}.    •

b)    ’выражение ПРИВОДИМО выдающее ВИД:

ОСНОВА {5А} в СРЕДЕ ПРИВОДИМО выдающая ВИД.

c)    • оператор:

ОСНОВА {5А} в СРЕДЕ сильно выдающая пустое значение.

d)    • константа вида ЗНАЧЕНИЕ : ПРИМЕНЯЮЩИЙ СЛОВО

идентификатор в СРЕДЕ выдающий ЗНАЧЕНИЕ {48а, Ь}; изображаемое в СРЕДЕ выдающее ЗНАЧЕНИЕ {80а}.

e)    • переменная вида ВИД : ПРИМЕНЯЮЩИЙ СЛОВО

идентификатор в СРЕДЕ выдающий имя ВИДА {48а, Ь}.

38

Страница 40

ГОСТ 27974-ад С.37

f) "блок в СРЕДЕ : определяющее СЛОЙ последовательное предложение ПРИВОДИМОЕ В СРЕДЕ {32а}; состав ВЫБИРАЮЩЕГО предложения ОФОРМЛЕННЫЙ ПРИВОДИМЫЙ в СРЕДЕ {34Ь}; вариан! выбирающий по ПРЕДСТАВИТЕЛЮ ПРИВОДИМЫЙ в СРЕДЕ {34i};

ОФОРМЛЕННЫЙ цикл с ОПИСАНИЕМ в СРЕДЕ {35е}; ОФОРМЛЕННЫЙ подчиненный условию цикл в СРЕДЕ {35f}; текст процедуры в СРЕДЕ выдающий ПРОЦЕДУРУ {54Jа. Ь} {Блоки-в-СРЕДЕ появляются в определении „идентификации'’ (7.2.2.Ь),}

3.0.2.    Семантика

Всякая „среда” есть некоторая ’СРЕДА’. „Средой конструкта” является 'СРЕДА', заложенная в прообраз этого конструкта, но не заложенная ни в какой содержащийся в этом прообразе 'определяющий СЛОЙ’. -

{Среда конструкта содержит запись обо всех описаниях, образующих окружение, в котором этот конструкт должен интерпретироваться.

Конструкты, содержащиеся в некотором блоке R, но не содержащиеся ни в каком меньшем блоке, содержащемся в R, можно назвать образующими „зону”. Все конструкты в данной зоне имеют одну и ту же среду, а именно среду непосредственно окружающей ее зоны с добавлением одного дополнительного 'СЛОЯ'. Синтаксис гарантирует (3.2.1 .Ь, 3.4,1.i, j, к, 3.5.I.e. 5.4.1.1 .b), 'гто каждой 'ПАРЕ* (4.8.1 .Е), отражающей некоторое „свойство” в этом дополнительном 'СЛОЕ', соответствует определяющий-индикатор (4.8.!.а), содержащийся в каком-то определении в данной зоне.}

3.1.    Замкнутые предложения

{Замкнутые-иредложения обычно используют, чтобы создавать основы из последовательных-прсдложений, как, например,

(вещ х; чит (х); х) в (вещ х; чит (х); х) + 3.14}

3.1.1.    Синтаксис

А) ПРИВОДИМОЕ :: ПРИВОДИМО выдающее ЗНАЧЕНИЕ.

) УПАКОВКА :: упакованное ОФОРМЛЕННОЕ, замкнутое предложение в СРЕДЕ

ПРИВОДИМОЕ {22а, 5D, 551а, A34lh. А349а>:

УПАКОВКА определяющего СЛОЙ последовательного предложения ПРИВОДИМОГО в СРЕДЕ {32а}

{СЛОЙ :: новые 70ПИСАНИЯ 7МЕТКИ.}

{Пример

а) начало х:*|; у: =2конец}

{Выдачей эамкиутогопредложения является вследшвие предысполне-ния (2.1.4.1.с) выдача его составляющего последовательного предложения.}

39

Страница 41

С.38 IOCI 27974—88

3.2 Последовательные предложения {Назначение послсдовательны.х-нредложсний состоит в:

•    построении нокмх блоков определений и

•    последовательной композиции действий.

Всякое после до вател ьное-пре дл ожен ис состоит из возможно пустой последовательноеги непомеченных фраз, последняя из них. если она есть, является описанием. ia которым идет последовательность возможно помеченных основ. Эти фразы и основы разделяются знаками-продолжать. а именно точками с запяюй. Некоторые из этих основ MOiyi. однако, раз-делться завершителями, а именно выходами; основа, следующая за заверителем. должна быть помечена, чтобы быть достижимой. Значение последней основы или основы, предшествующей выходу, определяет значение всего последовательного-прсдложсния.

Например, следующее послеловательное-предпожение выдает значение истина тотда и только тогда, когда вектор а содержи! целое число 8: цел п; чит (п);

[1 : п] цел а; чиi (а);

для i до n UK если a [i] ■ 8 то на найдено все ки; ложь выход найдено : истина}

3.2.1. Синтаксис

a)    определяющее новые "’ПАРЫ последовательное предложение

ПРИВОДИМОЕ В СРЕДЕ {31а. 34f, 1.35h>: кортеж с ?ПАРАМИ ПРИВОДИМЫЙ в СРЕДЕ с новыми '’ПАРАМИ {Ь>

{Здесь 7ПАРЫ :: ’ОПИСАНИЯ ’МЕТКИ.}

b)    кортеж с ’ПАРАМИ ПРИВОДИМЫЙ в СРЕДЕ {а, Ь. 34с>: основа в СРЕДЕ сильно выдающая пустое значение {d},

знак продолжать {94f>, кортеж с 7ПАРАМИ ПРИВОДИМЫЙ в СРЬДЕ {Ь>; если (?ПАРЫ) есть (’ОПИСАНИЯ 70ПИСАНИЯ ?МЕТКИ), описание ЮПИСАНИЙ в СРЕДЕ {41а}, знак продолжать {94f>, кортеже {ОПИСАНИЯМИ ’МЕТКАМИ ПРИВОДИМЫЙ в СРЕДЕ {Ь>; если (’ПАРЫ) есть (МЕТКА 7МЕТКИ), определение межи через МЕТКУ в СРЕДЕ {с}, кортеж с .’МЕТКАМИ ПРИВОДИМЫЙ в СРЕЛЕ {Ь>; если (7ПАРЫ) есть (МЬТКА ’МЕТКИ) и ПРИВОДИМОЕ уравнивает ПРИВОДИМОЕ! н Г1РИВ0ДИМ0Е2 {е}, основа в СРЕДЕ ПРИВОДИМАЯ 1 {d}. знак завершить {94f>, определение метки через МЕТКУ в СРЕДЕ {с}, кчртеж с 7МЕТКАМИ ПРИВОДИМЫЙ2 в СРЕДЕ {Ь>; если (7ПАРЫ) есть (ПУСТО), основа в СРЕДЕ ПРИВОДИМАЯ {d}.

c)    определение метки через СЛОВО для метки в СРЕДЕ {Ь>:

40

Страница 42

. ГОСТ 27974-88 С.39

определяющий СЛОВО идентификатор в СРЕДЕ выдающий метку {48а}, знак метка {94f}. d) основа ДЕЙСТВУЮЩАЯ {b, 33b, g, 34i, 35d, 46m, n, 521 с, 532e, 541a. b. 543c, A34Ab, c, d>:

ОСНОВА -(5A. > ДЕЙСТВУЮЩАЯ, с) ЕСЛИ ПРИВОДИМО выдающее ЗНАЧЕНИЕ уравнивает ПРИВОДИМО! выдающее ЗНАЧЕНИЕ 1 и ПРИВ0ДИМ02 выдающее ЗНАЧЕНИЕ2 {b. 33b. 34d. h} •

ЕСЛИ ПРИВОДИМО уравнивает ПРИВОДИМО! и ПРИВ0ДИМ02 Ши ЗНАЧЕНИЕ уравнивает ЗНАЧЕНИЕ! и ЗНАЧЕНИЕ2 -Cg>.

П ЕСЛИ ПРИВОДИМО уравнивас!

ПРИВОДИМО! и ПРИВОДИМО: {с. 522з>: если (ПРИВОДИМО! сеть (сильно).

ЕСЛИ (ПРИВ0ДИМ02) есть (ПРИВОДИМО); если (ПРИВОДИМО:) есть (сильно).

ЕСЛИ (ПРИВОДИМОМ есть (ПРИВОДИМО).

g)    ЕСЛИ ЗНАЧЕНИЕ уравмивгмм ЗНАЧЕНИЕ 1 и ЗНАЧЕНИЕ: {с}. если (ЗНАЧЕНИЕ!) есть<ЗНАЧШИЕ2>.

ЕСЛИ (ЗНАЧЕНИЕ) есть (ЗНАЧЕНИЕ!): если (ЗНАЧЕНИЕ!) есть (временное ЗНАЧЕНИЕ:).

ЕСЛИ (ЗНАЧЕНИЕ) есть (ЗНАЧЕНИЕМ: если (ЗНАЧЕНИЕ2) есть (временное ЗНЛЧЕНИЕ1).

ЕСЛИ (ЗНАЧЕНИЕ) есть (ЗНАЧЕНИЕ:).

h)*    ПРИВОДИМОЕ основное предложение:

основа в СРЕДЕ ПРИВОДИМАЯ <d>.

i)e    определяющее предложение: определяющее СЛОЙ последовательное

предложение ПРИВОДИМОЕ в СРЕДЕ {32а}: определяющее СЛОЙ выясняющее

предложение выдающее ВИД в СРЕДЕ {34с}

{Примеры:

Ь) ни» (xl); вещ s =0;

суммирование : для i до n ик (xl (i) >01 s »х1 (i)

I неположительное) к» выход не положи 1сльиос : печ (s) • веш s : - 0;

суммирование : для i до n ик (х! [i] > 0! s + :» х! [i)

I не положительное) кц выход не положительное : печ (s) *

суммирование : для i до пик (х I |i) >0is+:=xl [i|

I неположительное) кц выход не положительное : печ (s) •

для i до п цк (xl [i] >()ls + :exl [i) I неположительное) ки выход не положительное . печ (s) •

41

Страница 43

С.40 ГОСТ 27974-88

ПСЧ (s)

с) суммирование:    d)    печ (s)>

{Во многих случаях кортежи должны „уравнивайся" (3.2.1 .е). Замечания относительно уравнивания см. в 3.4.!.}

3.2.2. Семантика

a)    Выдачей послсдоватсльного-предложения в окружении Е является выдача исполнения.его кортежа или любого кортежа, исполняемого „вместо него" {5.4.4.23-, в окружении, „устанавливаемом” {Ь> вокруг Е согласно этому последовательному-предложенню; требуется, чтобы по области действия эта выдача не была младше данного Е.

b)    Окружение Е...устанавливаемое''

•    по окружению Е1, возможно не обусловленному, {которое определяет его область действия.>

•    вокруг окружения Е2. {определяющего его состав.>

•    согласно опре.'еляюшему-новые-?ПЛРЫ-ПОНЯТИЮ С. возможно отсутствующему, {которое задает его учасюк.}

•    «со значениями V......V„, возможно отсутствующими, {которые

возможно буду приписаны.>

определяется следу чпцим образом;

•    если Е1 не обуо жлено, то пусть Ы будет Е2;

•    Е младше Е1 . -власти действия и составлено из Е2 и нового участка, соответствую:; ю '?ПДРАМ'. если С присутствует, а иначе соответствующего 'ПУСТ' /;

Случай А: С есть он ре (яюшее-предложенке:

Для каждого сос ШяющегО определения-вида М эгого С, если они вообще есть.

•    сиена, составленная из

(i)    фактического-описателя этого М и

(ii)    окружения, необходимого для {7.2.2х> этого фактическогоопи-сатсля в Е, приписывается индикатору-вида этого М в Е;

Для каждого составляющего определения-метки L этого С. если они вообще есть,

•    сцена,составленная из

(i)    кортежз, для которого L - прямой наследник, и

(ii)    окружения Е,

приписывается идентификаюру-метки этого L в Е;

Если каждая 'ПАРА', заложенная в '?ПЛРЫ'. есть 'ИНФИКС для БИНАРНОГО' или ’СЛОВО для метки', то Е называется „нелокализую-шим" {см. 5.2.3.2.Ь};

Случай В: С есть задание-аргументов, эатлавие-дикла или спецификация Для i = 1.....п, где п - число 'ОПИСАНИЙ', заложенных в'?ПЛРьГ,

•    Vj приписывается {4.8.2.а> i-му составляющему определяющему-идентификатору этого С в Е, если они вообще есть, а иначе {в случае невидимого заглавия-цикла} некоторому определяющему-букву-алеф-идентификатору-выдаюшему-целое;

42

Страница 44

ГОСТ 27974-8* С.41

Если С служит заглавием-иикла или спецификацией, to Е является нелокализующим.

{В остальных случаях, т.с когда С отсутствует:

•    Е является локализующим (см. 5.2.3.2.Ь), но дальнейшее не определено.}

с) Выдэча W всякого кортежа С определяется следующим образом:

Если С содержит прямую наследную основу, за которой нет знакз-про-должать.

то

•    W - выдача э<ой основы; а иначе

•    исполняется описание или основа этого С, если они вообше есть;

•    W - выдача кортежа этого С.

{См. также 5.4.4.2. Случай А.}

3.3. Совместные и параллельные предложения ■ССовместиыс-пред-южсния допускают произвольное совмещение потоков действий. Параллельиыс-предложения обеспечивают, кроме того, уровни координации для синхронизации (10.2.4) этого совмещения.

Всякое совместное- или Парэллслыюе-предложение состоит из последовательности основ, разделенных символами-а-т*кже (. а именно .. . ”).и заключено н скобки или пару начало-конец; кроме того, всякое параллель-ное-ггредложение начинается с пар

Совместные-Предложения. но не параллельные-предложении, могут выдавать составные значения, составленные из выдач их составляющих основ. Примеры совместных-прсдложений. выдающих составные значения:

[ J целЧ- (1.4,9. 16. 25);

ст (цел иена, строк класс) велосипед : ■ (150. ..спортивный"). Пример параллельного-предложения, синхронизирующею еду и разговоры за сдой:

проц пуст есть, говорить; сема рот в уст 1: нар начало цк вниз рот; есть; вверх рог кц,

цк вниз рот; говорить; вверх ро! кц коней.>

3.3.1 .Синтаксис

a)    совместное предложение в СРЕДЕ

сильно выдающее пустое значение {SD, 551а>;

УПАКОВКА образа основ

сильно выдающих пустое значение в СРЕДЕ -СЬ}.

b)    образ основ ПРИВОДИМЫХ в СРЕДЕ {а, Ь, с, d. 34g>: если ПРИВОДИМОЕ уравнивает

ПРИВОДИМОЕ! и ПРИВОДИМОЕ2 {32е>. основа в СРЕДЕ ПРИВОДИМАЯ 1 {32d>,

9

Страница 45

С. 42 ГОСТ 27974-88

знак а также {94f>.

основа в СРЕДЕ ПРИВОДИМАЯ2 {32(1}либо образ основ ПРИВ0ДИМЫХ2 в СРЕДЕ Ш.

c)    параллельное предложение в СРЕДЕ

сильно выдающее пустое значение -{.5D, S51a>: знак параллельно {94f>,

УПАКОВКА образа основ

сильно выдающих пустос значение в СРЕДЕ <Ь}.

d)    совместное прелложеннс в СРЕДЕ

сильно выдаюшее МАССИВ из ВИДА -C5D, 5Sla>; если (МАССИВ) есть (векгор).

УПАКОВКА образа основ сильно выдающих ВИД в СРЕДЕ {Ь>; если (МАССИВ) есп. (векгорМАССИВОВ!),

УПАКОВКА образа основ

сильно выдающих МАССИВ 1 из ВИДА в СРЕДЕ -СЬ);

УПАКОВКА ПУСТО.

e)    совместное предложение в СРЕДЕ

сильно выдающее структуру

содержащую !ПОЛЯ ПОЛЕ в себе -C5D, 551а>:

УПАКОВКА образа !ПОЛЕЙ ПОЛЯ в СРЕДЕ Ш.

f)    образ ’ПОЛЕЙ ПОЛЯ в СРЕДЕ U, (У:

образ !ПОЛЕЙ в СРЕДЕ -Сf. g>, знак а также -C94f>, образ ПОЛЯ в СРЕДЕ {g>.

{ПОЛЕ :: СЛОВО для выборки ВИДА.}

g)    образ СЛОВА дни выборки ВИДА в СРЕДЕ -Сf>:

основа в СРЕДЕ сильно выдающая ВИД -C32d}.

h)*    запись структуры : совместное предложение

в СРЕДЕ сильно выдающее структуру содержащую 'ПОЛЯ ПОЛЕ в себе {е>.

i)*    запись массива : совместное предложение

в СРЕДЕ сильно выдаюшее МАССИВ из ВИДА {d>. j)* запись составного : совместное предложение

в СРЕДЕ сильно выдающее СОСТАВНОЕ -Cd, е>. к)* вакуум : УПАКОВКА ПУСТО.

{Примеры

а) (х :«1,у : = 2)    Ъ)х:-1,у:-2

с) пар (задача), задача2)    d) (1.2) (в    I ] веш    (1,2))

е) (1.2) (в компя (1,2))    f) 1,2    р) 1 >

{Записи-структур должны содержать по крайней    мерс два    образа-

ПОЛЯ.

Записи-массивов содержат нуль, две или более составляющих основ. Одно значение юже можно сделать массивом, например (1 : 1) цел v;= 123, но при этом используется приведение, называемое векторизацией (6.6.).}

44

Страница 46

■ •    ГОСТ 27974-88 C.4J

3.3.2. Семантика

«) Исполнение совместно! о-предложения-выдаюшею-пустое-значение или параллельного-предложения-в'ыдающего-пустое-эначение состоит в совместном исполнении его составляющих основ и выдает пустое.

Ь) Выдача W совместнот-предложения-выдаюшето-СОСТАВНОЕ С определяется следующим образом:

Если прямой наследник из С есгъ вакуум, то

{'СОСТАВНОЕ' сеть 'МАССИВ ИЗ ВИДА',} каждая граничная пара в паспорте выдачи W равна (1.0) {, и имеется один скрытый элемент, значение которого не существенно};

иначе

•    пусть V,, Vm будут {совместными} выдачами составляющих основ из С;

Случай А: ’СОСТАВНОЕ' ссгь 'структура содержащая !ПОЛЯ в себе':

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

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

•    W состоит из

(i)    паспорта ((1. т)),

(ii)    V,.....Vm;

Для i=l, ... т

V, - элемент, выбираемый по индексу (i) bW;

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

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

•    пусть паспортом {, например,} V| будет ((l,.u,).....(ln>Un))*

•    W состоит из

(1) паспорта ((l.m). (I,.и,(1пп));

(ii) элементов эгих V,,..., Vm;

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

•    элементом, выбираемым по индексу (i, i,, ..., in) в W, будет элемент, выбираемый по (ij,..., i„) в V,.

{Отметим, что в [,,| лит группа = („абв", „где") паспортом трехмерной выдачи W будет ((1, 2), (J, 1), (1, 3)). поскольку основы ,.абв” н „где” сначала векторизуются (6.6.), так что V, и V2 имеют паспорта

((1,1), (1,3)).}

3.4 Выбирающие предложения

{Выбирающис-прсддожения позволяют осуществлять динамический выбор среди различных путей вычисления. Выбор среди альтернатив (глав-ной-части-НЫЬИРАЮЩЬГО-прсдложсния и продолжения-ВЫБИРАЮЩЕГО-предложения) определяется результатом проверки некоторого истинностного значения, целого числа или вида Подвергаемое проверке значение вычисляется выясняющим преддожением прежде, чем делается выбор.

Всякое выбираюшее-по-логическому-предложение (или условное-прел-ложенне) имост форму

(х>0 1x1 0) в „кратком"оформлении.или

45

Страница 47

С.44 ГОСТ 27974-88

если х > 0 ю х иначе О всс в оформлении ..стиляI**: х > 0 - его выясняющес-предложение. то х - главная-часть-ВЫЬИРАЮ-ШЕГО-предложения. иначе О продолжсмие-ВЫБИРАЮ1ЦЕГО-предложе-ния: так как выбираюшие-предложения полностью замкнуты, то каждая из этих трех составляющих может иметь синтаксическую структуру кортежа. Выбираюшес-по-логнческому-прсдложению можно также укоротит», но

(х <01 х - х) или если х <0 го х - х все; гле опушенное продолженис-ВЫБИРАЮШЕГОпрелложения должно пониматься как иначе пропуск. С другой стороны, выбор можно повторить, написав:

(х>0Н + xl ■ х <01 I - xl 1) или если х > 0 то 1 ♦ х инее х < 0 то I - х иначе 1 все. и г.д.. что должно пониматься как

(х>01 1 + хI (х <01 I - хI 1)). ВАРИАНТНЫЕ-предложения, осуществляющие выбор по целому числу или виду, отличаются тем, что главная-часть-ВАРИАНТНОГО-предложеиия составлена из основ. Общий образен для них таков:

( .. |—    ,----1---) или

выб -- в — -........либо—-быв

Здесь выбор также можно повюрить, используя ливыб.

Компонентами выбираюшего-по-цслому-предложсния (или вариантно-го-прелложения) служат просто основы, но их должно быть по крайней мере две: выбор среди этих основ следует их текстуальному порядку.

Пример:

прон пуст работать, отдыхать, развлекаться; выб дел день; чит (день); день

в работать, работать, работать, работать, работать, отдыхать, развлекаться

либо печ < (.лня с номером”, день. „ нет в неделе")) быв

В выбираюшем-по-ПРЕЛСТАВИТЕЛЮ-прсдложении (или сопоставляю-шем-предпожении). которое проверяет виды, каждый ВЫБИРАЮЩИЙ-ва-риант имеет форму (описатель идентификатор): основа или (описатель): основа. Специфицируемый этим описателем вид сравнивается с (текущим) видом проверяемого значения; упомянутый идентификатор, если он есть, обеспечивает с полной надежностью в отношении синтаксической проверки вида доступ к значению, подвергнутому проверке, внутри данной основы. Использование вида 'ПРЕДСТАВИТЕЛЬ' обеспечивает требуемую свободу для вида проверяемого значения; кроме того, 'ПРЕДСТАВИТЕЛЬ' должен содержать вид каждой из спецификаций, иначе соответствующий ВЫБИРАЮЩИЙ-вариант не будет никогда выбран.

Пример:

вид мальчик = ст (цел возраст, вещ рост), вид девочка = ст (цел возраст, вещ вес);

46

Страница 48

ГОСТ 27974-88 С.45

проиоб (мальчик, девочка) новорожденный; выб новорожденный в (мальчик джон) : печ (poet от джон),

(девочка м>рм) : Печ (вес от мэри) все.}

{Иерархия блоков в условном-предложснин выглядит так:

---- если -------

| то |    |-иначе-1

- все -

и аналогично для остальных типов выбора. Таким образом, среда и окружение выясняющего-предложения продолжаю! иметь силу как в главной-ча-сти-ВЫБИРАЮЩЕГО-предложения, гак и в продолжении-ВЫБИРАЮЩЕ! О-нредложения. Однако обратная передача управления иэ главной-части-или продолжения-ВЫБИРАЮШЕГО-предложения невозможна, так как выясняю-(«ее-предложенно не может содержать определений-метки (. за исключением тех. которые содержатся во входящих в него ЗАКРЫТЫХ-нредложенинх). > 3.4.1. Синтаксис

A)    ВЫБИРАЮЩЕЕ :: выбирающее по логическому: ВАРИАНТНОЕ.

B)    ВАРИАНТНОЕ :: выбирающее по целому;

выбирающее по ПРЕДСТАВИТЕЛЮ

a)    ВЫБИРАЮЩЕЕ предложение в СРЕДЕI

ПРИВОДИМОЕ -C5D, 55 Ja. A341h. А349а>: старт ВЫБИРАЮЩЕГО ОФОРМЛЕННЫЙ {91а.а>.

ОФОРМЛЕННЫЙ состав ВЫБИРАЮЩЕГО предложения ПРИВОДИМЫЙ в СРЕДЕ 1 Ш. финиш ВЫБИРАЮЩЕГО ОФОРМЛЕННЫЙ -(91с.

b)    ОФОРМЛЕННЫЙ состав выбирающего по ВИДУ

предложения ПРИВОДИМЫЙ в СРЕДЕ 1 {а, 1>: определяющее СЛОЙ2 выясняющее предложение выдающее ВИД в СРЕДЕ 1 {с. •>.

ОФОРМЛЕННЫЕ альтернативы выбирающего по ВИДУ предложения ПРИВОДИМЫЕ в СРЕДЕ 1 сСЛОЕМ2 -Cd>.

c)    определяющее новые 7011ИСАНИЯ2 выясняющее

предложение выдающее ВИД в СРЕДЕ 1 {b, 35g>: кортеж с 70ПИСАНИЯМИ2 раскрыто выдающий ВИД в СРЕДЕ) с новыми ?ОПИСАНИЯМИ2 {32Ь>.

d)    ОФОРМЛЕННЫЕ альтернативы ВЫБИРАЮЩЕГО

предложения ПРИВОДИМЫЕ в СРЕДЕ2 <Ь>:

ОФОРМЛЕННАЯ главная часть ВЫБИРАЮЩЕГО

41

Страница 49

С.46 ГОСТ 27974 -8в

предложения ПРИВОДИМАЯ вСРЕДЕ2 {е}; если ПРИВОДИМОЕ уравнивает ПРИВОДИМОЕ! и ПРИВОДИМОЕ: {32е}, ОФОРМЛЕННАЯ главная часть ВЫБИРАЮЩЕГО предложения ПРИВОДИМАЯ I в СРЕДЕ2 -{с}, ОФОРМЛЕННОЕ продолжение ВЫБИРАЮЩЕЮ предложения ПРИВОДИМОЕ2 в СРЕДЕ2 {!},

e)    ОФОРМЛЕННАЯ главная часть ВЫБИРАЮЩЕГО

предложения ПРИВОДИМАЯ в СРЕДЕ2 -Cd>: вход в собственно ВЫБИРАЮЩЕЕ ОФОРМЛЕННЫЙ (91Ь.-), собственно выбор ВЫБИРАЮЩЕГО ПРИВОДИМЫЙ в СРЕДЕ2 {f, g, h>.

f)    собственно выбор выбирающий по логическому

ПРИВОДИМЫЙ в СРЕДЕ2 {с}:

определяющее СЛОЙЗ последовательное предложение ПРИВОДИМОЕ в СРЕДЕ2 {32а}.

g)    собственно выбор выбирающего по целому

ПРИВОДИМЫЙ в СРЕДЕ2 {с}:

образ основ ПРИВОДИМЫХ в СРЕДЕ2 {ЗЗЬ}.

h)    собственно выбор выбирающий по ПРЕДСТАВИТЕЛЮ

ПРИВОДИМЫЙ в СРЕДЕ2 {е, h>: выбирающий по ПРЕДСТАВИТЕЛЮ вариант ПРИВОДИМЫЙ в СРЕДЕ2 если ПРИВОДИМОЕ уравнивает ПРИВОДИМОЕ 1 и ПРИВОДИМОЕ? ^2е} выбирающий но ПРЕДСТАВИТЕЛЮ вариант ПРИВОДИМЫЙ! в СРЕДЕ2 -Ci>. знак а гакже {94f}, собственно выбор выбирающий по ПРЕДСТАВИТЕЛЮ ПРИВОДИМЫЙ? в СРЕДЕ2 {h>. j) выбирающий по ПРЕДСТАВИТЕЛЮ вариант ПРИВОДИМЫЙ в СРЕДЕ2 {h}: определяющая СЛОЙЗ спецификация ЗНАЧЕНИЯ в СРЕДЕ2 с СЛОЕМЗ {j, к, -}, если ЗНАЧЕНИЕ служит ПРЕДСТАВИТЕЛЕМ {64Ь}, основа в СРЕДЕ2 с СЛОЕМЗ ПРИВОДИМАЯ {32d}

{Здесь СЛОЙЗ :: новое СЛОВО для ВИДА; новое ПУСТО.} j) определяющая новое СЛОВОЗ дня ВИДА спецификация ВИДА в СРЕДЕЗ {i>: упакованное кратким определяющее новое СЛОВОЗ для ВИДА задание аргумента в СРЕДЕЗ {541с}. знак двоеточие {94Г}. к) определяющая новое ПУСТО спецификация ЗНАЧЕНИЯ «СРЕДЕЗ Ci>: упакованный кратким формальный описатель ЗНАЧЕНИЯ в СРЕДЕЗ {46Ь}, знак лвоеточме {94f}.

Страница 50

ГОСТ 27974-88С.47

1) ОФОРМЛЕННОЕ продолжение ВЫБИРАЮЩЕГО предложения ПРИВОДИМОЕ вСРЕДЕ2 {d>: выход собственно ВЫБИРАЮЩЕГО ОФОРМЛЕННЫЙ {91(1, ->, определяющее СЛОЙЗ последовательное предложение ПРИВОДИМОЕ вСРЕДЕ2 {32а}; продолжатель ВЫБИРАЮЩЕГО ОФОРМЛЕННЫЙ {91с, •}, ОФОРМЛЕННЫЙ состав ВЫБИРАЮЩЕГО2 предложения ПРИВОДИМЫЙ в 0РЕДЕ2 Ш, если ВЫБИРАЮЩЕЕ2 может следовать за ВЫБИРАЮЩИМ <гп>. т) ЕСЛИ выбирающее по ВИДУ2 может следовать за выбирающим по ВИДУ1 <1>: если (ВИД1) есть (ОБЫЧНОЕ).

ЕСЛИ (ВИД2) есть (ВИД1); если (ВИД1) начинается с (обьединенис),

ЕСЛИ (ВИД2) начинается с (объединение). п)ф выбирающее предложение ДЕЙСТВУЮЩЕЕ:

ВЫБИРАЮЩЕЕ предложение ДЕЙСТВУЮЩЕЕ {а}.

0)*    условное предложение ДЕЙСТВУЮЩЕЕ:

выбирающее по логическому предложение ДЕЙСТВУЮЩЕЕ {а>. р)* вариантное предложение ДЕЙСТВУЮЩЕЕ:

выбирающее по целому предложение ДЕЙСТВУЮЩЕЕ -Са>. q)* сопоставляющее предложение ДЕЙСТВУЮЩЕЕ: выбирающее по ПРЕДСТАВИТЕЛЮ предложение ДЕЙСТВУЮЩЕЕ -Са}

-{Примеры:

a)    (x>0lxlo) •

выб i в Принстон, Гренобль либо финиш быв * выбшт в (цел i) : печ (i), (вещ) : печ („нет”) быв

b)    х > 0 1x1 0    с)    х    > 0 • i • uir

d)    1х • Ixl 0

e)    Ix •

в Принстон, Гренобль • в (цел i) : печ (i), (вещ) : печ („нет”)

f)    х    g) принстон. тренобль

h) (цел i) : печ (I), (вещ) : печ („нет”)

1)    (цел i) : печ (i)    j) (дел i) :

k> (вещ) :

1) либо финиш - I :х < ОI — х I 0>

{Правило d показывает, почему 'ПРИВОДИМО вмлаюшне ЗНАЧЕНИЕ' должны ..уравниваться". Если, например, альтернатнвы-ВЫБИРАЮШЕГО предложения крепкие, то хотя бы одно из его главной-чэсти-ВЫБИРАЮШЕ-ГО-предпожения или продолжения-ВЫБИРАЮЩЕГО предложения должно быть крепким, в то время как другое может быть сильным. Так. например, в (pi х! пропуск) * (pi пропуск 1у) условное-преоложение (р!х/пропуск)

Страница 51

С.48 ГОСТ 27974 -83

уравнивается, целая I х крепким, а I пропуск сильным, в то время как (р Iпропуск! у) уравнивается, делая I пропуск сильным, а 1у крепким. Контрпример (р I пропуск! пропуск) * у показывает, что обе компоненты не могут быть сильными, поскольку иначе обозначение-операции + было бы неидентифицируемо.}

3.4.2. Семантика

а) Выдача W состава-ВЫБИРАЮЩЕГО-предпожения С в окружении Е1 определяется следующим образом:

пусть Е2 - окружение, устанавливаемое {3.2.2.Ь> вокруг £1 «мласно выясняющему-предложению этого С;

пусть V - выдача этою выясняюшсго-прсдможения в Е2;

W - выдача сцены, ..выбранной” -Cb> no V из С в Е2; трсбусюя, чтобы по облает действия выдача W не была младше Е1. Ь> Сиена S, „выбранная" по значению V из состава-ВЫБИРАЮШЕГО-предложения-выдающего-ЗНАЧЕНИЕ С в окружении Е2, определяется следующим образом:

Случай А: ’ВЫБИРАЮЩЕЕ' есть 'выбираюшее по логическому’ и V есть истина:

S - составляющая главная часть-ВЫБИРАЮШЕГО-пред-ложения этого С в Е2;

Случай В: 'ВЫБИРАЮЩИЕ’ есть 'выбирающее по целому’ и 1 < V < п

где п - число составляющих основ составляющего собствен-но-выбора-ВЫЬИРАЮЩЕГО этого С:

S есть V-я такая основа в Е2;

Случай С: ’ВЫБИРАЮЩЕЕ’ есть ’выбирающее по ПРЕДСТАВИТЕЛЮ’ и V приемлемо для {2.1.3.6.d> 'ЗНАЧЕНИЯ2'какой-нибудь составляющей спеиификации-ЗНАЧЕНИЯ2 D этого С если таких составляющих спецификаций несколько, то не определено. какая из них выбираекя в качестве D}:

S основа, следующая за этим D в некотором {нелокали-эуюшем (3.2.2.Ь) > окружении, устанавливаемом вокруг Е2 cm дасио Dc V;

Остальные случаи ■£. когда значение V отлично от указанных}:

Если С содержит составляющее продолженис-ВЫБПРАЮЩЕ-ГО предложения О, то S есть О а Е2;

иначе S есть пропуск-выдаюший ЗНАЧЕНИЕ в Е2.

3.5. Циклические предложения

{Циклические-предложения используются для динамического повторе-»ия одной и той же последовательности инструкций. Число таких повторе-•ий регулируется или некоторой конечной последовательностью равноот-тоящих целых чисел, или каким-либо проверяемым каждый раз условием, ли и тем и другим.

Пример 1:

цел фак :* 1;

чля i от п шаг - 1 до 1

Страница 52

ГОСТ 27974-88 С.49

ик фа к Х:= i кц Пример 2:

цела, h; миг ((а, Ь)> прагм здесь а > ОЛ b >0 прагм; цел q -=0. г :sa:    '

пока г > b прагм здесь a*bXq + rA0<r прагм ик (q + :* 1. г —:*Ь) кц прагм здесь a = bXq*rAO<rAr<b прагм (см. 9.2.1 де объясняются прагматы) ,

Иденшфикатор переменной цикла, например i в примере I, определен пая всем циклом. Вводимые условием-цикла определения действуют также и в теле-цикла.

Если идентификатор переменной цикла не применяется в цикле, то заглавие-цикла можно опустить. Можно опустить настройку-нижнего-предела от I: точно так же можно опустить и шаг J. Нааройку-верхнсго-предола можно опустить, если не требуется проверять конечное значение переменной цикла Можно опустить и условие-цикла пока истина Например, вместо для i от I шаг I до п пока истина цк печ (.л") кц можно написать

до п цк печ („а") кц Иерархия блоков выглядит так-

3.5.1. Синтаксис

А) ЦИКЛ :: нижний предел; шаг; верхний предел.

a)    циклическое предложение в СР1ШЕ1

сильно выдающее пустое значение {5D, 551а>: ОФОРМЛЕННОЕ заглавие цикла определяющее новое СЛ0В02 дли целого в СРЕЛЕ1 {Ь>.

ОФОРМЛЕННАЯ настройка цикла в СРЕДЕ 1 Сс>. ОФОРМЛЕННЫЙ цикл с СЛО ВО М2 для целого в СРЕДЕ I {е>

b)    ОФОРМЛЕННОЕ заглавие цикла определяющее

новое СЛ0В02 для целого в СРЕДЕ I {а>: знак для ОФОРМЛЕННЫЙ {94g, ->, определяющий СЛ0В02 идентификатор в СРЕДЕ 1 с новым СЛОВОМ2 для целого выдающий целое {48а>:

51

Страница 53

C.SO ГОСТ 27974-88

если (СЛ0В02) есть (буква алеф). ПУСТО.

c)    ОФОРМЛЕННАЯ настройка цикла я СРЕЛЕ1 {а}-.

возможно ОФОРМЛЕННАЯ

настройка нижнего предела в СРЕЛЕ {d}. возможная ОФОРМЛЕННАЯ настройка шага в СРЕДЕ 1 {d>. возможно ОФОРМЛЕННАЯ настройка верхнего предела в СРЕДЕ 1 {d}.

d)    ОФОРМЛЕННАЯ настройка ЦИКЛА в СРЕДЕ 1 {с}: знак ЦИКЛ ОФОРМЛЕННЫЙ -C94g, •>,

основа в СРЕДЕ1 раскрыто выдающая целое {32d>. с) ОФОРМЛЕННЫЙ ЦИКЛ с ОПИСАНИЕМ2 в СРЕДЕ 1 {а}: ОФОРМЛЕННЫЙ подчиненный условию цикл в СРЕДЕ! с новым ОПИСАНИЕМ2 {f>;

ОФОРМЛЕННОЕ тело цикла в СРЕДЕ! с новым ОПИСАНИЕМ2 <h>.

f)    ОФОРМЛЕННЫЙ подчиненный условию цикл в СРЕДЕ2 {с}

ОФОРМЛЕННОЕ определяющее СЛОЙЗ условие цикла в СРЕДЕ2 {g},

ОФОРМЛЕННОЕ тело цикла в СРЕДЕ2 с СЛОЕМЗ {h>.

g)    ОФОРМЛЕННОЕ определяющее СЛОЙЗ

условие цикла в СРЕДЕ2 {f}: знак пока ОФОРМЛЕННЫЙ {94g, •>, опрсаеляюшее СЛОЙЗ выясняющее предложение выдающее логическое в СРЕДЕ2 {34с, -У.

h)    ОФОРМЛЕННОЕ тело цикла в СРЕДЕЗ {е, f >:

знак цикл ОФОРМЛЕННЫЙ {94g, •}. определяющее СЛОЙ4 последовательное предложение сильно выдающее пустое значение в СРЕДЕЗ £32а>, знак конец цикла ОФОРМЛЕННЫЙ {94g, -У {Примеры:

a)    для i пока i < п цк задача) ки • До п цк задача!; задача2 кц

b)    для i

c)    от -5 до *5

d)    от —5

e)    пока i <п ик задача1 ки • цк задача 1; задача2 ки £) пока i < п ик задача!; задача2 ки

g)    пока i < п

h)    цк задача1; задача2 ки}

3.5.2. Семантика

Циклическое-предложенис С в окружении Е1 исполняется посредством следующих шагов:

Шаг I: Все составляющие настройки-ЦИКЛА из С, если они вообще есть, исполняются совмеоно с Е1;

пусть f - выдача составляющей настройки-ннжяею-предела из С, если она есть, а иначе f будет 1;

Страница 54

ГОСТ 27974-83 C.SI

пусть Ь - выдача составляющей настройки-шага из С, если она есть, а иначе b будет 1;

пусть t - выдача составляющей настройки-всрхнего-предсла из С, если она есть, а иначе пусть t отсутствует;

пусть Е2 будет {нелокализующим (3.2.2.Ь) } окружением, устанавливаемым вокруг HI согласно заглавию-цикла-определяюшему-новое-СЛ0В02-для целого из С и с целым числом f;

Шаг 2. Пусть i - целое число, доступное {2.1.2л} для 'СЛ0ВА2 для целого' внутри участка окружения Е2;

Если t не отсутствует, то

если b < 0 и i < t или если b > 0 и i > t, то С в El {завершается и> выдаст пусто;

{иначе предпринимается шаг 3; >

Шаг 3: Пусть окружение ЕЗ и истинностное значение w определяются следующим образом .

Случай А: С не содержит составляющего условия-цикла:

ЕЗ есть Е2; w есть истина:

Случай В: С содержит составляющее условие-цикла р

ЕЗ есть {возможно нелокализуюшее (3.3.2.Ь) Окружение, устанавливаемое вокруг Е2 согласно выясняющему-предложению из Р;

w — выдача этого выясняющего-предложения в ЕЗ;

Шаг 4:

Если w - истина, го

составляющее тело-цикла данного С исполняется в ЕЗ; 'СЛ0В02 для целого' получает доступ к i + b внутри участка окружения Е2;

шяг 2 предпринимается снова; иначе

С в Е1 {завершается и} выдает пустое. {Цикличсское-иредложение

для i от ul шаг и2 до иЗ пока условие цк действие ки эквивалентно. таким обрээом, эамкнугомупредложению-выдаюшему-пустое-значение начало цел f :* u 1 . цел b • и2. t = иЗ. шаг2:

если (b>OAf<t)V(b<0Af>t)Vb-0 то цел i = f; если условие

то действие; f ♦ b; на шаг2 все все

конец.

S3

Страница 55

С .52 ГОСТ 27974-88

Разумеется, такой эквивалентности может не быть, если данное цикличс-ское-предпожение содержит локальные-генераторы кли некоторые из использованных обозначений-операций не идентифицируют обозначения-операций в стандартной языковой обстановке (10) .}    •

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

{Описания служат дяя того, чтобы

вводить новые индикаторы, например, идентификаторы, определять их виды или приоритеты и

приписывать этим индикаторам значения и инициализировать переменные.}

4.1.    Описания

4.1.1.    Синтаксис

А) ОБЪЕКТ ::вид; приоритет; тождество для ПРОБИЛА; переменная как имя ПРОВИДА; операция как ПРОВИЛ;

ПАРАМЕТР; поле вида ВИД среди ПОЛЕЙ.

{ПРОВИД :: процедура; ВИД.}

a)    описание ЮПНСАНИЙ в СРЕЛЕ {а. 32Ь}:.

описание ОБЪЕКТОВ через ЮПИСАНИЯ в СРЕДЕ {42а. 43а. 44а. е. 45а. ->; если (.’ОПИСАНИЯ) есть (ЮПИСАНИЯ 1 ЮПИСАНИЯ2). описание ОБЪЕКТОВ через ЮПИСАНИЯ 1 в СРЕДЕ {42а, 43а, 44а. с, 45а, •}, знак а также {94f}, описание ЮПИСАНИЙ2 в СРЕДЕ {а}.

b)    групповое определение ОБЪЕКТОВ через !IIАРЫ ПАРУ

в СРЕДЕ {Ь, 42а, 43а. 44а. е. 45а, 46е, 541е}: групповое определение ОБЪЕКТОВ через !ПАРЫ в СРЕДЕ ■СЬ, с}, знак а также {94f}.

групповое определение ОБЪЕКТА через ПАРУ в СРЕДЕ {с}.

c)    групповое определение ОБЪЕКТА через ПАРУ

в СРЕДЕ {Ь. 42а, 43а. 44а,е, 45а, 46«, 541е}: определение ОБЪЕКТА через ПАРУ в СРЕДЕ {42b, 43b, 44c,f, 45с, 46f, 541 f, -}.

d)*    определение ПАРЫ определение ОБЪЕКТА через ПАРУ

в СРЕДЕ {42b, 43b,44с, f, 45с, 46{, 54If}; определение мегки через ПАРУ в СРЕДЕ {32с}

{Примеры:

a)    вид г = имя веш, s = лит • прноV = 2, А = 3 •

цел m ■ 40% • вещ х, у •

опу= (лог a, b) лог : (а I истина! Ь)

b)    г = имя вещ, s » лит • V= 2. Д = 3 • m = 4096 •

х. у • V* (лог а, Ь) лог ; (а Iистина! Ь)

c)    г «имя вещ • Vе 2.* m = 4096 • х •

54

Страница 56

ГОСТ 27974-88 С.53

V ■ (nor а. b) лог : (а Iистина! Ь) >

4.1.2. Семантика

Исполнение описания состоит в совместной исполнении его описания-ОБЪЕКТОВ и его описания, если оно есть. {Таким образом, все описания-ОБЪЕКТОВ, разделенные знаками-а-также. исполняются совместно.}

4.2 О п и с а II и я видов

{Описания-видов задают определяющие-индикаторы-вида. играющие роль сокращений для описателей, построенных из более примитивных компонент, или из других описа!слсй. или даже из самих себя.

Например,

вид массив = (т. п) веш и

вид книга = ст (строк текст, имя книга следующая)

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

4.2.1,    Синтаксис

a)    описание видов через (ОПИСАНИЯ в СРЕДЕ {41а} знак вид {94d}.

групповое определение видов через .'ОПИСАНИЯ в СРЕДЕ {41Ь.с}:

b)    определение вида через ИНДИКАНТ

для ЗНАЧЕНИЯ НОМЕР в СРЕДЕ {41с}: если (ИНЛИКАНТ) есть (выделенное СЛОВО) или (СРЕДА) есть (новое с СЛОЕМ), определяющий ИНЛИКАНТ индикатор вида в СРЕДЕ выдающий ЗНАЧЕНИЕ НОМЕР -С48а}, знак определяется как {94d},

фактический описатель ЗН \''ГЧИЯ НОМЕР в СРЕДЕ -Сс}.

c)    фактический описатель ЗНАЧЕНИЯ НОМ ЕР 1 в СРЕДЕ {Ь}:

если (НОМЕР 1) есть (I), фактический определитель ЗНАЧЕНИЯ в СРЕДЕ { 46с, d, g, h. о, s, -}; если (НОМЕР 1) есть (Н0МЕР2 I), использующий ИНДИКАНГГ2 индикатор вида в СРЕДЕ выдающий ЗНАЧЕНИЕ Н0МЕР2 {48Ь}

{Примеры:

a)    вид г я имя вещ, s " лит •

b)    г = имя веш    с)    имя    вещ    • пит

{Использование 'НОМЕРА' исключает круговые цепочки определений-вилов, такие, как виде = Ь,Ь=а.

Определяющнс-?РАЗМЕРНОЕ-СТАНДАРТНОЕ-индикэторы-видов могут описываться только в стандартном-всгупленки, где среда имеет фор-v 'новое с СЛОЕМ' (lO.l.l.b).}

4.2.2.    Семантика

Исполнение описания-видов {не требует действия, не вылае! эиачсь

Страница 57

С. 54 ГОСГ 27974-88

тем самым } завершено.

4.3 Описание приоритетов

{Описания-приоритетов используются для определения приоритета обозначений-операций. Существуют приоритеты от ! до 9.

Так как обозначения-унарных-операций фактически имеют только один уровень приоритета, более высокий, чем у всех обозначений -бинарны х-операний, то описания-нриоригстов для обозначений-унарных-онерацнй не нужны. >

4.3.1.    Симтака/с

a)    описание приоритетов через ЮПИСАНИЯ в СРЕДЕ {41а}:

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

b)    определение приоритета через ИНФИКС для

приоритета ПРИОРИТЕТ в СРЕДЬ {41с}: определяющее ИНФИКС обозначение операции в СРЕДЕ выдающее приоритет ПРИОРИТЕТ {48а}. знак определяется как C94d>. знзк ЦИФРА {94Ь}, если ЦИФРА счИ1ает ПРИОРИТЕТ {с, d>.

{ЦИФРА :: цифра нуль: цифра один; цифра два; цифра три: цифра четыре; цифра пять: цифра шесть: цифра семь: цифра восемь: цифра девять.}

c)    ЕСЛИ ЦИФРА 1 считает ПРИОРИТЕТ 1. {Ь. с}:

ЕСЛИ ЦИФРА2 считает ПРИОРИТЕТ {с, d}, если (цифра один цифра два цифра три цифра четыре цифра пять цифра шесть цифра семь цифра восемь цифра девять) содержит (ЦИФРУ2 ЦИФРУ I).

d)    ЕСЛИ цифра один считает I -{Ь. с} : ЕСЛИ истина.

{Примеры:

а) нрио Vе 2, А *3 b)V = 2>

4.3.2.    Семантика

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

4.4. Описания идентификаторов

{Описания-идентификаторов задают определяюшие-идентификаторы-вылающие-ВИД при помоши либо описаний-тождеств, либо описаний-переменных

Примеры:

вещ пи = 3.1416 •

вещ точность := 0.05.

Второй пример, который служит описанием-переменной, можно рассматривать как эквивалентную форму для описания-тождества имя веш точность = лок веш := 0.05.

Исполнение описаний-идентификаторов вызывает приписывание значений их идентификаторам; в приведенных выше примерах 3.1416 приписы-

56

Страница 58

ГОСТ 27974-8* С. 55

вается пи и новое локальное имя, именующее 0.05, приписывается стм.}

4.4.1. СинтакЛс

точно-

A)    ПРОВИД :: процедуре; ВИЛ

B)    ЛОКАЛИЗУЮЩИЙ :: локальный, глобальный: первичный.

a)    описание тождеств и»я ПРОБИЛА

через 'ОПИСАНИЯ в СРЕДЕ {41а}: формальный описатель ПРОВИДА в СРЕДЕ {Ь. 46Ь>, групповое определение тождеств для ПРОВИДА через ^ОПИСАНИЯ в СРЕДЕ {41 Ь, с}.

b)    ЛЮБОЙ описатель процедуры

в СРЕДЕ {а,523Ь>: знзк процедура {94d>.

c)    определение тождества для ПРОБИЛА

через СЛОВО для ВИДА в СРЕДЕ {41с}: определяющий СЛОВО идентификатор в СРЕДЕ

выдающий ВИЛ {48а}, знак определяется как {94d}, источник вида ВИЛ для ПРОБИЛА в СРЕДЕ {d}.

d)    источник вида ВИД для ПРОБИЛА в СРЕДЕ {с, f, 45с}:

если (ПРОВИЛ) есть (ВИД).

источник вида ВИД в СРЕДЕ {521с}; если (ПРОБИЛ) есть (процедура), гекст процедуры в СРЕДЕ выдающий ВИД {541а, Ь, -}.

e)    описание переменных как имен ПРОВИДА

через ’ОПИСАНИЯ в СРЕДЕ {41а}: задание ЛОКАЛИЗУЮЩЕГО генератора в СРЕДЕ выдающею имя ПРОВИДА {523Ь}. групповое определение переменных как имен ПРОБИЛА через [ОПИСАНИЯ в СРЕДЕ {41Ь, с}.

О определение переменных как имен ПРОВИДА

через СЛОВО для имени ВИДА в СРЕДЕ {41с}: определяющий СЛОВО идентификатор в СРЕДЕ

выдающий имя ВИЛА {48а}, знак присвоить {94с}. источник вида ВИЛ для ПРОВИДА в СРЕДЕ {d}; если (ПРОБИЛ) есть (ВИД), определяющий СЛОВО идентификатор в СРЕДЕ выдающий имя ВИДА {48а}. g)* описание идентификаторов:

описание тождеств для ПРОВИДА через 'ОПИСАНИЯ в СРЕДЕ {а}; описание переменных как имен ПРОБИЛА через {ОПИСАНИЯ в СРЕДЕ {с}.

{Примеры:

a)    цел m ■ 4096 • проц г 10 ■ вещ печ X 10

b)    проц    с)    ш    - 4096

d) 4096 • веш : печ X 10

57

Страница 59

С. 56 ГОСТ 27974 -88

е) вещ х, у • прои рр вещ : печ X 10 О рр вещ : печ X 10 • х}

4.4.2. Ссмантка

a)    0»исанис-юждсс1в D исполняегся следующим образом:

• совместно исполняются сосивляющие источники-для ПРОВИДА из D:

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

выдача V нсточника-для-ПРОВИДА данного D1 приписывается {4.8.2.а> опрслсляюшсму-идентификаюру этого D1.

b)    Описание-переменных D исполняется следующим образом:

задание-генератора {5.2.3.l.b> С этого D и все нсточники-для-ПРО-ВИДА, если они есть, составляющих опреаелений-переменных из D исполняются совместно;

Для каждого составляющего определения-лсрсменной-через СЛОВО-для имени-ВИДА D1 из D,

пусть W1 - какой-то „вариант” {с} для ’ВИДА' значения, именуемого выдачей N данного С;

пусть N1 - вновь созданное, ими, равное N по обласги действия и именующее W1;

если N1 - составное имя -С2.1.3.2.Ь>. то N1 снабжается поды-менами -С2.1.3.З.с, 2.1.3.4.g>;

N1 приписывается -С4.8.2.а} определяющему-идентификатору данного D1;

выдача исгочника-для-ПРОВИДА. если он есть, этого D1 присваивается -С5.2.1 -2.Ь> N1.

■СФактический-описатель, общий для нескольких определений-переменных, исполняется только однажды. Например, исполнение цел m := 10; [1 : m 1) цел р, q; печ (т) вызовет печать 11, а не 12; кроме того, р и q будут приписаны два новых локальных имени, именующих массивы с паспортами ((I, 11)) и неопределенными элементами.}

c)    „Вариантом" значения V дня вида М будет некоторое значение W, приемлемое для -С2.1.3.6.d> М н определяемое следующим образом:

Случай А: М есть 'структура содержащая !ПОЛЯ в себе':

Для каждого ’СЛОВА для выборки ВИДА', заложенного в эти 'ИЮЛЯ',

полем, выбираемым по 'СЛОВУ' в W, будет вариант для 'ВИДА' тою ноля, которое выбирэется по СЛОВУ в V;

Случай В: М есть '’ПОДВИЖНЫЙ МАССИВ из ВИДА1':

паспортом значения W служит паспорт данного значения

V;

каждый элемент этого W есть вариант для 'ВИДА Г некоторого элемента значения V;

Остальные случаи:

W - любое значение, приемлемое для М.

58

Страница 60

ГОСТ 27974-88 С.57

d) Выдачей фактического-описателя-процедуры является какая-нибудь процедура {, вид которой не существен}.

4.5.    Описания операций

{Описания-операций залают опредсляюшис-обозначсния-операций Пример:

опшс= (веша. Ь) веш : (ЗХаСЬ I а I Ь).

В отличие от случая, например, описаний-идентификаторов, в одну и iy же зону могут входить более одного описания-операции с одним и 1ем же знаком-АФФИКСА; например, предыдущий пример прекрасно может находиться в одной зоне с оптс= (компя маккарти,джон) компл: (псч<.5 I маккарти! джон), в этом случае обозначение-операции тс называется ..перегруженным’’.}

4.5.1.    Синтаксис

A)    ОПЕРАЦИЯ :: ДВУМЕСТНАЯ; ОДНОМЕСТНАЯ.

B)    АФФИКС :: ИНФИКС; ПРЕФИКС.

a)    описание операций как ПРОВИДА

через 'ОПИСАНИЯ в СРЕДЕ {41а}: знак операция {94d}. формальный план ПРОВИДА в СРЕДЕ {Ь, 46р, -},

групповое определение операций как ПРОВИДА через 'ОПИСАНИЯ в СРЕДЕ {4lb, с}.

b)    формальный план процедуры в СРЕДЕ {в}: ПУСТО.

c)    определение операции как ПРОВИДА через

АФФИКС ДЛЯ ОПЕРАЦИИ в СРЕДЕ {41с}: определяющее АФФИКС обозначение операции в СРЕДЕ выдающее ОПЕРАЦИЮ {48а}, знак определяется как {94d},

источник вида ОПЕРАЦИЯ для ПРОВИДА в СРЕДЕ {44d}. {Примеры:

а) он V= (лог а. Ь) лог : (а I истина! Ь) с) V= (лог а. Ь) лог : (а I истина! Ь)}

4.5.2.    Семантика

a)    Исполнение описания-операций состоит в совместном исполнении его составляющих определений-операций.

b)    Определение-операции исполняется приписыванием {4.8.2.а} его опрсделяющему-обозначению-операции процедуры, выдаваемой его источ-ником-для-ПРОВИЛА.

4.6.    Описатели

{Описатели специфицируют виды. Всякий описатель является или определителем, явно описывающим какой-то вид. или используюшим-индикато-ром вида, который употребляется вместо некоторого определителя через описание-вида. Определители формируются из символов пуст, цел, веш, лог и лит (10.2.2) при помощи других символов, а именно имя, ст. ( J, проц и об. Например, проц (вещ) лог специфицирует вил 'процедура с параметром вида вещественное вырабатывающая логическое'

59

Страница 61

С.58 ГОСТ 27974-88

Фактические-описатели, применяемые главным образом » генераторах, гребу ют. чтобы в них были заданы границы-Формальные-описатели, применяемые главным образом в формальных-параметрех и ядрах, не требуют границ. Следующий за имя описатель всегда 'виртуальный' и может, поскольку подвижность есть свойство имен, специфицировать подвижный МАССИВ из ВИДА'. Так как в генераторах фактические-описатели неявно следуют за 'имя', они также могут специфицировав 'подвижный МАССИВ из ВИДА'.}

4.6.1. Синтаксис

A)    ЛЮБОЙ :: НЕФОРМАЛЬНЫЙ; формальный.

B)    НЕФОРМАЛЬНЫЙ :: виртуальный; фактический.

C)    ’ЗНАЧЕНИЯ ЗНАЧЕНИЕ; 'ЗНАЧЕНИЯ ЗНАЧЕНИЕ.

a)    НЕФОРМАЛЬНЫЙ описатель ЗНАЧЕНИЯ

в СРЕДЕ -Сс, с, g,h, 523а, b>:

НЕФОРМАЛЬНЫЙ определитель ЗНАЧЕНИЯ в СРЕДЕ { с, d. g. h, о. s, использующий ИНДИКАТ индикатор вида в СРЕДЕ выдающий ЗНАЧЕНИЕ НОМЕР {48Ь. •}

b)    формальный описатель ЗНАЧЕНИЯ

в СРЕДЕ {е. h. р, г. u, 34к,44а, 541а, Ь.е, 5*1а}: если ЗНАЧЕНИЕ фиксирует ЗНАЧЕНИЕ {47а, Ь, с, формальный определитель ЗНАЧЕНИЯ в СРЕДЕ {c.d. h.o.s.-}; использующий ИНДИКАТ индикатор вида в СРЕДЕ выдающий ЗНАЧЕНИЕ! НОМЕРАМ если ЗНАЧЕНИЕ фиксирует ЗНАЧЕНИЕ! {47а, Ь, с,-}.

c)    ЛЮБОЙ определитель имени ВИДА в СРЕДЕ -Са, Ь, 42с}:

знак имя {94d},

виртуальный описатель ВИДА в СРЕДЕ {а}.

d)    ЛЮБОЙ определитель структуры

содержащей ИЮЛЯ в себе в СРЕДЕ {а, Ь, 42с}: знак структура {94d}, упакованный кратким ЛЮБОЙ образ 'ПОЛЕЙ среди ИЮЛЕЙ в СРЕДЕ Сс).

<Й ЛЮБОЙ образ 1ПОЛЕЙ1 среди .'ПОЛЕЙ в СРЕДЕ { d, е>:

ЛЮБОЙ описатель ВИДА в СРЕДЕ {а, Ь}, групповое определение полей вида ВИД среди !ПОЛЕЙ через 'ПОЛЯ! в СРЕДЕ {41Ь,с}; если (!ПОЛЯ1) есть (1ПОЛЯ2 1ПОЛЯЗ),

ЛЮБОЙ описатель ВИДА в СРЕДЕ -Са. Ь}, групповое определение полей вида ВИД среди 1ПОЛЕЙ через !ПОЛЯ2 в СРЕДЕ {41Ь, с}, знак а также {94f},

ЛЮБОЙ образ М10ЛЕЙЗ среди .'ПОЛЕЙ в СРЕДЕ {с}, f) определение поля вида ВИД среди 1ПОЛЕЙ

через СЛОВО дня выборки ВИДА в СРЕДЕ {41с}:

60

Страница 62

ГОСТ 27974-88 С.59

определяющий СЛОВО указатель поля вила ВИД среди ИЮЛЕЙ {48с}.

g)    НЕФОРМАЛЬНЫЙ определитель подвижного МАССИВА

из ВИЛА в СРЕДЕ {а, 42с} знак подвижное {94d}, НЕФОРМАЛЬНЫЙ описа1ель МАССИВА из ВИДА в СРЕДЕ U>.

h)    ЛЮБОЙ определитель МАССИВА из ВИДА в СРЕДЬ -Са, Ь, 42с}:

индексованный ОФОРМЛЕННЫЙ

ЛЮБОЙ диапазон МАССИВА в СРЕДЕ {j, j, k, I},

ЛЮБОЙ описатель ВИЛА в СРЕДЕ {а. Ь}.

i)    ЛЮБОЙ диапазон вектора МАССИВОВ в СРЕДЕ <h. i}:

ЛЮБОЙ диапазон вектора в СРЕДЕ {j, k, I}, знак а 1акжс {94f}.

ЛЮБОЙ диапазон МАССИВА в СРЕДЕ -Ci, j. k. 1} j) фактический диапазон вектора в СРЕДЕ £h. i}:

нижняя граница в СРЕДЕ -Cm}, знак вплоть до <94f}, верхняя граница в СРЕДЬ -Сп}; верхняя |раница в СРЕДЕ {п}. к) виртуальный диапазон вектора в СРЕДЕ {h, i}: возможный знак вплоть до {94f}.

1) форх1альный диапазон век юра в СРЕДЕ {h, i}: возможный знак вплоть до {94f}. m) нижняя транши в СРЕДЕ {j, 532f, g}:

основа в СРЕДЕ раскрыто выдающая целое {32d}. п) верхняя граница в СРЕДЕ {j. 532f}:

основа в СРЕДЕ раскрмго выдающая целое {32d}. о) ЛЮБОЙ определись ПРОЦЕДУРЫ в СРЕДЕ {а, Ь, 42с}: знак процедура <94d},

формальный план ПРОЦЕДУРЫ в СРЕДЕ {р}. р) формальный план процедуры 7ПАРАМЕТРИЗОВАННОЙ вырабатывающей ЗНАЧЕНИЕ в СРЕДЕ {о. 45а}: если ^ПАРАМЕТРИЗОВАННАЯ) есть (ПУСТО).

формальный описатель ЗНАЧЕНИЯ в СРЕДЕ {Ь}; если ^ПАРАМЕТРИЗОВАННАЯ) есть (с ПАРАМЕТРАМИ), упакованный кратким групповой описатель ПАРАМЕТРОВ в СРЕДЕ {q. г}, формальный описатель ЗНАЧЕНИЯ в СРЕДЕ {Ь}. q) групповой описатель ПАРАМЕТРОВ ПАРАМЕТРА в СРЕДЕ {p. q}: групповой описатель ПАРАМЕТРОВ в СРЕДЕ {q, г}, знак а также {94f}, групповой описатель ПАРАМЕТРА в СРЕДЕ {г}, г) групповой описатель

параметра вида ВИД в СРЕДЕ {p. q}: формальный описатель ВИДА в СРЕДЕ -СЬ}.

61

Страница 63

С.60 ГОСТ 27974-88

sl ЛЮБОЙ определи (ель объединения !ОБЫЧНЫХ|

ОБЫЧНОГО! воедино в СРЕДЕ {а. Ь. 42с>: если неверно «по НУС ГО

родс1венно!ОБЫЧИЫМ1 ОБЫЧНОМУ1 {47f>. знак объединение {‘Md}. упакованный кратким групповой описатель !ЗНАЧЬНИЙ в СРЕДЬ -Ct. и}, если !ЗНАЧЕНИЯ сплетены с ЮБЫЧНЫМИ2 <47g> и укрыIыс ЮБЫЧНЫЫ ОБЫЧНОЫ входят н укрытые ЮБЫЧНЫЕ2 {731} и укрытые !ОБЫЧНЫЕ2 Входят в укрытые ЮБЫЧНЫЫ ОБЫЧНОЕ! -С731.ni>. t) групповой описатель ’ЗНАЧЕНИЙ ЗНАЧЕНИЯ в СРЕДЕ -Cs. t> групповой описатель !ЗНАЧЬНИЙ в СРЕДЬ {t. u>. знак а также {94f>.

групповой описатель ЗНАЧЕНИЯ в СРЕДЬ {и}, и) групповой описатель ЗНАЧЕНИЯ в СРЕДЕ -С s. t >: формальный описатель ЗНАЧЕНИЯ в СРЕДЕ {Ь}

■С Примеры:

а) [I ; п] вещ • лицо    Ь)    [    )    веш • арок

с) имя »еш

J) а (цел возраст, имя лицо отец, сын)

e)    имя лицо отец, сын •

цел возраа. имя лицо отец, сын

f)    возраст    g) подв [1 : п]    веш

hi [1 : m, 1    п]    веш    i) I : m, 1: n

j) 1 : n    k) :

I) :    m) I

n) n    o) npou (лог, лог)    лог

p) (лог. лог) лог    q) лог. лог

г) лог    $)    об (цел, лит)

t) цел, лит    и) цел}

{О факткческил-описателях-ЗНАЧЬНИЯ-НОМЕР см. 4.2.!с, о фактиче-ских-описателях-проиедуры см. 4.4.1.Ь.

Не существует описателей, специфицирующих такие виды, как 'объединение целого обьсдинсиия целого вещественного воедино воедино' или 'объединение целого вещественного целого воедино*. В действительности описатели об (цел, об (цел. вещ)) и об (цел. вещ. цел) можно написать, по в обоих случаях специфицируемым видом буде1 'объединение целою вещественною воедино’ (. что с таким же успехом можно выписать и как ’объединение вещественного целого воедино') >

4.6.2. Семантика

62

Страница 64

ГОСТ 27974 -88 C.6I

a)    Выдача ^'факгического-описагеля-ВИДА D в окружении Е определяется следующим образом:

Если 'ВИЛ' ecib некоторое 'СОСТАВНОЕ', ю

пусть D1 в Е1 „развертывается" {с} из D в Е;

W - выдача {.определителя} D1 в {локализующем, см. 3.2.2.Ь,} окружении, устанавливаемом по Е и вокруг Е1; иначе

• W . любое значение {приемлемое для ’ВИДА'}.

b)    Выдача W фактического-определителя-СОСТАВНОГО D определяется следующим образом:

Случай А: 'СОСТАВНОЕ' является 'структурой содержащей !ПОЛЯ в себе':

совместно исполняются составляющие описатели данного D;

каждое поле выдачи W есть вариант -(4.4.2.с>

(i)    выдачи последнего составляющею описателя ВИДА из D, находящеюся перед составляющим определяюшим-укаэа-тслем-поля этою D, выбирающим {2.1.5.g} данное поле

(ii)    ДЛЯ данного 'ВИДА';

Случай В: 'СОСТАВНОЕ' является 'МАССИВОМ из ВИДА*:

совместно исполняются все составляющие нижние- и верхние-границы данного D и его описатель D1;

Для i = 1, .... п, где п - число 'векторов', содержащихся в ’МАССИВЕ'.

пу.сть lj - выдача нижией границы, если она есть, i-ro составляющего диапазона-вектора этою D. а иначе 1, будет 1;

пусть Uj - выдача верхней-границы этого диапазона-вектора.

W состоит из

(i)    паспорта ((!,.и,), .... (1„.и„)),

(ii)    вариантов выдачи описателя D1 для 'ВИДА';

Случай С: ’СОСТАВНОЕ’ является 'подвижным МАССИВОМ из ВИДА': W выдача описателя данного D.

c)    Сцена S, „развертываемая из" фактичсского-описагеля-СОСТАВНО-ГО D в окружении Е. опре.деляегся следующим образом:

Если видимый прямой наследник D1 данною DecTb некоторый индикатор-вида, то

S сиена, развертываемая из сцены, выдаваемой D] в Е. иначе { D1 - определитель}.

S - составляется из D1 и Е.

d)    Всякий данный описатель-ЗНАЧЕНИЯ „специфицирует" вид ’ЗНАЧЕНИЕ'

63

Страница 65

С.62 ГОСТ 27974-88

4.7. Соотношения между видами {Некоторые виды должны фиксироваться, потому что вид никакого значения не может быть подвижным {2.1.3.6.Ь}- Родственные объединения не должны допускаться во избежание двусмысленности. Множество 'ПРЕДСТАВИТЕЛЕЙ' и ’ОБЫЧНЫХ" может быть сплетено заменой всех этих 'ПРЕДСТАВИТЕЛЕЙ' их 'ОБЫЧНЫМИ' компонентами.}

4.7.1. Синтаксис

A)    НЕСОСТАВНОЕ :: ПРОСТОЕ; ИМЯ ВИЛА; ПРОЦЕДУРА;

ПРЕДСТАВИТЕЛЬ; пустое значение.

B)    70БЫЧН0Е :: ЮБЫЧНЫЕ; ПУСТО.

C)    ?ЗНАЧЕНИЯ :: .'ЗНАЧЕНИЯ; ПУСТО.

a)    ЕСЛИ НЕСОСТАВНОЕ фиксирует

НЕСОСТАВНОЕ -СЬ, с,46Ь, 521с, 62а, 71п> : ЕСЛИ иаина.

b)    ЕСЛИ МАССИВ из ВИДА2 фиксирует

7ПОДВИЖНЫЙ МАССИВ изВИДА! {b, е, 46Ь, 521с, 62а, 71п>:

ЕСЛИ вид: фиксирует ВИД1 {а, Ь. с. ->.

c)    ЕСЛИ структура содержащая 1ПОЛЯ2 в себе

фиксирует структуру содержащую 1НОЛЯ1 вссое СЬ. е. 46Ь, 521с, 62а, 71п>:

ЕСЛИ !ПОЛЯ2 фиксируют !ПОЛЯ1 {d,e,l

d)    ЕСЛИ 1ПОЛЯ2 ПОЛЕ2 фиксируют !ПОЛЯ 1 110ЛЕ1 -(с, d>:

ЕСЛИ !ПОЛЯ2 фиксируют !ПОЛЯ1 {d,e, -> и ПОЛЕ2 фиксирует ПОЛЕ1 -Се, с) ЕСЛИ СЛОВО для выборки В ИДА 2

фиксирует СЛОВО для выборки ВИДА1 {с, d>:

ЕСЛИ ВИД2 фиксирует ВИД1 Са.Ь, с, - >.

О ЕСЛИ ?ОБЫЧНЫЕ1 родственны 70БЫЧНЫМ2 {f,46s}: если (70БЫЧНЫЕ2) есть (ОБЫЧНОЕ ЮБЫЧНЫЕЗ),

ЕСЛИ 70БЫЧНЫЕ1 ОБЫЧНОЕ родственны 70БЫЧНЫМЗ Ш или ОБЫЧНОЕ скреплено с объединением 70БЫЧНЫХ1 70БЫЧНЫХЗ воедино {71т}; если (70БЫЧНЫЕ2) есть (ПУСТО), ЕСЛИ ложь, g) ЕСЛИ !ЗНАЧЕНИЯ сплетены с ЮБЫЧНЫМИ -Cg, 46s}: если (!ЗНАЧЕНИЯ) есть (ЮБЫЧНЫЕ), ЕСЛИ истина; если (13НАЧЕНИЯ) есть (70БЫЧНЫЕ объединение ЮБЫЧНЫХ1 воедино 73НАЧЕНИЯ),

ЕСЛИ 70БЫЧНЫЕ !ОБЫЧНЫЕ1 73НАЧЕНИЯ сплетены с (ОБЫЧНЫМИ -(g>.

■(Никакой составляющий вид объединения не может приводиться укреплением к одному из других составляющих видов этого объединения или к их объединению (, правило 0. так как в проткьиом случае может возникнуть двусмысленность. Например, ядр<р об (им* цел, цел) (лок цел) двусмысленно в том, что разыменование может как появиться, так и нет перед объединением. Аналогично

Страница 66

ГОСТ 27974-88 С.6Э

вид ссп ■ об (середи. пстер); об (имя ссп. сеп) (пок ссп) двусмысленно. Отметим, что из-за сплетения (, правило g.) вид. специфицируемый описателем данного ядра, точнее обозначается описателем об (имя сен. серели, петср).}

4.8. Индикаторы и указатели полей 4.8.1. Синтаксис

A)    ИНДИКАТОР :: идентификатор; индикатор вида;

обозначение операции.

B)    ПРИМЕНЯЮЩИЙ определяющий; использующий.

C)    ?ПАРЫ :: 'ПАРЫ; ПУСТО.

D)    ГПЛРЫ :: ПАРА; ШАРЫ ПАРА.

E)    ПАРА ОПИСАНИЕ; МЕТКА: ПОЛЕ.

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

F)    ПРИЗНАК :: ВИД; ЗНАЧЕНИИ НОМЕР; БИНАРНОЕ;

метка; выборка ВИДА.

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

a)    определяющий ОБОЗНАЧЕНИЕ ИНДИКАТОР в СРЕДЕ с

новыми 7ПАРАМИ1 ОБОЗНАЧЕНИЕМ для ПРИЗНАКА 7ПАРАМИ2 выдающий ПРИЗНАК {32с, 35b, 42b, 43Ь, 44с, f, 45с, 541f}: знак ОБОЗНАЧЕНИЕ {942A, D, F, К}, если ОБОЗНАЧЕНИЕ для ПРИЗНАКА не зависит от ?ПАР1 7ПАР2 {71а, Ь, с}.

b)    использующий ОБОЗНАЧЕНИЕ ИНДИКАТОР в СРЕДЕ

выдающий ПРИЗНАК {42с, 46а, b, SD, 542а, Ь, 544а>: знак ОБОЗНАЧЕНИЕ {942А, D, F, К>, если ОБОЗНАЧЕНИЕ для ПРИЗНАКА идентифицировано в СРЕДЕ {72а}.

c)    определяющий СЛОВО указатель поля вида ВИД

среди 7ПАР1 СЛОВА для выборки ВИДА 7ПАР2 {46f>: знак СЛОВО {942А}. если СЛОВО для выборки ВИДА не зависит от 7ПАР1 7ПАР2 {71а, Ь, с}.

d)    использующий СЛОВО указатель поля

вида ВИД среди !ПОЛЕЙ {531а>: знак СЛОВО {942А }, если СЛОВО для выборки ВИДА находится в ИЮЛЯХ {72Ь, с, -}.

e)«    ПРИМЕНЯЮЩИЙ ОБОЗНАЧЕНИЕ индикатор в СРЕДЕ

выдающий ПРИЗНАК:

ПРИМЕНЯЮЩИЙ ОБОЗНАЧЕНИЕ ИНДИКАТОР в СРЕДЕ выдающий ПРИЗНАК {а, Ь>.

f)*    ПРИМЕНЯЮЩИЙ СЛОВО указатель ноля вида ВИД:

ПРИМЕНЯЮЩИЙ СЛОВО указатель поля

вида ВИЛ среди !ПОЛЕЙ {c,d>.

S-I36I

65

Страница 67

С.64 ГОСТ 27974-83

{Примеры:

а) х(в всш х. у)

л

с) следующая (см. 1.1.2)

Ь) х (в X ♦ у)

d) следующая (в следующая из проект) >


4.8.2. Семантика

a)    Когда какое-нибудь значение или сцена V „приписывается" определяющему ОБОЗНАЧЕНИЕ-индикагору-выдаюшему-ПРИЗНАК в окружении Е. 'ОБОЗНАЧЬНИЕ для ПРИЗНАКА' получает доступ к V внутри участка этого Е {2.1.2.с>.

b)    Выдача W использующего-ОБОЗНАЧЕНИЕ-индикатора-выдающего-ПРИЗНАК 1 в окружении Е, составленном из окружения Е1 и участка L, определяется следующим образом:

Коли L соответствует '?ОПИСАНИЯМ 7МЕТКАМ’, в которые заложено {1.1.4.1 .с} это 'ОБОЗНАЧЕНИЕ для ПРИЗНАКА',

то W - значение или сцена, если они существуют, доступные для 'ОБОЗНАЧЕНИЯ для ПРИЗНАКА' внутри L, и не определено в противном случае;

иначе W - выдача этого 1 в U1.

{Рассмотрим замкнутое-предложение, содержащее другое такое же: начало прим блок 1 прим цел i = 421, цел а := 5, проц р = пуст : печ (а); начало прим блок 2 прим веш а; а := i; р конец

конец

К тому времени, когда в ходе исполнения встретится а:= i, будут созданы два новых окружения, по одному для каждого блока.

Сначала идет поиск опрслеляющсго-идситификатора i в Е2, младшем из них, и, поскольку он не найдется там, то начнется поиск (успешный) в старшем окружении в Е1. Участок згого Е1 соответствует 'букве и лат для целого букве а для имени целого букве пэ лаг для процедуры вырабатывающей пусгос значение'. Следовательно, выдачей данного использующего-иденти-фикатора i будет значение 421, приписанное (а) ’букве и лат для целого внутри участка окружения Е1. Однако выдача идентификатора а в а := i найдется в участке окружения Е2.

Когда вызывается (5.4.3.2.Ь) процедура р. ее основа исполняется в некотором окружении БЗ. устанавливаемом вокруг Е1, но no Е2 (3.2.2.Ь). Это означает, что в отношении области действия ЕЗ младше Е2, а Е| - составляющее окружение зтого ЕЗ. Когда а должно печататься, оно является выдачей ндентяфнкэгора-выдающего-имя-целого. описанного во внешнем из имеющихся блоков, и эта выдача есть 5.

Таким образом, смысл индикатора, используемого, но не описанного внутри процедуры, определяется контекстом, в котором эта процедура была создана, з не тем. в котором она вызывается.}

66

Страница 68

ГОСГ 27974-88 С.65

5. ОСНОВЫ

{Основы используются для tipoi раммирования примитивных действий или превращения в единичные компоненты больших конструктов из разд. 3.

Приведенные-ПОНЯТИЯ, но не доопределения, являются результатом приведений Грат 6): в случае ЗАКРЫТЫХ-прелложений любые требуемые приведения осуществляются внутри них

Из задаваемого ниже синтаксиса следует, например, что текст из отчет ♦ „конец” разбирается как (tckci из отчет) + ..конец”. поскольку выборка есть 'ВТОРИЧНОЕ', а формула 'ТРЕТИЧНОЕ'.}

5.1, Синтаксис

A)    ОСНОВА {32d> :: приведенное присваивание {521з>:

приведенное отношение одноименности {522а): приведенный текст процедуры 541а, b ; переход {544а} : пропуск { 522а} : ТРЕТИЧНОЕ { и} .

B)    ТРЕТИЧНОЕ {А. 52 !b. 522а j неевдоимя { 524а} ;

приведенная АРНАЯ формула {S42a.b} . ВТОРИЧНОЕ {(]

C)    ВТОРИЧНОЕ {В. 531а. 542с} :: приведенная выборка {531а}:

приведенный ЛОКАЛИЗУЮЩИЙ 1снератор{ 523aJ ;

ПЕРВИЧНОЕ {D}.

О) ПЕРВИЧНОЕ {С. 532а. 543а} :• приведенная вырезки ( 532а/ : приведенный вызов [551а); приведенное изображаемое {80а} ; приведенное ялро { 551а} ; приведенный текст формата {А341а} ; приведенный использующий СЛОВО идентификатор {48b} : ЗАКРЫТОЕ предложение { 31а. 33а. с. d. е. 34а. 35а}#

f I иперправила для ’приведенной ФОРМЫ ПРИВОДИМО выдающей ЗНАЧЕНИЕ!’, данные в 6.1.1 .а, Ь, с, d и с, служат входами в синтаксис при-, ведений. Когда этот синтаксис приведений запрашивается для какой-то 'приведенной ФОРМЫ ПРИВОДИМО выдающей ЗНАЧЕНИЕ', он 8 конце концов возвратится (, исключая тупики,) к некоторому правилу для 'ФОРМЫ выдающей ЗНАЧЕНИЕ!’ в данном разделе. Именно на эти правила даны ссылки в метаправилах, перечисленных выше Синтаксис приведений просто преобразует 'ЗНАЧЕНИЕ' в 'ЗНАЧЕНИЕ!' для семантики; в это время не порождается никакой другой видимый наследник. } а)* доопределение ДЕЙСТВУЮЩЕЕ:

переход ДЕЙСТВУЮЩИЙ {544з} ; пропуск ДЕЙСТВУЮЩИЙ {552}. псевдоимя ДЕЙСТВУЮЩЕЕ {524а}.

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

3*    67

Страница 69

С.66ЮС1 J7974-88

5.2. Основы, связанные с именами { Именам можно присваивать <5.2.1). их можно сравнивать с другими именами (5.2.2) и создавав (5.2.3).}

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

{ В присваиваниях значение „присваивается” имени. Например, в х :* 3.14 выдаваемое источником 3.14 вещественное число присваивается имени, выдаваемому получателем х.}

5.2.1.1.    Синтаксис

a)    присваивание в ('РЕЛЕ выдающее ИМЯ ВИДА { 5А/ :

получатель выдающий ИМЯ ВИДА в СРЕДЕ {b}. знак присвоить {94с} . источник вида ВИЛ в СРЕДЕ {с}.

b)    получатель выдающий ИМЯ ВИДА в СРЕДЕ {а}:

ТРЕТИЧНОЕ в СРЕДЕ мягко выдающее ИМЯ ВИДА [5В/

c)    иеючник вида ВИД1 в СРЕДЕ {a. 44dJ :

основа в СРЕДЕ сильно выдающая ВИД2 I 32d) если ВИД2 фиксирует ВИД1 { 47а, Ь,с, - }.

{ Примеры:

а) х := 3 14    Ь)    х

с) 3 .14}

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

a)    Всякое присваивание А исполняется следующим образом:

пусть N и W - {совместные} выдачи (имя и некоторое другое значение} получателя и источника этою А;

W присваивается { b} N: выдачей А служит N.

b)    Значение W „присваивается" имени N, видом которого является некоторое ‘ИМЯ ВИДА', следующим образом:

Требуется, чтобы

•    N не были псевдоименем и

W по области действия не было младше N;

Случай А: 'ВИЛ' еегь 'структура содержащая !ПОЛЯ в себе':

Для каждого 'СЛОВА', выбирающего поле в W,

зю поле присваивается подымени. выбираемому по 'СЛОВУ' в N;

Случай В: 'ВИД' еегь 'МАССИВ из ВИДаГ:

nycrbV - {ciapoe } значение, именуемое N; требуется, чтобы паспорта W и V были идентичны;

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

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

глучай С: 'ВИЛ' есть 'подвижный МАССИВ из ВИДАГ:

•    пусть V - { старое} значение, именуемое N;

N начинает именовать массив, составленный из (i) паспорта значения W,

68

Страница 70

ГОСТ 27974-88 С. 67

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

N снабжается поды менами {2.1.3.1. gj :

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

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

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

N начинает имсновзть { 2.].3.2а} W

{ Если дано

поде [1:0) [1:3) цел подвфикс, то наличие скрытого элемента {2.1.З.4.С.} гарантирует, что смысл присваивания подвфикс :* лок [1 : 1) [1 : 3J цел вполне определен, в то время как смысл присваивания подвфикс :«лок (1:1) (1 : 4| цел не определен, так как граничные пары по второму измерению различны.)

52.2. Отношения одноименносш

[ Отношения-одноименности могут использоваться, чгобы узнать, совпадают ли два имени одною и того же вила.

Например, после присваивания проект :■ (,.абв‘\нил) отиошеиие-одно-нменности следующая из проект имя книга (нил) выдает значение истина. Однако следующая из проект :а: нил выдаст ложь, поскольку оно эквивалентно следующая из проект :=: имя имени книга (нил), здесь выдача ТРЕТИЧНОГО следующая из проект есть безо всяких приведений имя, именующее второе поле структуры, именуемой значением проект и, следовательно. не являющейся псевдоименем.}

5.2.2.1.    Синтаксис.

a)    отношение одноименности в СРЕДЕ

выдающее логическое { 5А} : если мягко уравнивает ПРИВОДИМО! и ПРИВ0ДИМ02 {32{} . ТРЕТИЧНОЕ 1 в СРЕДЕ

ПРИВОДИМО 1 выдающее имя ВИД {5В/ , сравнитель имен м,

ТРЕТИЧНОЕ2 в СРЕДЕ

ПРИ ВОДИМ 02 выдающее имя ВИД {SB/.

b)    сравнитель имен { aj : знак есть {94f};

знак не есть {941}

[ Примеры.

a)    следующая из проект имя книга (нил)

b)    • :*:)

{ Данным синтаксисом не порождается al (i) : = : al (jl- Тем самым предотвращается сравнение временных имен (2.1-3.6.с) посредством отношения-одноименности. }

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

Выдача W отношения-одноименности J определяется следующим образом:

69

Страница 71

с.68 ГОСТ 27974-8Я

пусть N1 и N2 - {совместные} выдачи ТРЕТИЧНЫХ этого I;

Случай А: Знаком сравнителя-имен лого 1 является знак-ссть:

W - иаина. если { имя} N1 есть то же. что и N2, и ложь в противном случае;

Случай В: Знаком сравнителя-имен этого 1 является знак-не-есть:

W - истина, если N1 не есть то же, что и N2, и ложь в противном случае.

5.2.3. Генераторы

[ Исполнение генератора, например лок веш в хх лок веш := 3.14, или задания-генератора, например (1: п} лит в [1 : nj лит u. v;. включае! создание имени, т.е. отведение места в памяти.

Использование локального-генератора предполагает (в большинстве реализаций) отведение памяти в динамическом стеке, тогда как глабаль-ные-генераторы предполагают отведение памяти в другой области, называемой „кучей”, в которой для управления памятью можно применять технику, называемую обычно „сборкой мусора". В силу меньшей эффективности последнего режима локальные-генераторы лучше, так что в задании-ге-нсраторов описаний переменных можно опускать только лок.}

5.2.3.1.    Синтаксис.

I ЛОКАЛИЗУЮЩИЙ :: локальный; глобальный; первичный.}

a)    ЛОКАЛИЗУЮЩИЙ генератор в СРЕДЕ

выдающий имя ВИДА ( 5С } ; знак ЛОКАЛИЗУЮЩИЙ { 94d, },

фактический описатель ВИДА в СРЕДЬ {46а} .

b)    задание ЛОКАЛИЗУЮЩЕГО генератора

в СРЕДЕ ВЫДАЮЩЕГО ИМЯ ПРОВИДА {44е} : знак ЛОКАЛИЗУЮЩИЙ {94d,-},

фактический описатель ПРОВИДА в СРЕДЕ {44Ь,46а} ; если (ЛОКАЛИЗУЮЩИЙ) есть (локальный), фактический описатель ПРОВИДА в СРЕДЕ { 44Ь. 46а} ;

{ Примеры:

а) лок веш    Ь)    лок веш • eeuij

{ Не существует представления для символа-первичиый (см. 9.4,а).}

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

з) Выдача W ЛОКАЛИЗУЮЩЕГО-генератора ИЛИ задания-ЛОКАЛИЗУЮ-ЩЕГО-генератора G в окружении Е определяется следующим образом:

W - вновь созданное имя, начинающее именовать [2.1.3.2я} выдачу в Е фактнческого-описателя ( 4.4.2.d. 4.6.2.aJ из G;

W по областо действия га же, что и окружение Е1, определяемое следующим образом:

Случай А: 'ЛОКАЛИЗУЮЩИЙ' есть 'локальный':

ЕI - „локализующее окружение” { b}. доступное из окружения Е;

Случай В: 'ЛОКАЛИЗУЮЩИЙ' есть 'глобальный':

70

Страница 72

ГОСТ 27974-88 с.69

El является {первым окружением, созданным в ходе исполнения текущей собственнопрограммы, являющимся} таким, что:

(i)    первичное окружение (2.2.2.а} - это окружение окружения окружения этого Е1 {именно так!} и

(ii)    El есть Е или старше Е;

Случай С: 'ЛОКАЛИЗУЮЩИЙ' есть первичный':

Е1 первичное окружение; если W - составное имя {2.1.3.2.b}, то W снабжается подыменами {2.1.3.3.е, 2.1.3.4.g}.

{ Единственное место, где встречаются примеры первичных-генерато-ров, - это стандартное- и снстемноевступления (10.3.1.1 .h, 10.3.1.4.b, п, о. 10.4.1. а).

Когда G есть эадаиие-генерзтора-выдаюшего-имя-процедуры, вид выдачи W не существен.}

Ь) „Локализующим окружением”, доступным из окружения Е, является окружение Е1, определяемое следующим образом:

Если Е — „нелокализующее” {з.2.2.Ь} ,

то Е1 - локализующее окружение, доступное из окружения этого Е;

иначе Е1 есть Е.

{ Окружение является нелокалиэуюижм, если оно устанавливается согласно последовательному-предложению или выясняющему-предложению, которое не содержит составляющего описания-вида, -идентификатора или -операции, либо согласно заглавию-цикла (3.5.1.Ь) или спецификации (3 4.1.J, к).}

S.2.4. Псевдоимена

5.2.4.1.    Синтаксис.

а) псевцоимн в СРЕДЕ сильно выдающее имя ВИДА { 5В}-; знак нил (94f).

t Пример:

а) нил.{Нил - это аналог нуля для имен}}

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

Выдачей псевдоимени является псеваоимя.

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

м и.

{ Поля структур можно получить посредством выборок (5.3.1), а элементы массивов - посредством вырезок (5.3.2); кроме того, соответствующие действия определены и над составными именами.}

5.3.1. Выборки

{ Выборка выбирает поле из структуры или (если это - „выборка из массива”) некоторый массив из массива, элементами которого служат структуры. Например, вч из г выбирает первое вещественное поле (называемое обычно вещественной частью) выдачи лого z. Если z выдает имя, то вч иэ z также выдает имя, но если g выдает комплексное значение, то вч из g выдает вещественное значение, а не именующее его имя.}

71

Страница 73

С. 70 ГОСТ 27974-88

5.3.1.1.    Синтаксис,

A)    •’ИМЯ :: ИМЯ; ПУСТО.

B)    "'ССЫЛКА НА :: ИМЯ; ИМЯ подвижного; ПУСТО.

{ИМЯ :: имя, временное имя.}

и) выборка в СРЕДЕ выдающая ?ИМЯ ВИДА! { 5СJ : использующий СЛОВО указатель поля вила ВИД! среди «ПОЛЕЙ {48с1}.энакиэ J94f} .

ВТОРИЧНОЕ в СРЕДЕ слабо выдающее ?ИМЯ структуры содержащей ИЮЛЯ в себс { 5С }; если <ВИЛ1) есть (МАССИВ из В ИДА 2). использующий СЛОВО указатель поля

вица ВИД2 среди ’ПОЛЕЙ J 49dJ . знак из i94fj,

ВТОРИЧНОЬ в СРЕДЕ слабо выдающее 7ССЫЛКУ НА МАССИВ из структур содержащих !ПОЛЯ в себе {5CJ , если (?ИМЯ) выводится из (?ССЫЛКИ НА) [ Ь, с,-.}•

b)    ЕСЛИ (временное имя) выводится из

(ИМЕНИ подвижного) 1 а, 532а, 66а} ; ЕСЛИ истина.

c)    ЕСЛИ (?ИМЯ) выводится из

(?ИМЕНИ) { а. 532а, 66а} : ЕСЛИ истина.

( Примеры:

а) вч из 2 • вч из г 1}

[ Вид вч из г начинается с имя', так как вид г начинается с него же. Пример:

цел возраст := 7; ст(лог пол. цел возраст) жиль; возраст из жиль := возраст;

Отметим, что получатель возраст из жиль выдает имя. так как жиль само выдает имя. После описания-тождества ст (лог пол, цел возраст) джек * (истина, 9),

не может быть присваивания полю возраст из джек, поскольку джек не являек'я переменной.}

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

Выдача W выборки s определяется следующим образом: пусть V будет выдачей ВТОРИЧНОГО выборки S; требуется, чтобы V {. если оно имя,} не было псевдонменем;

W - значение, выбираемое в {2.1.3.3.а, с, 2.1 J.4.kj, или имя. генерируемое из { 2 1.3.4.1} V по указателю-поля этого S.

{ Выборка из имени, именующего структуру, выдаег существующее подымя (2.1.3.З.с) этого имени. Имя, порожденное из имени, именующего массив, посредством выборки со ВТОРИЧНЫМ-выдаюшим-МАССИВиз-ВИДА (как в вч из z 1), есть имя, которое может как быть, так и не быть вновь созданным для этой цели.}

5.3.2.    Вырезки

f Вырезки получаются посредством индексации.'например xl [i]. вырезания, например xl [2 : nj, или и того и другого, например х2 [j : п. j]

72

Страница 74

ГОСТ 27974-88C.7I

или х2 (, к]. И индексация, и вырезание могут применяться только к ПЕРВИЧНЫМ, например к х! или (р !х 1 <уI). но не к вч из г\. Значением вырезки может быть или один из элементов выдачи ее ПЕРВИЧНОГО, или подмножество таких элементов; например, х! li) - вещественное число из вектора вещественных чисел xl, х2 [i.] представляет собой j-ю строку матрицы х2, а х2 [, kj - се k-й столбец.}

5.3.2.1. Синтаксис.

А) 7МАССИВ МАССИВ: ПУСТО.

a)    вырезка в СРЕДЕ выдающая ?ИМЯ ВИДА1 £5D} :

ПЕРВИЧНОЕ в СРЕДЕ слабо выдающее 7ССЫЛКУ НА МАССИВ1 из ВИДА1 { 5 о} , индексирующий ОФОРМЛЕННЫЙ индексатор МАССИВА I в СРЕДЕ оставляющий ПУСТО { Ь, с, • J. если (?ИМЯ) выводится из (7ССЫЛКИ НА) ( S31Ь. с.-J; если (ВИД1) есть (МАССИВ2 из ВИДА2),

ПЕРВИЧНОЕ в СРЕДЕ слабо выдающее ?ССЫЛКУ НА МАССИВ 1 из ВИДА2 (SI)} . индексирующий ОФОРМЛЕННЫЙ индексатор МАССИВА I в СРЕДЕ оставляющий МАССИВ2 { b. d. -}. если (?ИМЯ) выводи (С я из (7ССЫЛКИ HAi { 531b,с.].

(МАССИВ :: вектор; МАССИВ векторов.}

b)    индексатор векхора МАССИВОВ в СРЕДЬ

оставляющий 7МАССИВ1 ?М АССИВОВ2 {з,ъ}: индексатор вектора в СРЕДЕ оставляющий ’МАССИВ1 {с. d, ■}, знак а также f94f}, индексатор МАССИВА в СРЕДЕ оставляющий 7МАССИВ2 { Ъ, с, d, -}.

c)    индексатор векгтора в СРЕИЕ оставляющий ПУСТО { a. b}

индекс в СРЕДЕ (е ).

d)    индексатор вектора в СРЕДЕ оставляющий вектор [a. bf :

отрезок в СРЕДЕ [ t};

возможная сдвинутая нижняя граница в СРЕДЕ { g]

e)    индекс в СРЕДЕ fc/г

основа в СРЕДЕ раскрыто выдающая целое [ 32d) .

£) отрезок в СРЕДЕ [с}-

возможная нижняя граница в СРЕДЕ {46т/. знак вплоть до [94 fj. возможная верхняя граница в СРЕДЕ {46п} .    •

возможная сдвинутая нижняя граница в СРЕДЕ [ g; .

g)    сдвинутая нижняя гранича в СРЕДЕ | d, f J .

знак с f 94f} ,

нижняя граница в СРЕДЕ { 46m}.

h)    * ограничение : индекс в СРЕДЕ { с} ; отрезок в СРЕДЕ 1 fj ;

возможная сдвину гая нижняя граница в СРЕДЕ { gJ.

i)    • индексатор:

73

Страница 75

С.72 ГОСТ 27974-88

ииасксатор МАССИВА в СРЕДЕ

оставляющий 7МАССИВ fb,c, d}. j)* грань : индекс в СРЕДЕ {.с} ; нижняя граница в СРЕДЕ (46т} ; верхняя граница в СРЕДЕ {46п} ; сдвинутая нижняя граница в СРЕДЕ {g} ,

{ Примеры:

a)    х2    {i.jj •    х2 [,j]

b)    1 :    2, j    (в    х2 [1 :2, j]) • i,j (в х2    [i,j])

c)    j (вх2    [1    :2,j]    d)    1    :2 *@0(»х1 1<*0J)

с) j    f)    1    : 2«0

- g) @0}

{ Индекс уменьшает число измерений на одно, а отрезок не меняет его. В правиле (а) 'МАССИВ' отражает число ограничений в вырезке, a 'MAC-СИВ2' - число тех из них. которые являются отрезками или возможными-сдвинутыми-нижними-границами.

Если значение, из которого должна быть сделана вырезкэ. есть имя. то выдачей этой вырезки также будет имя. Кроме того, если вид исходного имени еегь 'имя подвижного МАССИВА из ВИДА', то эта выдача будет временным именем (см. 2.1.З.б.с).}

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

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

пусть V и (1......1„) - {совместные выдачи} ПЕРВИЧНОГО вырезки

S и индексатора { b } из S;

требуется, чтобы V {, если оно имя.} не было псевдоименем; пусть ((rl, si), (г„, sn)) - паспорт выдачи V или значения, именуемого V;

Для i = 1,п

Случай А: 1 j — целое число:

требуется, чюбы ц < 1, < Sj;

Случай В: lj - тройка (1, u, I'):

пусть L будет г,. если 1 отсутствует, и 1 в противном случае; пусть U будет Sj- если и отсутствует, нив противном случае; 1ребуегся, чгобы rj < L и U < sj;

пусть D будет 0. если 1' отсутствует и L - 1' в противном случае; £ D - это число, которое следует вычесть из L для того, чтобы получить сдвинутую нижнюю границу ; }

1 j заменяется на (L, U, D);

W - значение, выбираемое в {2.1.3.4.а, g, i}, или имя. генерируемое из {2.1.3.4.j} V по (li.....1п).

b)    Выдача индексатора 1 вырезки S есть отрезок {2.1.3.4.h} или индекс {2.1.3.4.а} (1,1„), определяемый следующим образом:

составляющие грани вырезки S исполняются совместно;

Для i = 1,.... п, где п - число составляющих ограничений вырезки S,

Случай A: i-c ограничение есть индекс

!i - { целое число, которое есть} выдача этого индекса;

74

Страница 76

ГОСТ 27974-88 С 73

Случай В: i-e ограничение есть отрезок Т:

11 - тройка (1, и, Г). гае

1 - выдача составляющей нижнсй-гранииы из Т, если она ссть, а иначе отсутствует,

и - выдача составляющей верхней-границы из Т. если она есть, а иначе отсутствует.

Г - выдача составляющей сдвинутой-иижней границы из Т. если она есть, а иначе 1:

Случай С: i-e 01раничение есть воэможная-сдвинутая-нижняямранииа N: lj - тройка (отсутствует, отсутствует, I').

где

Г - выдача сдвииугой-нижней-граннцы из N, если она есть, а иначе отсутствует.

{ Отметим, что если (I,,    1П/) не содержит троек, то это индекс, выби

рающий один элемент; в противном случае это отрезок, выбирающий подмножество элементов. }

{ Вырезка из имени, именующего массив, выдает существующее полымя (2.I.3.4.J) этого имени, если все составляющие ограничения этой вырезки являются индексами В противном случае она выдает генерируемое имя. которое может как быть, так и не быть вновь созданным доя этой цели. Следовательно, выдача отношения-одноименности xl [1. 2] :=: xl [1 : 2J не определена, хотя xl [1] :=: xl (1J должно веет да выдавать истина.)

{ Различные возможные границы в выдаче вырезок иллюстрируются следующими примерами, для каждою из которых показан паспорт значения, именуемою соответствующей выдачей:

(О : 9,2 : 11J цел i 3: i3 [1,3:10@3] it Ц(3.10))*'; i3 (I,3:|0] fK(l,*>))*; i3 11.3:]* «1.9))ц: i3 11,:]    rt«'.    10))*;

i3ll, ] * (2,11))*;

• 3 1,2] * (0,9))*.}

5.4. Основы, связанные с процедурами {Процедуры создаются из текстов-процедур (5.4.1) или переходов (5.4 4); их можно .зызвать" при помощи вызовов (5.4.3), формул (5 4,2) или посредством распроиедуривания (6-3).}

5.4.1. Тексты процедур

{Текст-процедуры всегда содержит формальный-описатель, специфицирующий вид результата, и знак-признак-процедуры, а именно двоеточие. Справа от этого двоеточия располагается основа, определяющая вычисления, которые надо осуществить, когда вызывается данная процедура. Если процедура имеет параметры, то слева от упомянутою формальною-опиез-теля помещается задание-аргументов, содержащее различные требуемые формальные-парамстры.

Примеры:

75

Страница 77

С.74 ГОСТ 27974-88

Пуст : псч (х);

(имя вещ а, вещ Ь) лог : (а < b I а : = Ь; истина I ложь).}

5.4.1.1. Синтаксис.

a)    текст ироцедуры в СРЕДЕ 1 выдающий

процедуру вырабатывающую ЗНАЧЕНИИ { 44d, 5а) : формальный описатель ЗНАЧЕНИЯ в СРЕДЕ 1 {46b} . знак признак процедуры {94f},

основа в СРЕДЕ1 сильно выдающая ЗНАЧЕНИЕ f32d}

b)    гекст процедуры в СРЕДЕ 1 выдающий процедуру

с ПАРАМЕТРАМИ вырабатывающую ЗНАЧЕНИЕ {44d, 5а} упакованное кратким определяющее новые ЮПИСАНИЯ2 задание аргументов в СРЕДЕ1 с новыми ЮПИСАНИЯМИ2 f е}. если ЮПИСАНИЯ2 оказались !ПАРАМЕТРАМИ {с. d. •) . формальный описатель ЗНАЧЕНИЯ в СРЕДЕ 1 { 46bj , знак признак процедуры { 94 f} . основа в СРЕДЕ 1 с новыми ЮПИСАНИЯ.МИ2 сильно выдающая ЗНАЧЕНИЕ {32d}.

c)    ЕСЛИ ЮПИСАНИЯ ОПИСАНИИ оказались

[ПАРАМЕТРАМИ ПАРАМЕТРОМ { Ь. с} :

ЕСЛИ ’ОПИСАНИЯ оказались {ПАРАМЕТРАМИ {с, d, ■} и ОПИСАНИЕ оказалось ПАРАМЕТРОМ fd. •} .

{ ПАРАМЕТР :: параметр вида ВИД.}

d)    ЕСЛИ СЛОВО для ВИЛА оказалось параметром вида ВИД { Ь, с}:

ЕСЛИ истина.

с) определяющее новые ЮПИСАНИЯ2

задание аргументов в СРЕДЕ2 { b, е. 34j}: формальный описатель ВИДА в СРЕДЕ {46b} , группоиое определение параметров вида ВИД через ЮПИСАНИЯ2 в СРЕДЕ2 f 41b, с} ; если (!ОПИСАНИЯ2) есть (ЮПИСАНИЯЗ ЮПИСАНИЯ4), формальный описатель ВИДА в СРЕДЕ2 { 46b) . групповое определение параметров вида ВИД через ЮПИСАНИЯЗ в СРЕДЕ2 { 41Ь, с }, знак а также { 94f}, определяющее новые ЮПИСАНИЯ4 задание аргументов в СРЕДЕ2 { е} .

О определение параметра вида ВИД

через СЛ0В02 для ВИДА в СРЕДЕ2 ( 41с} : определяющий СЛ0В02 идентификатор в СРЕДЕ2 вьщаюший ВИД { 48а} .

g)* формальный параметр вида ВИД:

определение параметра вида ВИД через СЛОВО для ВИДА в СРЕДЕ { {).

Страница 78

С.75 ГОСТ 27074-Яв

{примеры:

а) вещ : печ X )0    Ь» (леи а. Ь> лог : (alb' ложь»

е) лог а. b • лог а. лог b    f) а }

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

Выдачей текста-процедуры Т в окружении Е является процедура, составленная из (i> Т и

(ii) окружения, необходимого для J’7 J.2.CJ Т в Е.

5.4.2.    Формулы

{Формулы бывают бинарные и унарные, например х + i или абс х Порядок исполнения формулы определяется приоритетами ее обозначений-операций; первыми исполняются унарные формулы, затем • бинарные, oi высшего приоритета к низшему }

5.4.2.1. Синтаксис.

Л) БИНАРНОЕ :: приоритета ПРИОРИТЕТ.

В) УНАРНОЕ :: приоритета Ш III III I.

С> АРНОЕ :: БИНАРНОЕ; УНАРНОЕ.

D) .’НОМЕР :: НОМЕР; ПУСТО.

a)    БИНАРНАЯ формула в СРЕДЕ выдающая ЗНАЧЕНИЕ £с.>В)

БИНАРНЫЙ 'НОМЕРА операнд выдающий ВИД 1 в СРЕД1 } с. •}. иснользуюшес ИНФИКС обозначение операции в СРЕДЕ выдающее процедуру с параметром вида ВИЛ 1 параметром вида ВИД2 вырабатывающую ЗНАЧЕНИЕ    .

если ИНФИКС лли БИНАРНОГО идентифицирован в СРЕДЕ { 72а}.

БИНАРНЫЙ НОМЕРА операнд выдающий ВИД2 в СРЕДЕ {с. •}.

b)    УНАРНАЯ формула в СРЕДЕ выдающая ЗНАЧЕНИЕ {с. 5В> :

использующее ПРЕФИКС обозначение операции в СРЕДЕ выдающее процедуру с параметром вила ВИД вырабатывающую ЗНАЧЕНИЕ {48b},

УНАРНЫЙ операнд выдающий ВИД в СРЕДЕ {с/.

c)    АРНЫЙ операнд выдающий ВИД в СРЕДЕ £ а. Ь)

приведенная АРНДЯ формула н СРЕДЕ (a b} крепко выдающая ВИЛ £61b} ; если (АРНОЕ) есть (УНАРНОЕ»,

ВТОРИЧНОЕ в СРЕДЕ крепко выдзюшее ВИЛ {?с} .

Ь)" формула выдающая ЗНАЧЕНИЕ:

АРНАЯ формула в СРЕДЕ выдающая ЗНАЧЕНИЕ {а. Ь/ е)* обозначение ИНФИКСОМ бинарной операции выдающее ДВУМЕСТНУЮ:

ПРИМЕНЯЮЩЕЕ ИНФИКС обозначение оперзпии в СРЕДЕ выдающее ДВУМЕСТНУЮ {-Wa. bj . f I • обозначение ПРЕФИКСОМ унарной операции выдающее ОДНОМЕСТНУЮ:

ПРИМЕНЯЮЩЕЕ ПРЕФИКС'обозначение оперт щи

Страница 79

С. 76 ГОСТ 27974 -88

в СРЕДЕ выдающее ОДНОМЕСТНУЮ (48а. b} . g)4 операнд вида ВИД:

ЛРНЫЙ операнд выдающий ВИД в СРЕДЕ (с J.

{ Примеры:

а) - х + 1    Ь)    -    х

с) - х • I }

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

Выдача W формулы F в окружении Е определяется следующим образом:

пусть R - процедура, выдаваемая обозначснисм-опсрации формулы F;

пусть V,..... Vn {п есть 1 или 2) - (совместные) выдачи операндов

формулы F в { локализующем, см. 3.2.2.Ь,} окружении Е1. устанавливаемом вокруг Е;

W - выдача вызова f 5.4.3.2.b} процедуры R в Е1 с V,,V„; требуется, чтобы W по области действия не была младше Е.

{ Отмстим, что а Т b не в точности го же, что и аь в обычных обозначениях; действительно, как (-It 2+4*5). так и (4 — I t 2 = 3) имеют значение истина, поскольку первый, символ-минус является обозначением-унарной-операции. а второй - обозначением-бинарной-операции. }

5.4.3. Вызовы

I Вызовы используются для задания исполнения параметризованных процедур с фактичсскими-параметрами.

Примеры:

sin (х) • (р Isin! cos) (х).}

5.4.3.1.    Синтаксис.

a)    вызов в СРЕДЕ выдающий ЗНАЧЕНИЕ (51>} :

ПЕРВИЧНОЕ в СРЕДЕ раскрыто выдающее процедуру с ! ПАРАМЕТРАМ И вырабагываюшую ЗНАЧЕНИЕ (SD}. упакованные кратким фактические ’ПАРАМЕТРЫ в СРЕДЕ { Ь, с} .

b)    фактические !ПАРАМЕТРЫ ПАРАМЕТР в СРЕДЕ (a. b}:

фактические !ПАРАМЕТРЫ в СРЕДЕ {b, cj. знак а также 1*0.

фактический ПАРАМЕТР в СРЕДЕ {с}.

c)    фактический параметр вида ВИД в СРЕДЕ { a, b}

СРЕДЕ сильно выдающая ВИД { 32d ).

основа в | Примеры

a)    вывод (сганд вывод, х) (см. 10.3.3.1.а)

b)    станд вывод, х    с)    х )

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

а) Выдача W вызова С в окружении Е определяется следующим образом:

пусть ( процедура } R и V,, ..., V„ будут J совместными) выдачами ПЕРВИЧНОГО из С в Е я составляющих фактических-параметров згогоС в (локализующем, см. 3.2.2.Ь,} окружении Е1, устанавливаемом вокруг Е;

Страница 80

ГОСТ 27974-88 С.77

W - выдача вызова {b } процедуры R в El с V,Vn; требуется, чтобы W по области действия не была младше Е.

Ь) Выдача W „вызова” процедуры R в окружении ЕI. возможно со значениями {параметров} V,,Vn, определяется следующим образом:

пусть Е2 - окружение, устанавливаемое [ 3.2.2 b) по Е1 вокруг окружения процедуры R согласно заданию-аргументов упакованного-задания-аргументов, если оно есть, текста-процедуры из R со значениями, если они есть, V,,Vn;

W - выдача в Е2 основы текста-процедуры из R.

{ Рассмотрим последовательное-предложение проц замсльэон ■ (цел п, проц (цел) вещ f) вещ: качало длин веш s :=длин О;

для i до п цк s +: = удл f (i) t 2 ка; укр длим корень (s) конец;

замельзон (ш, (цел j) веш : xl (j]).

В этом контексте последний вызов даст тот же эффект, что и ядро: вещ:

цел п • тп, проц (цел) веш f » (цел j) веш : xl (j]; начало длин вещ s : = длин 0;

для i до п цк s +:= удл f (i) f.2 кц: укр длин корень (s) конец).

Таким образом, передача фактических-парамегров аналогична исполнению описаний-тождсства (4.4.2.а); см. также установление (3.2.2:Ь) и приписывание (4.8.2.a),J 5.4.4. Переходы

{ Переход может прекратить исполнение кортежа н заставив некоторый друюй помеченный кортеж исполняться вместо него.

Примеры:

у :■ если х >0 то корень (х) иначе на принсгон все • на сен пьер де шартрез.

С другой стороны, если контекст требует вида 'процедура вырабатывающая ЗНАЧЕНИЕ’, то вместо этого выдается процедура, основой которой служит данный переход, как в проц пуст m :■ на корт бервик.}

5.4.4.1. Синтаксис.

a)    переход в СРЕДЕ сильно выдающий ЗНАЧЕНИЕ {5а}:

возможное указание { bj, использующий СЛОВО идентификатор в СРЕДЕ выдающий метку {48Ь/.

b)    указание {*}: знак на ОФОРМЛЕННЫЙ [94f, -/ ;

знак иди ОФОРМЛЕННЫЙ [94f. •}. символ верхний предел ОФОРМЛЕННЫЙ ( 94g, -J.

I Примеры:

а) на коотвейк • go to варшава • зандвоорт

79

Страница 81

С 78 ГОСТ 27974-88

Ь) на • go*to }

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

Персход-в-СРЕДЕ-выдаюший-ЗНАЧЕНИЕ J в окружении Е исполняется следующим образом:

пусть сиена, выдаваемая в Е идентификатором-мегки этого J, составлена из кортежа S2 и окружения Е1;

Случай А: 'ЗНАЧЕНИЕ' не является никакой 'процедурой вырабатывающей ЗНАЧЕНИЕ Г

пусть S1 — кортеж наименьшего {l.l.3.2.g/ последо-вательного-предложения. содержащего S2;

исполнение S1 в EI или любого кортежа, исполняемого вместо него в Е1, прекращается {2.1.4.3.е};

S2 исполняется в Е1 „вместо" S1 в Е1;

Случай В: 'ЗНАЧЕНИЕ' есть 'процедура вырабатывающая ЗНАЧЕНИЕ!': J в Е {завершается и J выдаст процедуру, составленную

из:

(i) нового тскста-проиедуры-в-СРЕДЕ-выдающего-ЗНАЧЕ-НИЕ,основа которого подобна { 1.1.3.2.к} этому J.

(и) окружении Е1.

5.5. Основы, связанные со значениями любого вида 5.5.1. Ядра

{ Ядра можно использовать, чтобы обеспечить сильную позицию, например, имя веш (хх) в имя веш (хх) :■ 1, имя книга (нил) в следующая из проект имя книга (нил) и строк (plcl г) в s ♦:■ строк (pi clr).}

5.5.1.1. Синтаксис.    _ а) ядро в СРЕДЕ выдающее ЗНАЧЕНИЕ {5DJ:

формальный описатель ЗНАЧЕНИЯ в СРЕДЕ {46b},

ЗАКРЫТОЕ предложение в СРЕДЕ сильно выдающее ЗНАЧЕНИЕ {31а. 33а, с, d, е, 34а. 35а, •}

{ Пример:

а) имя книга (нил)}

{ Выдачей ядра является, в силу предысполнения (2.1.4.1.с), выдача его ЗАКРЫТОГОпредпожения.}

5.5.2.    Пропуски

5.5.2.1.    Синтаксис.

а) пропуск в СРЕДЕ сильно выдающий ЗНАЧЕНИЕ { 5 А } : знак пропуск (94f).

{ Пример: а) пропуск }

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

Выдачей пропуска является некоторое [неопределенное) значение, по области действия такое же, как и первичное окружение.

{ Вид выдачи пропуска-выдаюшего-ЗНАЧЕНИЕ есть 'ЗНАЧЕНИЕ'. Про-пуск-выдаюший-пустое значение служит пустым оператором и его можно.

80

Страница 82

ГОСТ 27974-88 С.79

например, использовать после метки, которая отмечает коней послелова-тсльногопредложения. J

6. ПРИВЕДЕНИЕ;

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

Сушесгвует шесть возможных приведений, называемых „распроцеду-ривание", ..разыменование", „объединение**, „обобщение”, „векюриза-ция” и „опустошение". Каждое приведение, исключая „объединение", оказывает соответствующее динамическое влияние на связанные с ним значения. Следовательно, при помощи приведений неявно можно запрограммировать ряд примитивных действий. }

6.1. Приведенные

{ Всякое приведенное есть конструкт, дерево порождения которого может начинаться с последовательности приведений, оканчивающейся приводимым. Порядок (завершения) исполнения этих приведений идет поэтому от приводимого к приведенному (. что и определило выбор этих парапонятий). Например, i в вещ (i) является приведенным, дерево порождения которого включает 'после обобщения' и 'посте разыменования' именно в этом порядке на пути от приведенного к приводимому. Разыменование должно завершиться прежде, чем произойдет обобщение.

Соответствующее дерево порождения (с опушенным 'в СРБЛЕ', 'использующий СЛОВО’ и невидимыми поддеревьями) выглядит «к:

'приведенный идентификатор сильно вылаюшиЯ естественное’

|    6.1.1л

р* 'идентификатор выдающий вещественное после обобщения' обобщение    |    6.5.1 а

’идентификатор пылающий целое после разыменования' ртымсновАнис    |    6.2.1л

L 'идентификатор виляющий имя целого после сохранения*

6.1. U

'идентификатор выдающий имя целого' (приводимое) j 4.8.1.Ь, 9.1.l.h 'символ бу ква и лат'    . Т

81

Страница 83

С.80 ГОСТ 27974-88

6.1.1. Синтаксис л    -

A)    УСИЛЕНИЕ (а. 66а) •: УКРЕПЛЕНИЕ    (В j ; обобщение    (65а, Ь, с,

векторизация [66а}; опустошение (67а. b} .

B)    УКРЕПЛЕНИЕ ( А. Ь J    :: РАСКРЫТИЕ    \ С }; объединение    ( 64а)

C)    РАСКРЫТИЕ { В с. d. 62а. 63а, 64а, 65а. Ь. с. d} ::

сохранение [(]; разыменование {62а}; распроцедуривание {63*} .

D)    СМЯГЧЕНИЕ {с.бЗЬ} ".сохранение { f} ;

мягкое распроисдуриванис {бЗ!?}

E)    ФОРМА : : РАСКРЫВАЕМОЕ; ПРЯМОЕ.

F)    РАСКРЫВАЕМОЕ :: выборка в СРЕДЕ; вырезка в СРЕДЕ; вызов в СРЕДЕ; текст процедуры в СРЕДЕ;

АРНАЯ формула в СРЕДЕ;

использующий СЛОВО идентификатор в СРЕДЕ.

С) ПРЯМОЕ :: присваивание в СРЕДЕ; ядро в СРЕДЕ;

отношение одноименности в СРЕДЕ; изображаемое в СРЕДЕ; ЛОКАЛИЗУЮЩИЙ генератор в СРЕДЕ; текст формата в СРЕДЕ.

a)    приведенная ФОРМА сильно

выдающая ЗНАЧЕНИЕ { 5А. В, С, D, А341 i} : если (ФОРМА) есть (РАСКРЫВАЕМОЕ),

РАСКРЫВАЕМОЕ выдающее значение после УСИЛЕНИЯ {д}; если (ФОРМА) есть (ПРЯМОЕ).

ПРЯМОЕ выдающее ЗНАЧЕНИЕ после УСИЛЕНИЯ {AJ. если неверно что (ЗНАЧЕНИЕ после УСИЛЕНИЯ) есть (пустое значение после распроцедуриваиия)

b)    приведенная ФОРМА крепко

выдающая ВИД {5А, B.C. D, 542с}-:

ФОРМА выдающая ВИД после УКРЕПЛЕНИЯ { В)

:) приведенная ФОРМА раскрыто

выдающая ЗНАЧЕНИЕ [ 5А. В. С, D/ :

ФОРМА выдающая ЗНАЧЕНИЕ после РАСКРЫТИЯ { с}.

I) приведенная ФОРМА слабо выдающая

?ИМЯ СОСТАВНОГО {5А. В. С, П>} :

ФОРМА выдающая ?ИМЯ СОСТАВНОГО после РАСКРЫТИЯ [С] если неверно что (?ИМЯ) есть (ПУСТО) и (РАСКРЫТИЕ) есть (разыменование)

) приведенная ФОРМА мягко выдающая ВИД ( 5А, В. С, DJ :

ФОРМА выдающая ВИД после СМЯГЧЕНИЯ {Г)}.

» ФОРМА выдающая ЗНАЧЕНИЕ

после сохранения (C.,D, 67а, b}:

ФОРМА выдающая ЗНАЧЕНИЕ.

>• приведенное ПРИВОДИМО выдающее ЗНАЧЕНИЕ: приведенная ФОРМА ПРИВОДИМО выдающая ЗНАЧЕНИЕ { а, Ь, с, d, ej .

)* приводимое выдающее ЗНАЧЕНИЕ:

Страница 84

ГОСТ 27974-88 С.81

ФОРМА выдающая ЗНАЧЕНИЕ.

{Примеры:

a)    3.14 (в х :■ 3.14)

b)    3.14 (в х + 3.14)

c)    sin (в sin (х>)

d)    xl (в х 1 [2] : = 3.14) с) х (в х := 3.14)}

{ Ссылки на 'ФОРМУ выдающую ЗНАЧЕНИЕ' (правило f) содержатся в подразделе 5.1.А. В. С, D. Заметим, что ’ФОРМА выдающая ЗНАЧЕНИЕ' может быть тупиком. Тупики в этой главе не отмечаются^

£ Существуют пять сортов синтаксических позиций, а именно:

„сильные" позиции, т.е. фактические-Параметры. например х в sin (х). источники, например х в у : = х. ЗАКТЫТЫЕ-нрсдложения ядер, например (нил) в имя книга (нил), и операторы, например, у : = х и (у := х; х : = 0);

„крепкие" позиции, т.е. операнды, например х в х ♦ у;

„раскрытые” позиции, те. выясняюшкс-прецложения, например х > 0 в (х > 0 1x1 0), грани, например i в xl [ij, и ПЕРВИЧНЫН вызовов. например sin в sin (.х);

„слабые” позиции, т.е. ВТОРИЧНЫЕ выборок и ПЕРВИЧНЫЕ вырезок, например xl в xl (i);

„мягкие" позиции, г.е. получатели, например х в х := у, и одно из ТРЕТИЧНЫХ отношенийоднонменности. например х в хх х. Сильные позиции появляются также при уравнивании (3.2,1.е).

В сильных позициях могут встретиться все шесть приведений, в крепких позициях запрещены векторизация, обобщение и опустошение, и рас крытых и слабых позициях, кроме того, запрещено объединение, а в мягких позициях разрешено только распроцедуривание. Однако ФОРМА-выда-юшая-СОСТАВНОЕ-после-разымеиоиания не может быгь прямым наследником приведенной^ЮРМЫ-слабо-выдающей-СОСТАВНОЕ (правило d). поскольку в противном случае х : = xl [i] было бы двусмысленным синтаксически (хотя в этом случае не семантически). Точно так же ПРЯМОЕ-выадю-щсс-пустос-эначснис-после-распроцедуривания не может быть прямым наследником привецснного-ПРЯМОГО-сильно-вьшаюшего-пустое-значснис (правило а), так как в противном случае было бы двусмысленным (проц пусть знгельфрист: проц пуст рейпенс = пропуск: зигельфриет :*= рейпенс: пропуск).}

6.2. Разыменование

{ Разыменование служит для получения значения, именуемого некоторым именем, как в х := у, где у выдает имя, именующее вещественное число, и именно зго число присваивается имени, выдаваемом получателем х. Априорный вил у, рассматриваемого как приводимое, есть 'имя вещественного', а его апостериорный вид. когда у рассматривается как приведенное, есть 'вещественное'.

83

Страница 85

С82 ГОСТ 27974-88

62.1.    Синтаксис

а) ФОРМА выдающая ВИД1 после разыменования [t> 1C /:

ФОРМА выдающая ИМЯ ВИДА2 после РАСКРЫТИЯ {6IC}. если ВИЛ1 фиксирует ВИД2 { 47а, Ь. с, •}

{ Пример:

а) х (в веш (х))}

6.2.2. Семантика

Выдача W ФОРМЫ -выдаюшсй-ВИД-после-разыменования F определяется следующим образом:

пусть {имя} N выдача ФОРМЫ-после-РАСКРЫТИЯ F; требуется, чтобы N не было пссвдоименем;

W - значение, именуемое этим N.

6.3.    Распроцедурившие

{ Распроцедуривание используется, когда надо вызвать процедуру без параметров Например, в х :■ печ П псевдослучайное число п вызывается процедура, выдаваемая печ, и присваивается выдаваемое ею вещеавенное число; апостериорным видом печ является 'вещественное'. С точки зрения синтаксиса из априорною вида удаляется начальное 'процедура вырабатывающая'.}

6.3.1.    Синтаксис

a)    ФОРМА выдающая ЗНАЧЕНИИ после

распронедуривания {61С,67а}:

ФОРМА выдающая процедуру вырабатывающую ЗНАЧЕНИЕ после РАСКРЫТИЯ {61С>.

b)    ФОРМА выдающая ВИД после

мягкого распронедуривания [61D}:

ФОРМА выдающая процедуру вырабатывающую ВИД после СМЯГЧЕНИЯ £б10>.

I Примеры:

a)    печ (в вещ (печ))

b)    х или у (в х или у :■ 3.14. см. 1.1.2)}

6.3.2.    Семантика

Выдача W ФОРМЫ-выдаюшей-ЗНАЧЕНИЕ-после-распроисдуривания или ФОРМЫ-выдаюшсй-ЗНАЧЕНИЕ-после-мя! кого-распроцедуривания F в окружении Е определяется следующим образом:

пусть { процедура } R будет выдачей в Е прямого наследника из F;

W - выдача вызова {5.4.3.2.Ь} из R в Е;

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

6.4,    Объединение

{Объединение не изменяет вида значения, выдаваемою конструктом во время счета, а просто создает для нею большую свободу. Такое значение должно быть приемлемо не только для одного какою-то вида, но для цело-Ю множества видов Однако после объединения это значение может использоваться примитивным действием только после динамической проверки сю соиосгавлиюшим-предложенисм [ 3.4.1.gj; н самом деле, с конструктом

Страница 86

ГОСГ 27974-88 с.83

вила 'ПРЕДСТАВИТЕЛЬ' нельзя запрограммировать никакие примитивные действии (кроме, конечно, присваивании переменной-вида-ПРЕДСТАВИ-ТЕЛЬ).

Пример:

об (лог, лит) t, v; t    : = истина; v : = x.J

6.4.1.    Синтаксис

a)    ФОРМА выдающая ПРЕДСТАВИТЕЛЬ после объединения /б1в}:

ФОРМА выдающая ЗНАЧЕНИЕ после РАСКРЫТИЯ {б1С}, если ЗНАЧЕНИЕ служи! ПРЕДСТАВИТЕЛЕМ { b }.

b)    ЕСЛИ ЗНАЧЕНИЕ I служит ЗНАЧЕНИЕМ2 fa.34i.7In»}:

если ЗНАЧЕНИЕ! эквивалентно ЗНАЧЕНИЮ! { 73а),

ЕСЛИ ложь; если неверно что ЗНАЧЕНИЕ 1 эквивалентно ЗНАЧЕНИЮ: {73aJ.

ЕСЛИ укрытые ЮБЫЧНЫЕ1 входят в укрытые ЮБЫЧНЫЕ2 {731, m. n J . если <!ОБЫЧНо1Е1) есть (ЗНАЧЕНИЕ 1) или (объединение ЮБЫЧНЫХ1 воедино) есть (ЗНАЧЕНИЕ1), если (!ОБЫ^НЫЕ2) есть (ЗНАЧЕНИЕ2) или (объединение !ОЬЫЧНЫХ2 воедино) есть (ЗНАЧЕНИЕ!).

[ Примеры

а) х (в uir :* х) •

и (в об (ли1. цел, пуст) (и), в зоне: содержащей об (цел. пуст) и :» пустое)}

6.5. Обобщение

{Обобщение преобразует целые числа в вещественные, вещественные числа в комплексные (в обоих случаях с тем же размером). значения вида 'БИТОВОЕ' в неупакованные векторы истинносшых значений и значения вида 'СЛОГОВОЕ' в неупакованные векторы литер.

Например, в г := 1 выдача 1 обобщается до вешеавенного числа 1.0, а затем до комплексною числа (1.0, 0.0) ; синтаксически здесь априорный вид. специфицируемый цел, заменяется видом, специфицируемым вещ, а затем видом, специфицируемым компл.}

6.5.1.    Синтаксис

A)    БИТОВОЕ :: структура содержащая 7МЕРНУЮ букву алеф

для выборки вектора из логических в себе.

B)    СЛОГОВОЕ :: структура содержащая "’МЕРНУЮ букву алеф

для выборки вектора из литерных в себе.

C)    '’МЕРНОЕ :: ДОЛГОЕ 7ДОЛГОЕ; КРАТКОЕ ’’КРАТКОЕ; ПУСТО

D)    ДОЛГОЕ :: буква д буква л буква и буква и.

E)    КРАТКОЕ :: буква к буква о буква р.

F)    7ДОЛГОЕ :: ДОЛГОЕ ?ДОЛГОЕ; ПУСТО.

С) ?КРАТКОЕ •: КРАТКОЕ 7КРАТКОЕ; ПУСТО, а) ФОРМА выдающая 7РАЗ.МЕРНОЕ вещественное

Страница 87

С. 84 ГОСТ 27974 -88

после обобщения {b,61 а}:

ФОРМА выдающая 7РАЗМЕРНОЕ целое после РАСКРЫТИЯ {б1С>.

{'’РАЗМЕРНОЕ "длинное ’ДЛИННОЕ; короткое ?КОРОТКОЕ; ПУСТО.}

b)    ФОРМА выдающая структуру содержащую

букву эр лат букву е лат для выборки ’РАЗМЕРНОГО вещественного букву и лат букву эм лаг для выборки 7РАЗМЕРНОГО вещественного в себе после обобщения {б1А};

ФОРМА выдающая 7РАЗМЕРНОЕ вещественное после РАСКРЫТИЯ {б1С};

ФОРМА выдающая ’’РАЗМЕРНОЕ вещественное после обобщения {а}.

c)    ФОРМА выдающая вектор из логических

после обобщения £61A j ;

ФОРМА выдающая БИТОВОЕ после РАСКРЫТИЯ [61С}.

d)    ФОРМА выдающая вектор из литерных

после обобщения [61 а}:

ФОРМА выдающая СЛОГОВОЕ после РАСКРЫТИЯ { 61CJ { Примеры:

a)    1 (вх := 1)

b)    1.0 (в compl z := 1.0) * I (в compl г :• 1)

c)    2г 101 (в [ ] лог (2г 101))

d)    г (в [ J лит (г),см. 1.1.2)}

6.5.2. Семантика

Выдача W ФОРМЫ-выдающей-ВИЛ-послс-обобщения F определяется следующие образом:

пусть V - выдача прямого наследника F;

Случай А: 'ВИД' есть ’7РАЗМЕРНОЕ вещественное':

W - вещественное число, обобщаемое f 2.1.3.1 .cj из V; Случай В: 'ВИЛ' есть 'структура содержащая букву эр лат букву е лат ддя выборки 7РАЗМЕРНОГО вещественного букву и лат букву эм лат дня выборки ’’РАЗМЕРНОГО вещественного в себе' W - {комплексное число, которое есть} структурное значение с нолями, равными V и вещественному числу 0 того же размера {2.1.3.1.b}, что и V;

Случай С: 'ВИД' есть ’вектор из логических' или 'вектор из литерных': W — единственное поле из V.

6.6. Векторизация

{ Векторизация позволяет построить массив из одного элемента. Если последний является именем, то результат векторизации гак же может быть именем, именующим этот массив.

Пример:

Страница 88

ГОСТ 27974-»8 С. 85

[1 : 1] вещ Ы : = 4.13}‘

6.6.1.    Синтаксис

а) ФОРМА выдающая ?ИМЯ МАССИВАI из ВИДА после векторизации { 61 а} : если (МАССИВ 1) есть (векгор),

ФОРМА выдающая ?ССЫЛКУ НА ВИД после УСИЛЕНИЯ f 61А}. если (?ИМЯ) выводится из (?ССЫЛКИ HA) f531b,c.-J; если (МАССИВ1) есть (вектор МАССИВОВ!).

ФОРМА выдающая ^ССЫЛКУ НА МАССИВ! из ВИДА после УСИЛЕНИЯ (61 а}, если (?ИМЯ) выводится из (?ССЫЛКИ НА) { 531Ь.с, } .

{Примеры:

а) 4.13 (в [1 : 1] вешЫ :-4.13 • х1 (в [I : 1, 1 : nj вещ Ь2 :■ xl)}

6.6.2.    Семантика

a)    Выдача W ФОРМЫ.выдак>щей-?ИМЯ-МАССИВА1 -изВИЛА-после-вск-торизации F определяется следующим образом:

• пусть V - выдача ФОРМЫ-после-УСИЛЕНИЯ из F;

Случай А: '?ИМЯ' есть 'ПУСТО':

W - массив, „построенный”{b} из V для 'МАССИВА!'; Случай В: '?ИМЯ' есть 'ИМЯ':

Если V - псевдоимя, то W - тоже псевдоимя;

иначе W - имя, достроенное" f с} из V для 'МАССИВА!'.

b)    Массив W, .построенный” из значения V для некоторого 'МАССИВА 1', определяется следующим образом:

Случай А: 'МАССИВ!' есть 'вектор':

W составляется из

(i)    паспорта ((1, 1)),

(ii)    ( одного элемента } V;

Случай В: 'МАССИВГ есть 'вектор МАССИВ0В2’:

•    пусть паспорт значения V будет ((Ij.u,).....(ln.un));

W составляется из

(i)    паспорта ((1,1), (1,,и,)..... (1пп)),

(ii)    элементов этого V;

элемент, выбираемый в V по индексу (i......in), являет

ся элементом, выбираемым в W по индексу (I, ii • •••» in) •

c)    Имя N1, „построенное” из имени N для некоторого 'МАССИВА Г. определяется следующим образом:

N1 —(не обязательно вновь созданное} имя, равное но области действия имени N и именующее массив, построенный [ b) для 'МАССИВА из значения, именуемого N;

Случай А; 'МАССИВГ есть 'вектор':

•    { единственным } подыменем этого N1 является N;

8‘

Страница 89

С.86 ГОСТ 27974-88

Случай В: '.МАССИВГ есть 'вскгор МАССИВОВ:':

подыменем этого N1, выбираемым по (1, ii,in), является подымя имени N, выбираемого по (ij.....in).

6.7. Опустошение {Опустошение используют, чтобы отбросить выдачу некоторой основы, первичное назначение которой - вызвать побочный эффект; ее апостериорным вилом становится тогда просто ‘пустое значение'. Например, в х := I; у :* I; присваивание у := I опустошается, а в npou t = пел : целч (печ X 100); t ; нспользуюший-идешификатор t опустошзется после рзспроцедурлвания, предписывающего вызов процедуры.

Присваивания и другие ПРЯМЫЕ опустошаются без всякого распроие-дуривания, так что в проц пуст р; р : = финиш это присваивание р :» финиш не предусматривает неожидаемого здесь вызова процедуры финиш.}

6.7.1.    Синтаксис

А) НЕРАСП {рОЦЕДУРИВАЕМОЕ} :: ПРОСТОЕ; СОСТАВНОЕ; ПРЕДСТАВИТЕЛЬ: ИМЯ НЕРАСП;

процедура с ПАРАМЕТРАМИ вырабатывающая ЗНАЧЕНИЕ.

a)    РАСКРЫВАЕМОЕ выдающее пустое значение

после опустошения { 61 л}:

РАСКРЫВАЕМОЕ выдающее НАРАСП

после распроцедуривать {бЗа};    _

РАСКРЫВАЕМОЕ выдающее НЕРАСП после сохранения (blf)

b)    ПРЯМОЕ выдающее пустое значение

после опустошения {61а} :    _

ПРЯМОЕ выдающее ВИД после сохранения {61fJ.

{ Примеры.

a)    печ (в пропуск; печ;)

след печ (пред печ)

(в пропуск ; след печ (прел печ);)

b)    проц пуст (рр)

(в проц проц пуст рр = проц пуст:

(печ (1); пуст : печ (2)); проц пуст (}?р) ;)]

6.7.2.    Семантика

Исполнение ФОРМЫ-оыдающей-пусгое-значение-после-олустошения состоит из исполнения ее прямого наследника и выдает пустое.

7. ВИДЫ И СРЕДЫ

{ Идентификация свойств в среде представляет собой статический двойник динамического определения (4.8.2.Ь) значения в некотором окружении: поиск проводится с самого нового (самого младшего) уровня по направлению к предыдущим (более старшим) уровням.

Виды составляются из примитивных видов, таких, как логическое', с

88

Страница 90

ГОСТ 27974-88 С.87

помощью 'ПРОЛОГОВ', таких, как 'структура содержащая', и могут быть рекурсивными. Рекурсивные вилы, выписываемые различным образом, могут гем Ле менее быть эквивалентными. Синтаксис провернет эквивалентность таких видов, доказывая невозможность обнаружения какого-либо несовпадения между их соответствующими подструктурами или составляющими видами.

Предотвращается ряд небезопасных использований свойсгв. Никакой идентификатор или индикагор-вида не описывается более одного раза в каждой зоне. Виды операндов всякой формулы не определяют более одной операции. Рекурсия в видах не приводит к динамическому созданию объектов неограниченного размера и не допускает двусмысленных приведений.}

7.1.    Не за в и си мо сть свойств

{Следующий синтаксис определяет, могут ли два свойства (т.е. две 'ПАРЫ), подобные тем, которые соответствуют веш х и цел х. быть заложены в один и тот же 'СЛОЙ'.}

7.1.1.    Синтаксис

A)    ПРИСТАВКА :: процедура вырабатывающая; ИМЯ.

B)    КОРЕНЬ :: ПРОСТОЕ; СОСТАВНОЕ; ПРЕДСТАВИТЕЛЬ;

пустое значение; процедура с ПАРАМЕТРАМИ вырабатывающая ЗНАЧЕНИЕ.

C)*    ’ПРИСТАВКИ :: ПРИСТАВКА 7ПРИСТАВКИ; ПУСТО.

{ПАРА :: ОПИСАНИЕ; МЕТКА; ПОЛЕ.

ПРИЗНАК :: ВИД; ЗНАЧЕНИЕ НОМЕР: БИНАРНОЕ;

метка; выборка ВИДА.

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

a)    ЕСЛИ ПАРА1 не зависит от !ПАР2 ПАРЫ2 { а. 48а. с, 72а} :

ЕСЛИ UAPAI не зависит от !ПАР2 { а, с,}

и ПАРА! не зависит от ПАРЫ2 [с}.

b)    ЕСЛИ ПАРА не зависит от ПУСТО {48а, с. 72а } : ЕСЛИ истина.

c)    ЕСЛИ ОБОЗНАЧЕНИЕ1 для ПРИЗНАКА1 не зависит

от ОБОЗНАЧЕНИЯ2 доя ПРИЗНАКА2 {а. 48а, с, 72»}: если неверно что (ОБОЗНАЧЕНИЕ 1) есть (ОБОЗНАЧННИЕ2)

ЕСЛИ истина; если (ОБОЗНАЧЕНИЕ!) есть (ОБОЗНАЧЕНИЕ2) и (ОБОЗНАЧЕНИЕ!) есть (АФФИКС),

ЕСЛИ ПРИЗНАК! не зависит от ПРИЗНАКА2 { d }.

d)    ЕСЛИ ПРИЗНАК! не зависит от ПРИЗНАКА2 {с}:

если ПРИЗНАК! связан с ПРИЗНАКОМ2 f е, f. g. h. i. j, •},

ЕСЛИ ложь; если неверно что ПРИЗНАК! связан с ПРИЗНАКОМ2 {е, f, g. h. i. j. ■}, ЕСЛИ истина.

e)    ЕСЛИ ОДНОМЕСТНАЯ связана с ДВУМЕСТНОЙ {d>: ЕСЛИ ложь.

О ЕСЛИ ДВУМЕСТНАЯ связана с ОДНОМЕСТНОЙ {d J : ЕСЛИ ложь.

89

Страница 91

С.88 ГОСТ 27974-в8

g)    ЕСЛИ ОПЕРАЦИЯ связана с БИНАРНЫМ { d}: ЕСЛИ ложь.

h)    ЕСЛИ БИНАРНОЕ связано с ОПЕРАЦИЕЙ f d J: ЕСЛИ ложь.

i)    ЕСЛИ процедура с параметром вида ВИД1 параметром

вида ВИД2 выбарзтывающая ЗНАЧЕНИЕ1 связана с процедурой с параметром вида ВИДЗ парами ром вида В ИД 4 вырабатывающей ЗНАЧЕНИЕ2 { d}-ЕСЛИ ВИД1 крепко связан с В ИЛ ОМ 3 {к} и ВИД2 крепко связан с ВИДОМ4 ( к } j) ЕСЛИ процедура с параметром вида ВИД1 вырабатывающая ЗНАЧЕНИЕ! связана с процедурой с параметром вида ВИД2 вырабатывающей ЗНАЧЕНИЕ2 fd} :

ЕСЛИ ВИД1 крепко связан с ВИДОМ2 { к}. к) ЕСЛИ ЗНАЧЕНИЕ! крепко связано со ЗНАЧЕНИЕМ2 { «. j}:

ЕСЛИ ЮБЫЧНЫЕ1 скреплены со ЗНАЧЕНИЕМ2 { I, ш > или ЮБЫЧНЫЕ: скреплены со ЗНАЧЕНИЕМ I [ 1. ш,}. если (ЮБЫЧНЫЕ!) есть (ЗНАЧЕНИЕ!) или (объединение ЮБЫЧНЫХ1 воедино) есть (ЗНАЧЕНИЕ1), если (ЮБЫЧНЫЕ:) есть (ЗНАЧЕНИЕ2) или (объединение ЮБЫЧНЫХ2 видов) есть (ЗНАЧЕНИЕ2). i) ЕСЛИ ЮБЫЧНЫЕ ОБЫЧНОЕ секреплены со ЗНАЧЕНИЕМ { k, i}

ЕСЛИ ЮБЫЧНЫЕ скреплены со ЗНАЧЕНИЕМ {l.m} или ОБЫЧНОЕ скреплено со ЗНАЧЕНИЕМ f т/. т) ЕСЛИ ЗНАЧЕНИЕ! скреплено со ЗНАЧЕНИЕМ: { k.l,n,47f}:

ЕСЛИ ЗНАЧЕНИЕ1 эквивалентно ЗНАЧЕНИЮ: f 73а J или ЗНАЧЕНИЕ! служит ЗНАЧЕНИЕМ: {б4Ь> или ЗНАЧЕНИЕ2 есть корень ЗНАЧЕНИЯ 1 f п }. п) ЕСЛИ ЗНАЧЕНИЕ: есть кореш, ЗНАЧЕНИЯ 1 {ш}:

если (ЗНАЧЕНИЕ!) есть (ПРИСТАВКАЗНАЧЕНИЕЗ),

ЕСЛИ ЗНАЧЕНИЕ5 скреплено со ЗНАЧЕНИЕМ2 { т}, если ЗНАЧЕНИЕ5 фиксирует ЗНАЧЕНИЕЗ {47а, Ь, с} : если (ЗНАЧЕНИЕ!) еаь (КОРЕНЬ), ЕСЛИ ложь.

{ Чтобы предотвратить двусмысленное использование индикаторов, как в веш х. цел х; х : = 0, на определяюшие-иидикаторы. входящие в некоторую данную зону, налагаются определенные ограничения. Они обеспечиваются синтаксической проверкой ..независимости" свойств, заложенных в соогвс1ствуюший 'СЛОЙ' (правила а. Ь, с). Доааночное условие независимости пары свойств, каждое из которых является некоторым'ОБОЗНАЧЕНИЕМ дня ПРИЗНАКА’, не выполненное в приведенном выше примере, состоит в различии этих 'ОБОЗНАЧЕНИЙ' (правило с). Для ’ОБОЗНАЧЕНИЙ', не являющихся 'АФФИКСОМ', это условие также и необходимо, так что даже вещ х, цел х; пропуск не есть последовательное-лредложение.

Дня двух свойств 'АФФИКС для ПРИЗНАКА!' и 'АФФИКС для ПРИЗ-НАКА2' проверка на независимость несколько сложнее, как это можно видеть из последоватслыюго-предпожения

оп + * (цел i) лог : истина, оп + ■ (цел \, j) цел : 1,

90

Страница 92

ГОСТ 27974-88 С. 89

он ♦ ® (цел i, лог j) пел : 2. прио + = 6;

0 + + 0|t = 2 Двусмысленности можно обнаружить в прио + = 6, + = 7; 1 + 2 X 3    7    или    9?fi.

в    1

on г = (цел i) цел : I, виц г = цел; z I fi формула или описание?rt; пропуск

и D

он? “ (об(имя вещ. лит) а) цел : 1,оп ? в (вещ а) цел : 2;

?лок вещ р 1 или 2? у!.

В таких случаях проверяется, независимы ли эти два 'ПРИЗНАКА' (правила с, d). Всякое 'ЗНАЧЕНИЕ НОМЕР' всегда зависит от любого 'ПРИЗНАКА' (правило d). 'ОДНОМЕСТНАЯ' всегда не зависит ог 'ДВУМЕСТНОЙ' (правила d, е. f) и обе они не зависят от ’БИНАРНОГО’ (т.е от 'приоритета ПРИОРИТЕТ') (правила d, g, h). В случае двух 'ОПЕРАЦИЙ', обеих 'ОДНОМЕСТНЫХ' или 'ДВУМЕСТНЫХ', двусмысленность может возникнуть. если виды их соответствующих параметров „крепко связаны”, т.е. если вид операнда может крепко приводиться к виду параметра (виды пары операндов могут крепко приводиться к видам параметров) какой-ни-будь 'ОПЕРАЦИИ' (правила i. j). В примере с двумя определениями для ? указанные две 'ОПЕРАЦИИ' связаны, поскольку крепко связаны виды, специфицируемое описателями об (имя веш. лит) и вещ; специфицируемый имя вещ вид крепко приводим к любому- из них.

Можно показать, ню два вида крепко связаны, если один из них или какое-то составляющее ’ОБЫЧНОЕ' одного из них может крепко приводиться к другому (правила k, I). что потребует некоторой последовательности из нуля или более раскрывающих приведений и затем не более одного объединении (6.4.1.а). Возможна ли такая последовательность приведений между двумя видами, определяется предикатом ’скреплены’ (правила т. п).

’ПАРАГ делает, кроме того, недоступной ’ПАРУ2' во внешнем 'СЛОЕ', если эта ’ПАРА2’ зависит от ’ПАРЫ Г; например, начало цел х;

кач вещ х; it здесь 'ПАРАГ есть 'буква икс лат для имени вещественного’ j*i пропуск кон конец и аналогично

начало on ? ■ (цел i) цел : 1, цел к := 2; начоп ? а (имя цел i) цел : 3;

? к * вырабатывает 3, а ? 4 не может встретиться в этом контексте, поскольку его обозначение-операции здесь недоступно 6 кон конец.}

91

Страница 93

С.90 ГОСТ 27974-88

7.2. Идентификация в средах

{ Этот раздел обеспечивает, что для каждого используюшего-индикаго-ра существует соответствующая '11ЛРЛ' в некотором подходящем 'СЛОЕ' его срсды.}

7.2.1.    Сшааксис {?ПЛРЫ •: ШАРЫ; ПУСТО.

ГПЛРЫ :: ПАРА; .'ПАРЫ ПАРА.

ПАРА :: ОПИСАНИЕ; МЕТКА; ПОЛЕ.

ПРИЗНАК :: ВИД; ЗНАЧЕНИЕ НОМЕР;

БИНАРНОЕ; межа; выборка ВИЛА.

ОБОЗНАЧЕНИЕ СЛОВО: ИНДИКАН Г; ИНФИКС; ПРЕФИКС. J

a)    ЕСЛИ ПАРА идентифицирована и СРЕДЕ

с новыми 7ПАРАМИ { а. 48Ь, 542а); если ПАРА находится в ’’ПАРАХ { Ь, с, ■}, ЕСЛИ истина; если ПАРА не зависит от ?ПАР f 71а, Ь, с} .

ЕСЛИ ПАРА идентифицирована в СРЕДЕ {а, -} .

b)    ЕСЛИ ПАРА1 находится в !ПАРДХ2 ПАРЕ? { a. b. 48d }:

ЕСЛИ ПАРА1 находится в ПАРЕ2 /с.-} или Г1АРА1 находится в 1ПАРАХ2 { Ь, с, ■} .

c)    ЕСЛИ ОБОЗНАЧЕНИЕ для ПРИЗНАКА 1 находится

в ОБОЗНАЧЕНИИ для ПРИЗНАКА2 { a. b, 48d} : если (ПРИЗНАК1) есть (метка) или (ПРИЗНАКИ есть (БИНАРНОЕ) или (ПРИЗНАК 1) есть (выборка ВИДА).

ЕСЛИ (ПРИЗНАК!) есть (ПРИЗНАЮ>; если (ПРИЗНАЮ) есть (ЗНАЧЕНИЕ1 ’НОМЕР) и (НРИЗНАК2) есть (ЗНАЧЕНИЕ2 7НОМЕР),

ЕСЛИ ЗНАЧЕНИЕ! эквивалентно ЗНАЧЕНИЮ’ {73а}.

{ Всякая среда, исключая первичную (которая есть просто ’новое'), есть некоторая 'СРЕДА с СЛОЕМ' (т.е. 'СРЕДА с новыми 7ПАРАМИ'). Идентификация 'ПАРЫ' происходит сначала путем поиска се в данном ’СЛОЕ' (правило а). Если эта 'ПАРА' есть 'ОБОЗНАЧЕНИЕ для метки’ или 'ОБОЗНАЧЕНИЕ для БИНАРНОГО', то простое обнаружение соответствующей ПАРЫ’ служит достаточной проверкой (правило с). Если же эта ’ПАРА' есть ’ ОБОЗНАЧЕНИЕ для ЗНАЧЕНИЯ 7НОМЕР', то необходим» обратиться к механизму эквивалентности (правило с). Если данная 'ПАРА' не найдется в указанном 'СЛОЕ', то поиск продолжается в 'СРЕДЕ' (без этого 'СЛОЯ'), при условии что она не зависит от всех ’ПАР’ этого 'СЛОЯ',а нна-поиск обрывается (правило а). Отмстим, что правила b и с несут двойную нагрузку, поскольку они применяются также и для проверки законности ислользующих-укаээгелей-поля (4.8.J.d).J

7.2.2.    Семантика

а) Если некоторый блок-в-СРЕДЕ R (3.0.1.f> содержит использующий-индикатор I (4.8.l.b), для которого существует наследник еслиПАРАкдсн-тифицирована-в-СРЕДЕ-с-СЛОЕМ. но не существует наследника если-ПАРА-идентифицирована-в-СРЕДЕ, го R - „определяющий блок" данного I. (Эта

92

Страница 94

ГОСТ 27974-88 С. 91

'СРЕДА' ucer.ia будет средой, действующей как раз па пределами данного блока. J

b)    Всякой иснользующий-ОБОЗНЛЧЕНИЕ-индикатор-ныдаюший-ПРИЗНАК I. определяющий блок-в-СРЕДЕ {а} которого есть R. „идентифицирует” содержащийся в R опредсляюший-СЛОЬО-индикатор-в-СРЕДЕ-с-СЛОЕМ-выдзющий-ПРИЗНАК.

{Например, в

(я 1 it вещ i = 2,0; (rt 2 ii цел i =» 1: (й 3 |k нет х; печ (i)

(ЦЗ Я) *2*) *!*)

1ри блока. В силу синтаксиса использующий-идентификатор i в меч (i) вынужден . бы|ь испоиьзующим-букву-и-лат-идентификатором-в-СРЕДЕ-с-но-вой-буквой-и-лат-для-вещсствснного-новой-буквой-и-лат-для-нелого-новой-буквой-икс-лат-лли-имени-вещсственното-выдающим-цслос <4.8.1.h). Его определяющим блоком является определяющее-новую-букву-н-лат-для-це* лого-послсдоватслыюс-предложение-и-СРЕДЕ-с-новой-букиой-м-лат-для вещественного (3.2.1.а) с номером <\ 2 п ои иденшфицирует опрсделяюший-идентификагор i, содержащийся а цел i (а не в веш i), и его видом является 'целое'.}

[ благодаря наличию аналогичного механизма некоторую БИНАРНУЮ-формулу (5.4.2.1.а) можно назвать „идентифицирующей" то определяю-щее-обозначение-операции-выдакнпее-БИНЛРНОЕ <4.8.1.а), которое опре-деляе! ее приоритет.}

c)    Окружение Е, .необходимое дня” конструкта С в окружении Е1, определяется следующим образом:

ЕслиЕ1 - первичное окружение (2.2.2.а), то Е есть El;

иначе пусть El будет составлено из участка L, соответствующего каким-то '?ПАРАМ‘, и другого окружения Е2;

Если С содержит любой иснользуюший-СЛОВО-икдикатор-выдаюший-ПРИЗНАК,

не идентифицирующий { bj никакого определяюшего-индикатора. содержащегося в С.

не являющийся пряммм наследником индикатором-вида дня формального или виртуального-описателя и

такой, что предикат 'ести ОБОЗНАЧЕНИЕ для ПРИЗНАКА находится в ?ПАРАХ' £7.2.1 .b} выполняется, то Е есть El,

иначе { L не необходимо дня С и } Е - окружение, необходимое для С в Е2.

{Окружение, необходимое для конструкта, используется в семантике текстов-процедуры (5.4.1.2) и в „устанавливании" (3.2.2.Ь) Например, о i 2 jitipon пуст рр: цел л; (|i 1 проц р = пуст: печ (п); рр := р), если Е1 и Е2 — окружения,устанавливаемые в результате исполнения последовательных-преяпожений, отмеченных примечаниям t 1 (1 и ji2^,ro Е2 - окружение, необходимое в El для текста-процедуры пуст: печ (п), так что процедура, выдаваемая р в El, составлена из этого текста-процедуры и Е2 (5.4.1.2). Следовательно, область дейавия данной процедуры есть об-

93

Страница 95

С.92 ГОСТ 27974-88

ЛЗСГЬ действия окружения Е2 (2.1.3.5.с),а отсюда вытекает, что присваивание (5.2.1.2.Ь). вызываемое посредством рр ; * р, корректно определено.

7.3. Эквивалентность видов

{ В этом разделе определяется эквивалентность или неэквивалентность различных 'ЗНАЧЕНИЙ . Обсуждение эквивалентных 'ЗНАЧЕНИЙ' см. в 2.1.1 }

{Один из способов увидеть рекурсивные виды - рассматривать их как бесконечные деревъя. Такое .«дерево вида'* получается повторной подстановкой в некотором выписывании 'ВИЛА' из соответствующего ЦИ определения ВИДА' вместо каждого 'использования ЦИ'. Таким образом, выписывание 'ни I определение структуры содержащей букву и лзт для выборки целого букву эн лат для выборки имени использования ци I а себе' будег создавать следующее дерево вида:

г

структура еодержшшя

'в ссбс"

'Су 1елу 'цдя и ллг' выборки'

1 1------ г

'целого* 'букву 'для

м лаг* выборки'

'имели'

Г

1

структур» содержания

1

'в ссбс’

, I- ,1 .....

—1 г

1

'букму Д11Я

целого букву 'для

н пат' ныборки’

ЭН 1Г«Т*

выборки'

[

'имени'

(и т.п.)

Два выписывания эквивалентны тогда и только тогда, когда они обусловливают идентичные деревья вида. Настоящий синтаксис эквивалентности проверяет эквивалентность двух выписываний посредством, так сказать, одновременного развертывания этих двух деревьев до тех пор, пока не найдется какая-нибудь разница (что приведет к тупику ) или пока не станет явным. что никакой разницы найтись не может. В некоторой степени структура деревьев вида отображается в растущем дереве порождения.J 7.3.1. Синтак<ш

A)    УКРЫТИЕ :: укрытое; НИ помнит ВИД УКРЫТИЕ; инь УКРЫТИЕ; ян УКРЫТИЕ: запомненные ЗНАЧЕНИЕ! ЗНАЧЕНИЕ2 УКРЫТИЕ.

B)    ПРОЛОГ :: ПРОСТОЕ; ПРИСТАВКА {?1а} ; структура содержащая;

94

Страница 96

ГОСТ 27974-88 С 93

7ПОЛВИЖНЫЙ МАССИВ иэ; процедура с; объединение; пустое значение.

C)    7ЭПИЛОГ :: ЗНАЧЕНИЕ; !ПОЛЯ в себе;

!ПАРАМЕТРАМИ вырабатывающая ЗНАЧЕНИЕ; ЮБЫЧНЫХ воедино; ПУСТО.

D)    ’ЧАСТИ :: ЧАСТЬ; !ЧАСТИ ЧАСТЬ.

E)    ЧАСТЬ :: ПОЛЕ; ПАРАМЕТР.

a)    ЕСЛИ ЗНАЧЕНИЕ1 эквивалентно ЗНАЧЕНИЮ2 [б4Ь, 71т, 72с:

ЕСЛИ укрытое ЗИАЧЕНИЕ1 эквивалентно укрытому ЗНАЧЕНИЮ2 { о} .

b)    ЕСЛИ УКРЫТИЕ1 ЗНАЧЕНИЕ! эквивалентны

УКРЫТИЮ2 ЗНАЧЕНИЮ2 { а. Ь, е, i, j, n} : если (УКРЫТИЕ1) содержит (запомненные

ЗНАЧЕНИЕ 1 ЗНАЧЕНИЕ2) или (УКРЫТИЕ2) содержит (запомненные ЗНАЧЕНИЕ2 ЗНАЧЕНИЕ1), ЕСЛИ истина; если неверно что (УКРЫТИЕ1) содержит (запомненные ЗНАЧЕНИЕ 1 ЗНАЧЕНИЕ2) или (УКРЫТИЕ2) содержит (запомненные ЗНАЧЕНИЕ2 ЗНАЧЕНИЕ!),

ЕСЛИ (ПРОЛОГЗ) есть (ПРОЛОГ4) и запомненные ЗНАЧЕНИЕ1 ЗНАЧЕНИЕ2 УКРЫТИЕЗ 7Э11ИЛОГЗ эквивалентны УКРЫТИЮ4 ?ЭПИЛ0ГУ4 £ b. d. е, k. q, -}, earn УКРЫТИЕЗ ПРОЛОГЗ 7ЭПИЛОГЗ развертываются из УКРЫТИЯ 1 ЗНАЧЕНИЯ! { с } и УКРЫТИЕ4 ПР0Л0Г4 ?ЭПИЛОГ4 развертываются из УКРЫТИЯ2 ЗНАЧЕНИЯ2 {с} .

c)    ЕСЛИ УКРЫТИЕ2 ПРОЛОГ 73ПИЛОГ развертываются

из УКРЫТИЯ 1 ЗНАЧЕНИЯ £ Ь. с} : сот (ЗНАЧЕНИЕ) есть (ПРОЛОГ ’ЭПИЛОГ).

ЕСЛИ (ПРОЛОГ) меняет УКРЫТИЕ! на УКРЫТИЕ2 [ 74з, Ь. с, d, -} ; если (ЗНАЧЕНИЕ) есть (ПИопределение ВИЛА), если неверно что (УКРЫТИЕ 1) содержит (ЦИ помнит),

ЕСЛИ УКРЫТИЕ2 ПРОЛОГ 73ПИЛОГ развертываются из ЦИ помнит ВИЛ УКРЫТИЯ ВИДА £ с}; если (ЗНАЧЕНИЕ) есть (использование ЦИ)

и (УКРЫТИЕ!) есть (ПОНЯТИЕ ЦИ помнит ВИЛ УКРЫТИЕЗ) и (ПОНЯТИЕ) содержит (ннь) и (ПОНЯТИЕ) содержит (ян),

ЕСЛИ УКРЫ ГИЕ2 ПРОЛОГ 7ЭПИЛОГ развертываются из УКРЫТИЯ! ВИЛА {с).

d)    ЕСЛИ УКРо!ТИЕ1 ’ПОЛЯ! в себе эквивалентны

УКРЫТИЮ2 !ПОЛЯМ2 в себе {. Ь/ :

ЕСЛИ УКРЫТИЕ1 1ПОЛЯ1 эквивалентны УКРЫТИЮ2 1ПОЛЯМ2 { (, g, h, i)

95

Страница 97

С 94 ГОСГ 27974-88

е) ЕСЛИ УКРЫТИЕ 1 'ПАРАМЕТРАМИ! вырабатывавшая ЗНАЧЕНИЕ1 эквивалентны УКРЫТИЮ2 .'ПАРАМ ЕТРАМИ2 вырабатывающей ЗНАЧЕНИЕ2 { bj:

ЕСЛИ УКРЫТИЕ! ’ПАРАМЕТРЫ1 эквивалентны УКРЫТИЮ2 !ПАРАМЕТРАМ2 { f,g, h, j) и УКРЫТИЕ! ЗНАЧЕНИЕ! эквиваленты УКРЫТИЮ2 ЗИАЧЕНИЮ2 {bj О ЕСЛИ УКРЫТИЕ! 1ЧАСТИ1 ЧАСТЫ эквивалентны УКРЫТИЮ2 1ЧАСТЯМ2 ЧАСТИ2 [d,e, (} :

ЕСЛИ УКРЫТИЕ 1 1ЧАСТИ1 эквивалентны УКРЫТИЮ2 !ЧАСТЯМ2 {f.g.h.i.j} и УКРЫТИЕ!

ЧАСТЫ эквивалентны УКРЫТИЮ2 ЧАСТИ2 {i.j}

g)    ЕСЛИ УКРЫТИЕ! 1ЧАСТИ1 ЧАС1Ы эквивалентны

УКРЫТИЮ2 ЧАСТИ2 {d.e, f} : ЕСЛИ ложь.

h)    ЕСЛИ УКРЫТИЕ 1 ЧАСТЫ эквивалентны УКРЫТИЮ2

1ЧАСТЯМ2 ЧАСТИ2 { <1, с, f) : ЕСЛИ ложь.

i)    ЕСЛИ УКРЫТИЕ1 СЛОВО! для выборки ВИДА1 эквиваленты

УКРЫТИЮ2 СЛОВУ2 для выборки ВИДА2 { d, f ):

ЕСЛИ (СЛОВО 1) есть (СЛ0В02) и

УКРЫТИЕ! ВИД1 эквивалентны УКРЫТИЮ2 ВИДА2 { bj.

]) ЕСЛИ УКРЫТИЕ1 параметр вила ВИД1 эквивалентны УКРЫТИЮ2 параметру вила ВИЛ2 { е. f}

ЕСЛИ УКРЫТИЕ 1 ВИЛ1 эквивалентны УКРЫТИЮ2 В ИДУ 2 ( b). к) ЕСЛИ УКРЫТИЕ! !ОБо1ЧНЫХ1 воедино эквивалентны УКРЫТИЮ2 ЮБЫЧНЫХ2 воедино ( ъ} :

ЕСЛИ УКРЫТИЕ! !ОБЫЧНЫЕ! входят п УКРЫТИЕ2 ЮБЫЧНЫЕ2 {1, m п} и УКРЫТИЕ? 10БЫЧНЫЕ2 входят в УКРЫТИЕ1 '.0БЫЧНЫЕ1 { 1, т, п} и число ЮБЫЧНЫХ! равно числу ЮБЫЧНЫХ2 [о, р} .

1) ЕСЛИ УКРЫТИЕ! ЮБЫЧНЫЕ1 ОБЫЧНОЕ 1 входят в УКРЫТИЕ2 ЮБЫЧНЫЕ2 { k, I, ш, 46s, 64b} :

ЕСЛИ УКРЫТИЕ 1 10БЫЧНЫЕ1 входят в УКРЫТИЕ2 ЮБЫЧНЫЕ2 f I, т, п} и УКРЫТИЕ! ОБЫЧНОЕ1 входят » УКРЫТИЕ2 10БЫЧНЫЕ2 { т, п}, щ) ЕСЛИ УКРЫТИЕ! ОБЫЧНОЕ1 входят в УКРЫТИЕ2 ЮБЫЧНЫЕ2 ОБЫЧНОЕ2 { к. 1, m, 46s, 64b) :

ЕСЛИ УКРЫТИЕ 1 ОБЫЧНОЕ 1 входя! в УКРЫТИЕ2 ЮБЫЧНЫЕ2 {т, п } или УКРЫТИЕ1 ОБЫЧНОЕ! входяг в УКРЫТИЕ2 ОБЫЧНОЕ2 { п}. п) ЕСЛИ УКРЫТИЕ 1 ОБЫЧНОЕ1 входит

в УКРЫТИЕ2 ОБЫЧНОЕ2 {k,l,m,64b};

ЕСЛИ УКРЫТИЕ1 ОБЫЧНОЕ1 эквивалентны УКРЫТИЮ2 ОБЫЧНОМУ2 { bj . о) ЕСЛИ число ЮБЫЧНЫХ1 0БЫЧН0Г01 ровно числу 10БЫЧНЫХ2 0БЫЧН0Г02 к, о } :

96

Страница 98

ГОСТ 27974-88 C.9S

ЕС ЛИ число ЮБЫЧНЫХI равно числу ЮБЫЧНЫХ2 {о, р. -}. р) ЕСЛИ число 0БЫЧП0Г01 рзвно числу 0БЫЧИ0Г02 { к. о ) : ЕСЛИ истина q) ЕСЛИ УКРЫТИЕ1 ПУСТО эквивалентны УКРЫТИЕ2 ПУСТО { b} : ЕСЛИ истина.

I Правило а вводит 'УКРЫТИЯ', используемые в ходе определения эквивалентности как зссоциатииная память. Таких 'УКРЫТИЙ' два, но одному дня каждого вида. Правило b приводит к немедленному заключению, если рассмагрмваемые 'ЗНАЧЕНИЯ' уже запомнены (см. ниже) в каком-нибудь подходящем 'УКРЫТИИ' в форме 'запомненные ЗНАЧЕНИЕ! ЗНЛЧЕНИЕ2'. Если это не гак, то указанные два 'ЗНАЧЕНИЯ' сначала запоминаются в 'УКРЫТИИ' (в том. которое слева), а затем каждое ’ЗНАЧЕНИЕ' развергывается (правило с) и разбивается на его 'ПРОЛОГ и его ’7ЭПИЛОГ', например 'имя вещественного’ разбиваекя на 'имя' и 'вещественное'

Если 'ПРОЛОГИ' различны, го вопрос решен (правило Ь); в противном случае данные '?ЭПИЛОГИ' анализируются в соответствии с их структурами (которые должны совпадать, если соответствующие 'ПРОЛОГИ' идентичны). Во всех случаях, кроме того, когда 'ПРОЛОГИ' были 'обьедине-ние', жвивалеитноаь проверяется исследованием соответствующих составляющих согласно схеме

правило ’?ЭПИЛОГ'    составляющие

d    'ПОЛЯ в себе'    '!ПОЛЯ'

е    'ПАРАМЕТРАМИ    ^ПАРАМЕТРЫ’и

вырабатывающая    ’ЗНАЧЕНИЕ'

ЗНАЧЕНИЕ’

f    ’ИЮЛЯ ПОЛЕ’    '!ПОЛЯ'и'ПОЛЕ'

f    ’!ПАРАМЬТРЫ ПАРАМЕТР'    'ПАРАМЕТРЫ' и ПАРА

МЕТР'

i    'СЛОВО для выборки    ВИДА'    'СЛОВО' и    ВИЛ'

j    'параметр вила ВИЛ'    'ВИЛ'

Для обьединения соответствующие ‘7ЭПИЛОГИ’ имеют форму ’ЮЬЫЧНЫХ! воедино' и ’ЮБЫЧНЫХ2 воедино'. Поскольку внутри жвивалет-ных объединений 'ОБЫЧНЫЕ' могут переставляться, как в специфицируемых об (вещ. цел) и об (цел. вещ) видах, то для них эквивалентноаь определяется проверкой того, что ^ОБЫЧНЫЕ!’ входят (в теоретико-множественном смысле) в ’!ОБЫЧНЫЕ2’ и ’ЮБЫЧНЫЕ2' входя1 в 'ОБЫЧНЫЕ!'; при этом, конечно, проверка на вхождение рекурсивно обращается к проверке жвивалентности (правила k, 1. ш, п,о, р).

Всякое 'ЗНАЧЕНИЕ’ развертывается (правило с) в форму ’НРОЛО! ?ЭПИЛОГ' посредством определения того, что:

(i)    оно уже имее! эту форму: в таком случае и его 'УКРЫТИЕ' могул помещаться маркеры ('ннь' и 'ян') для того, чтобы позднее определить правильность построения этого ’ЗНАЧЕНИЯ’ (см. 7.4);

(ii)    оно есть какос-ш 'ПИ определение ВИЛА* в этом случае в его 'УКРЫТИЕ' помещается 'НИ помнит ВИЛ' (при условии, что это конкрет-

4-1361    о7

Страница 99

С.96 ГОСТ 27974- 88

мое 'ЦИ' уже не гам),а затем развертывается этот ’ВИД';

(iii) оно есть некоторое 'использование НИ': в этом спуас в сто ’УКРЫТИИ' уже должно быть какое-то 'ЦИ помнит ВИД'. Тогда развертывается этот 'ВИД' после проверки на правильность построения (см. 7.4). состоящей в определении гою. что в этом 'УКРЫТИИ' перед рассматриваемым 'ЦИ помнит ВИД' находится по крайней мерс одно 'инь' и по крайней мерс одно hhj.

I Прежде чем пара '7ЭИИЛ0Г0В' проверяем на эквивалентность, в 'УКРЫТИИ' запоминается, что исходная пара 'ЗНАЧЕНИЙ' уже проверялась. Это делается, чтобы обязательно выйти прямо на ’ЕСЛИ истина’, если данные 'ЗНАЧЕНИЯ' когда-нибудь снова нужно будет проверять на эквивалентность на более низких уровнях дерева порождения Поскольку число пар составляющих тех 'ЗНАЧЕНИЙ', которые могут выводиться из двух любых данных 'ЗНАЧЕНИЙ', конечно, рассматриваемый процесс заканчивается.

Осчаетси показав, чк> этот процесс корректен. Рассмотрим неограниченное (возможно, бесконечное) дерево порождения, которое могло бы получиться. если бы в данном синтаксисе не было сокращающих выходов (что получится, если опустить первую альтернативу вместе с первым эвеном второй альтернативы в правиле Ь) Если два 'ЗНАЧЕНИЯ' неэквивалентны. то в их деревьях вида есть кратчайший пусть от корневой вершины к какой-то вершине, показывающей разницу. Очевидно, что изображение этого кратчайшею иути в неограниченном дереве порождения не может содержать повторяемой проверки на эквивХ1ентность никакой пары 'ЗНАЧЕНИЙ' и. значит, ни один из сокращающих выходов на 'ЕСЛИ истина' в ограниченном дереве порождения не может входиtt> в лот кратчайший путь Следовательно, этот путь до различия должен также присутствовать и в (oi раниченном) дереве порождения, порождаемом настоящим синтаксисом. Если указанный процесс проверки не показывает разницы в эгом ограниченном дереве, то ни за какое число шзгов нельзя обнаружить никакой разницы: т.е данные'ЗНАЧЕНИЯ'эквивалентны.}

7.4. Правильность построения { Вид правильно построен, если

(i)    исполнение фактического-описателя. специфицирующего это) вид является конечным действием (т.е. любое значение этого вида Можно хранить в конечной памяти) и

(ii)    он не является сильно приводимым из самого себя (поскольку это вело бы к дпусммсленносгям при приведении).}

7.4.1. Сынгаксчс

a)    ЕСЛИ (ПОНЯТИЕ) меняет УКРЫТИЕ на УКРЫ1ИЕ { 73с] .

если (ПОНЯТИЕ) есть (ПРОСТОЕ) или

(ПОНЯТИЕ) есть (’ПОДВИЖНЫЙ МАССИВ из) или (ПОНЯТИЕ) есть (объединение) или (ПОНЯТИЕ) ecib (пустое значение). ЕСЛИ истина.

b)    ЕСЛИ (ПРИПАВКА) меняет УКРЫТИЕ

98

Страница 100

ГОСТ 27974-88 С. 97

на нньУКРЫТИЕ {^Зс} : ЕСЛИ истина.

c)    ЕСЛИ (структура содержащая) меняет УКРЫТИИ

на яи УКРЫТИЕ {73с} ; ЕСЛИ истина.

d)    ЕСЛИ (процедура с) меняет УКРЫТИЕ

на ннь ян УКРЫТИЕ f 73с} : ЕСЛИ истина.

{ В качестве побочного Продукта выявления эквивалентности видов они проверяются нз правильность построения (7.3.1 .с). Все нерекурсивные виды правильно поароенм. Для рекурсивных видов необходимо, чтобы каждый цикл в каждом выписывании такого вида (от 'ЦИ определения ВИЛА' до 'использования ЦИ') проходил по крайней мерс через один 'ПРОЛОГ', который есть ннь, обеспечивая условие (i), и одни (возможно, тот же самый) 'ПРОЛОГ', который есть ян, обеспечивая условие (П). Инь 'ПРОЛОГАМИ' яплякнея ’ПРИСТАВКА' и ’процедура с’. Ян 'ПРОЛОГАМИ' являют-ся 'структура содержащая’ и 'процедура с'. Остальные'ПРОЛОГИ*, включая '7ПОДВИЖНЫИ МАССИВ из' и 'объединение', не являются ни инь. ни ян Это означает, что нее вилы, специфицируемые посредством а. b и с в вид а = ст (цел п. имя а след), b = ст (проц b след), с * проц (с) с. правильно построены. Однако

вид d с [1 : 10) d, с * об (цел, с) не есть описание вила }

8. ИЗОБРАЖЕНИЯ

[ Изображения, например 3.14 или ..абв", представляют собой конструкты. выдача которых не зависит ни от каких действий В некоторых других языках они иногда называются .литералами” или „констзщзми”.}

8.0.1.    Синтаксис

a)    изображаемое в СРЕДЕ выдающее ЗНАЧЕНИЕ {5D. А341 i} :

возможная последовательность пояснений f 92а.}.

изображение ЗНАЧЕНИЯ f 810а. 811а. 812а. 813а. 814а. 815а. 82а, Ь,

с. 83а.-}.

{ Смысл изображения не зависит ни от какой среды.}

81. Изображения простого

f Изображения-простого - это изображения арифметических значений, истинностных значений, литер и пустого значения, например 1.3.14, истина, „а" и пустое.}

8.1.0.1.    Синтаксис.

A)    РАЗМЕРНОЕ :: длинное, короткое.

B)*    ЧИСЛО :: натуральное число; рациональное число, действительное число.

' а) изображение РАЗМЕРНОГО ЧИСЛОВОГО { а. 80а/ : символ РАЗМЕРНОЕ { 94d}, изображение ЧИСЛОВОГО { а. 811а, 812а} .

b)*    изображение простого:

99

Страница 101

С 98 ГОСТ 27974 -Я8

изображение ПРОСТОГО fa. 81 la, 812а. 813а, 814а} ; изображение пусюго значения f815aJ .

(Пример: а > длин 0}

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

Выдача W иэобрзжения-ЧИСЛОВОГО есть „естественное значение” {s. 1.1.2, 8.1.2,2 а. Ь} его составляющего ЧИСЛА;

?рсбуется> чтобы W была не больше* чем наибольшее из различаемых {2 1.3.1.d} значений пила 'ЧИСЛОВОЕ'.

[И зображеи ис-Ч ИС ЛОВОГ О выдает арифметическое значение \2.1.3.1.а} . но выдаваемые различными иэображениями-ЧИСЛОВОГО арифметические значения не обязательно различны (, например, 12*i.4 и 1.234|0+2).}

8 1.1. Изображения целого 8 1.1.1. Синтаксис

a)    изображение целого {80л. 810а} : натуральное число {b}.

b)    натуральное число [а. 812с. d. f, i, A341h}: последовательность десятичных цифр {с}.

c)    десятичная цифра { b }: символ ЦИФРА {94Ь/

{ Примеры:

а) 4096    Ь)    4096

с) 4)

8-1.1.2. Семантика.

Естественным значением натурально го-числа N является целое число, десятичное Представление которого в эталонном языке есть это N ■[ 9.3.bJ . 8.1.2. Изображения вещественного 8.1.2.1. Синтаксис.

a)    изображение вещественного {80а, 810а}:

рациональное число {b}; действительное число {с}.

b)    рациональное число (a. f}:

возможная целая часть {с}, дробная часть {dj.

c)    целая часть { b) : натуральное число {81 lb} .

d)    дробная часть { Ь} :

символ точка {94b} и атуральное число {81 lb} .

e)    действнтелык>е число fa/ : мантисса {f}, порядок О мантисса {е} : натуральное число £S11;

рациональное число {b}. g) порядок {с}:

запись десятичного основания | К) , степень десяти {if. hi запись десятичного основания { g } ; символ на десять в степени { 94b}; символ буква е {94з) либо символ буква е лат {94а j . i) степень десяти (gj: возможные плюс или минус { j ].

натуральное число { 811 b}. j) он юс или минус {i} :    .

символ плюс { 94с} ; символ минус { 94сJ .

100

Страница 102

ГОСТ 27974-88 С.99

f Примеры:

a) O.OOI23 • 1.23с 3    Ь) 0.00123

с) О    d) 00123

с) 1.23с-3    0 123 - 1.23

g) с- 3    h) ,о • с

i) 3    j) f • }

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

a)    Естественное значение V рационального-числа N определяется следующим образом:

пусть 1 — естествешюе значение натурального числа его составляющей целой-части, если она есть, а иначе 0;

пусть F - естественное значение натурального-чнела его дробной-ча-щи Р, деленное на 10 в степени количества десятичных-цифр, содержащихся вР:

V - сумма, в смысле численного анализа, I и F.

b)    Естественное значение действительного-чнсла N определяется следующим образом:

пусть S - естественное значение ЧИСЛА его машиссы;

пусть Li - естественное значение составляющего натурально го-числа его порядка;

Случай Л: Составляющий возможный-шнос-лчи-минус этого N содержит символ-минус:

V    - произведение, в смысле численного анализа. S и числа 1/10. возведенного в степень В;

Случай В: Прямой наследник рассматриваемого возможного-нлюса-или-минуса содержит символ-плюс или пуст:

V    - произведение, в смысле численного анализа. S и чиста 10, возведенного в степень Е.

8.1.3.    Изображения логического

8.1.3.1.    Синтаксис.

а) изображение логического { 80а} :

символ истина {94b) ; символ ложь [94Ь/.

{ Примеры а) истина • ложь}

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

Выдача изображения-логического есть истина (ложь), если его прямой наследник есть символ-истина (символ-ложь).

8.1.4.    Изображения литерного

I Изображения-литерного состоят из элемента-строки, заключенного между двумя символами-кавычка, например "а*’. Чтобы изобразить кавычку. используют символ-образ-кавычки (представляемый как "" ), например" .’’Поскольку синтаксис нигае не допускает, чтобы изображения-литерного или-строкового следовали одно за другим, это не приводят к двусмысленности.}

8.1.4.1. Синтаксис, а) изображение литерного { 80а J :

101

Страница 103

С100 ГОСТ 27974-8Л

символ кавычка f 94Ь }. элемент строки {ь}. символ кавычка (94Ь} .    ^

b)    элемент строки fa. B3b) : элемент основного набора {с }:

символ образ кавычки {94bj ;

добавочный элемент строки {d }.    ,

c)    элемент основного набора { b, 92с J: символ БУКВА [ 94а/ ;

символ ЦИФРА [94Ь> ; символ точка {94b} ; символ открыть {94f}-. символ закрыть [94f>; символ запятая (94Ь) : символ пробел { 94Ь}: символ плюс {У4с} ; символ минус {94с}.

d)    Для понятия 'добавочный элемент сгроки'    {b, дня которого    в    тексте

настоящего стандарта не задано никакого    гиперправила,]    можно    до

бавить порождающее правило, каждая из альтернатив которого является символом { 1.1.3.l.f/, отличным от любого терминального порождения 'элемента основного набора' {с} и не являющимся 'символом кавычка'.

{ Примеры:

а) ”а”    Ь)    а    • " ” • ?

с) а • I ••(•)*.••• ♦ * “}

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

a)    Выдача изображения-лигерного есть естественное значение символа, наследного дня его элемент-строки.

b)    Естественным значением каждого отдельного символа, наследного для элемента-строки, является отличная от других литера.

{ Литеры не имеют специфического смысла, за исключением того, что некоторые из них интерпретируются особым образом описаниями обмена (10.3) Элемешы-основного-иабора, включающие все литеры, необходимые для обмена, образуют некоторое минимальное множество, обеспечиваемое, как ожидается, во всех реализациях (2.2.2.с).}

8.1.5. Изображение пустого значения

{ Иэобрэжение-пустого-значгния можно использовать, чтобы присвоить пустое значение перемениойвида-ПРЕДСТАВИТЕЛЬ, например об (I ) веш, пуст) и := пустое. J

8.1.5.1.    Синтаксис,

а) изображение пустого значения {80а/ : символ пустое f94b} .

{ Пример: а) пустое }

8.1 -5.2. Семантика.

Выдача всякого изображения-пусюго-значения есть пустое.

8.2.    Изо б р а же н и я битового

8.2.1.    Синтаксис

А) ДВОИЧНОЕ :: двоичное; четверичное; восьмеричное; шестнадцатеричное.

а) изображение структуры содержащей ДОЛГУЮ ?ДОЛГУЮ букву алеф для выборки

102

Страница 104

ГОСГ 27974-8а С. 101

вектора из логических в себе {а, 80а} : символ длинное {94d} . изображение структуры содержащей ?ДОЛГУЮ букву алеф для выборки вектора из логических в себе [а, с}.

b)    изображение структуры содержащей КРАТКУЮ

?КРАТКУЮ букву алеф для выборки вектора из логических в себе { Ь, 80э /: символ короткое I94d} , изображение структуры содержащей ?КРАТКУЮ букву алеф для выборки век гора из логических в севе { Ь, с}

c)    изображение структуры содержащей букву алеф для выборки

вектора из логических в себе {а, Ь, 80а} :

ДВОИЧНО*; основание {d, е, f, g }. символ буква эр лат {94а}, последовательность ДВОИЧНЫХ цифр [h. i, j, k): ДВОИЧНОЕ основание ^d, с, f, g J. символ буква я {94а}.

последовательность ДВОИЧНЫХ цифр {h, i, j, k J.

d)    двоичное основание {с, A347b} : символ цифра два {94b} с) четверичное основание {с, A347b):

символ цифра четыре [94b} .

f)    восьмеричное основание {с, A347b} :

символ цифра восемь { 94b} .

g)    шесжадцатеричнос основание {с, A347b} :

символ цифра один {94bJ. символ цифра шесть {94b} -

h)    двоичная цифра {с, ij .

символ цифра нуль {94b}: символ цифра один (94Ь/

i)    четверичная цифра {с. j} : двоичная цифра { Ь);

символ цифра два {94b}: символ цифра грм {94Ь/ . j) Восьмеричная цифра {с. к} четверичная цифра {i};

символ цифра четыре { 94b}: символ цифра пять {94b} , символ цифра шесть £ 94b} : символ цифра семь {94b} к) шестнадцатеричная цифра {с} : восьмеричная цифра { j };

символ цифра восемь {94b}; символ цифра девять {94b} : символ буква а лат {94а ) ; символ буква бе лат {94а }; символ буква цэ лат {94а} ; символ буква дс лаг { 94а} ; символ буква е лат {94а} : символ буква >ф лат {94а} ; символ буква а {94а}: символ буква б {94а} . символ буква ц { 94а}; символ буква д { 94а} : символ буква с { 94а}; символ буква ф { 94а}.

1)* изображение битового : изображение БИТОВОГО {а,Ь,с}.

{ БИТОВОЕ :: структура содержащая букву алеф для выборки вектора из логических в себе} и>)*машинная цифра: ДВОИЧНАЯ цифра {h, i.j, k}.

«03

Страница 105

C.I02 ГОСТ 27974-88

[ Примеры:

a)    длин 2г 101 • длин 2я101

b)    кор 16г ffff • кор 16я |{|ффф

c)    8г 231 • 8я231}

8.2.2. Семантика

a)    Выдача V изображения-битового D определяется следующим образом

пусть W • естес!венное логическое значение { b} его составляющей послеяовательности-ДВОИЧНЫХ-цифр;

• пусть m - длина этого W;

пусть п - значение Д размер бит fl0.2.1.jj, где Д означает длин (кор), повюреннос столько раз, сколько символов-длинное (символов-короткое) содержится в D;

требуется, чтобы ш было не больше п;

V - структура [ вида 'БИТОВОЕ'} . единственным полем которой является массив, имеющий (i) паспорт ((I. п)) и

(и) п элементов, выбираемых по (i), принимающих значение ложь, если I < i < п - т, и (i + т - п)-е истинностное значение из { последовательности} W в противном случае.

b)    Естественное логическое значение «оследовательности-ДВОИЧНЫХ-цифр S есть кратчайшая последовательность истинностных значений, которая. рассматривается как двоичное число (истина соответствует 1, а ложь — 0), совпадает с естественным целочисленным значением (с) последовательности S.

c)    Естественное целочисленное значение последовательности-двоичных-(-чс!веричных-, -восьмеричных-, -шестнадцатеричных-) цифр S есть целое чисто, двоичным (четверичным, восьмеричным, шестнадцатеричным) представлением которого в эталонном языке является S { 9.3.b}. где представления а(а), Ь(б),с(и),<1(д),е(е) и Г(ф) рассматриваются как цифры, имеющие значения 10, 11, 12,13,14 и 15 соответственно.

8.3. Изображения строки

{ Изображения-строки дают удобный способ спецификации „строк" т.е. массивов вида вектор из литерных’.

Пример:

строк сообщение :■ "все в порядке".}

8.3.1. Синтаксис

a)    изображение вектора из литерных {80а}:

символ кавычка { 94b}, возможная строка {b}, символ кавычка {94b}.

b)    строка {а} : элемент строки £8l4hJ .

последовательность элементов строки { 814b} .

c)*    изображение строки : изображение вектора из литерных { а} .

{ Примеры:

а) "абв"    Ь)    абв    }

104

Страница 106

ГОСТ 27974-88 С. 103

8.3.2. Семантика

Выдача изображения-строки D есть массив V, определяемый следующим образом:

•    пусть п - число элементов-строки. содержащихся в D:

•    паспорт V есть ((I. п));

•    для 1 = J,п элементом лого V с индексом (i) является естественное значение {8,!.4.2.b} i-ro составляющею символа строки этого D.

{"а" есть нзображение-лнгерното, а не изображение-строки. Однако во всех сильных позициях, например сгрок S :а "а”, оно может векторизоваться до некоторого массива (6.6) Во всех остальных местах, где требуется массив, можно использовать ядро (5.5.1.1 .а).

например,

об (лит.строк) cs :« строк ("а”).}

9. ЗНАКИ И СИМВОЛЫ

9.1.    Знаки

( Знаки (9.1.1.0 - это символы (9.1.l.h). возможно предшествуемые пояснениями (9.2.1.а). Следовательно, пояснения могут встречаться между символами повсюду, где синтаксис порождает непрерывный ряд знаков. Однако в нескольких местах синтаксис порождает исключительно символы, а не знаки, а именно в изображениях (8). текстах -формата (10.3.4.1.1л) и, конечно, внутри пояснений. Поэтому на таких местах пояснения встречаться не могут. J

9.1.1.    Синтаксис

a)    старт ВЫБИРАЮЩЕГО ОФОРМЛЕННЫЙ (34а}

если (ВЫБИРАЮЩЕЕ) есть (выбирающее но логическому), знак если ОФОРМЛЕННЫЙ { 94f. -}; если (ВЫБИРАЮЩЕЕ) есть (ВАРИАНТНОЕ), знак выбрать ОФОРМЛЕННЫЙ {94f, .

b)    вход в собственно ВЫБИРАЮЩЕЕ ОФОРМЛЕННЫЙ [34е}:

если (ВЫБИРАЮЩЕЕ) есть (выбирающее но логическому), знак то ОФОРМЛЕННЫЙ { 94f, }; если (ВЫБИРАЮЩЕЕ) есть (ВАРИАНТНОЕ), знак в ОФОРМЛЕННЫЙ f94f, }.

c)    продолжатель ВЫБИРАЮЩЕГО ОФОРМЛЕННЫЙ ( 341}:

если (ВЫБИРАЮЩЕЕ) есть (выбирающее но логическому), знак иначе если ОФОРМЛЕННЫЙ { 94f, -} ; если (ВЫБИРАЮЩЕЕ) есть (ВАРИАНТНОЕ), знак либо выбрать ОФОРМЛЕННЫЙ { 94f, ■}.    *    -

d)    выход собственно ВЫБИРАЮЩЕГО ОФОРМЛЕННЫЙ 1341/ ;

если (ВЫБИРАЮЩЕЕ) есть (выбирающее по логическому), знак иначе ОФОРМЛЕННЫЙ {94f, если (ВЫБИРАЮЩЕЕ) есть (ВАРИАНТНОЕ), знак либо ОФОРМЛЕННЫЙ { 94f, -J.

105

Страница 107

Г. 104 ГОСТ 27974-88

е) финиш ВЫБИРАЮЩЕГО ОФОРМЛЕННЫЙ f 34а} :

если (ВЫБИРАЮЩЕЕ) есть (выбирающее по логическому), знак все ОФОРМЛЕННЫЙ {94f. ■}: если (ВЫБИРАЮЩЕЕ) есть (ВАРИАНТНОЕ), знак конец выбора ОФОРМЛЕННЫЙ {94f,    .

П знак ПОНЯТИЕ:

возможная последовательность пояснений {92а} , символ ПОНЯТИЕ {94а, Ь. С, d, е. f, g, h) .

g)«    знак : знак ПОНЯТИЕ { ().

h)e    символ : символ ПОНЯТИЕ {94а. Ь. с. d. е, f, g, h) .

9.2.    Примечания и прагматы

{Всякое пояснение есть или примечание, или нрзгмат. Семантика пояснений не задастся, и. следовательно, смысл (2.1.4.1.а) любой программы полностью не зависит от их присутствия. В действительности предполагается. что все примечания должны полностью игнорироваться реализацией, их единственное назначение - помочь человеку, интерпретирующему программу.

С другой стороны, прагматы могут снабжать реализацию некоторым количеством информации, затрагивающей какие-то аспекты смысла данной программы, не определенные настоящим стандартом, например:

действие, которое следует предпринять при переполнении (2.l.4.3.h) или при нарушении правила об областях действия (. как ь

5.21.2.Ь),    например прагм включить проверку переполнения пр;им. прагм выклю'шть проверку переполнения прагм, прагм включить проверку облаоей действия прагм или прагм выключить проверку областей действия прагм;

действие, коюрпе слелус1 предпринять по завершении процесса трансляции, например прагм только транслировать прагм, прагм выдать содержимое нами in прлм или npaiM мнустить прагм:

• что язык, который пади рсали<она!ь, янляется некоторым подъязыком или надъязыком Ал юла 6К, например npaiM нерекурсивная прагм (для текстз-проиедуры. предполагаемой нерекурсивной):

чю трансляция может проверить истинность или попытаться доказать правильность некоторого утверждения. например; цеда.Ь: чит < (а. Ь)) прагм здесь а > ОЛЬ >О прагм: цел q :« 0, г :=а:

пока г > Ь прагм здесь а ■ b X q + г Л 0 < г npai м

цк (q I, г -:=Ь) кц

прагм здесь a=bXq + rAO<r<b прагм.

Прагматы можно также использовать, чтобы указать реализации, что данный входной текст надо дополнить каким-то другим текстом или отредактировать, например:

надо вызвать некоторую, предварительно оттранслированную порцию данной собственно-нрограммы. например прагм с модулем из библиотеки прагм.

106

Страница 108

ГОСТ 27974-88 C.l05

данный входной текст продолжается на некотором другом носителе, например прагм читать нэ другого файла прагм;

достигнут конец входного текста, например прагм конец прагм. 9.2.1. Синтаксис А) ПОЯСНЕНИЕ прагмах; примечание.

a)    пояснение l80a. 9lf, A341b, h,

А348а, Ь, с, А349а, А34А Ъ) : ПОЯСНЕНИЕ [ b] .

b)    ПОЯСНЕНИЕ {а/:

символ ПОЯСНЕНИЕ ОФОРМЛЕННЫЙ {94h, -} . возможная последовательность элементов ПОЯСНЕНИЯ ОФОРМЛЕННЫХ {с}, символ ПОЯСНЕНИЕ ОФОРМЛЕННЫЙ {94h. •} .

[ОФОРМЛЕННЫЙ :: краткий; выделенный; стиля НОМЕР.}

c)    элемент ПОЯСНЕНИЯ ОФОРМЛЕННЫЙ { b} :

элемент основного набора {814с}; добавочный элемент ПОЯСНЕНИЯ ОФОРМЛЕННЫЙ { d J.

d)    Для каждого понятия, обозначаемого 'добавочным элементом ПОЯС

НЯЯ ОФОРМЛЕННЫМ' {с, лля которого не задано никакого гипер-правила в настоящем стандарте }гможмо добавить порождающее правило, каждой альтернативой которого будет какой-нибудь символ { 1.1.3.I f}, отличный от любого терминального порождения понятия 'элемент основного наборз' {8.1.4.1.с} и такой, что никакое терминальное порождение добавочного элемента ПОЯСНЕНИЯ ОФОРМЛЕННОГО' не совпадает с соответствующим ’символом ПОЯСНЕНИЕ ОФОРМЛЕННЫМ' ( 94h. •}.

Так, например, примечанием может быть прнм t прим. но не МП.} Примеры: а) прагм листинг прагм • i исходная программа будет распечатана ft с) 1 •?}

9-3. Представления

a)    Всякий конструкт в строгом языке должен быть представлен в каком нибудь „языке представления”, таком, как „эталонный язык", используемый в настоящем стандарте. Другие языки представления, специально приспособленные к предполагаемым скломносгям интерпретирующего их человека, можно назвать языками „публикации”.

(Назначение настоящего эталонного языка - использование его для представления СОбственно-программы и их наследных конструктов. Однако в разд. 10 он также применяется для определения стандартной языковой обстановки- Язык представления, приспособленный для использования в машине, называется языком реализации. Требования к языку реализации содержатся в приложении 2. )

b)    Всякий „конструкт в языке представления” получается из терминального порождения Т {l. 1.3.2.f } соответствующего конструкта в строгом языке {1.1.3.2.eJ заменой всех символов в Т их представлениями, ко-

107

Страница 109

С106 ГОСТ 27974-88

горые для данного эталонного языка заданы в подразделе 9.4.

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

'символ начало стиля Г 'символ пропуск' символ коней стиля I

создает в эталонном языке собственно-программу начало пропуск конец./

9.4. Эталонный язык

a)    Настоящий эталонный язык предусматривает представления для различных символов, включая произвольно большое число символов-ОБОЗНАЧЕНИЕ [, где ОБОЗНАЧЕНИЕ :: СЛОВО: ИНДИКАНТ; ИНФИКС’ ПРЕФИКС.), Представления для некоторых нз них заданы ниже f9.4.l) . и к ним можно добавить подходящие представления для симво-лов-буква - АЛФАВИТА-стнля-НОМЕР и симиолов-префиксный-стиля-НО-МЕР, а также любые терминальные порождения 'добавочных элементов ПОЯСНЕНИЯ ОФОРМЛЕННЫХ’ {9.2.1 .d 7 и 'добавочных элементов строки' {8.1,4.l.dj. Ни для одного из них не предусмотрено предстаалений {. но эти представления могут вводиться отдельными реализациями, чтобы весь набор имеющихся у них знаков был доступен для использования в качестве литер, чтобы обеспечить дополнительные нли расширенные алфавиты для построения символов-СЛОВО и символов-ИНДИКАНТ и предусмотреть дополнительные символы лля использования в качестве обозначений-операций}. Однако нет[. и не должно быть, J никакого представления для сим-вола-буква-алеф и символа-первичный, за исключением представлений стандартного-вступления и других вступлений f 10.1.3.Шаг 6} . (Относитель-но прочих символов-ОБОЗНАЧЕНИЕ см. 9.4.2. Имеются также отдельные порождаемые синтаксисом символы, для которых вообще не предусмотрено представлений, например символ-прзгмат-краткий. Это не препятствует представлению таких символов в других языках представления.)

b)    Если для некоторого символа задано более одного представления, то может выбираться любое из них. Более того, для какой-нибудь реализа-ции эталонного языка достаточно обеспечить только одно из них. Также не обязательно предусматривать представление для каждого конкретного символ а-ПРЕФИКСНЫЙ нли символа-НЕПРЕФИКСНЫЙ при том условии, что обеспечивается представление по крайней мере для одной версии Оо.ЕЗ.Шэг 3} каждого обозначения-операции, описанного в стандартном-вступлении.

{Для некоторых разных символов заданы одинаковые или почти одинаковые представления; нанример. представление задано для символа-признак -процедуры, символа-двоеточие и символа-вплоть-до. а „ : " для символа-метка. Вне пределов примечаний, прагмагов или изображений-строки из синтаксиса однозначно вытекает, какой из этих четырех символов представлен вхождением любого знака, подобного одному из эгах представлений В этом случае также можно без какой бы то ни было ;дау-

Страница 110

ГОСТ 27974-88 С. 107

омыслсшюсти использовать для любого из них представление .. и для реализаций с ограниченным набором знаков это действительно может оказаться необходимым. Можно отмстить, что и таких реализациях не возникнет никакой двусмысленности и в случае, когда „(/” и „{)“ будут представлять символ-открьпь-нндексы-стиля-П и символ-закрыть-индексы-сти-ля-П соответственно.

Кроме того, некоторые из заданных представлений кажутся составными: так налример, представление    для символа-лрисвоить кажется

состоящим из ; ”, представления для символапризнак-ироцедуры и т.п., и    . представления для символа-равно и символа-опредсляется-как.

Тем не менее из синтаксиса следует, что за пределами примечаний, лрагма-тов и изображений-строки „ : = ” может встречаться только в качестве представления символа-лрисвоить (, поскольку „ = " не может употребляться в качестве представления обозначения-унарной-оперзции). Точно так же и другие заданные составные представления не приводят к двусмысленности.}

c)    Тот факт, что о заданных [9.4.1.a j представлениях символов-бук-ва-АЛФАВИТА обычно говорится как о малых буквах, не означает, что нельзя использовать соответствующие большие буквы.

d)    Пробел, переход на новую строчку или страницу - это „особенности типографского набор". Эти особенности не принимаются во внимание и, когда они появляются между символами какого-нибудь конструкта в эталонном языке, они не оказывают влияния на смысл этого конструкта. Однако пробелы, содержащиеся в пределах изображения-строки или изобра-жения-лигерного, являются одним из представлений символа-пробел [ 9.4.1.bj , а не особенностью типографского набора. Когда представление символа в эталонном языке состоит из нескольких знаков [, например, до, :*}, эти знаки образуют один {неделимый }сим»ол, и, если явно не оговорено противное { 9.4.2.2л. с} . особенности типографского набора не могут разделять их.

9.4.1. Представления символов а) Символы для букв

символ буква а символ буква б символ буква в символ буква г символ буква д символ буква е

символ


814с, 82к, 942В, А346Ь> 814с. 82К.942В. A344bi 814с, 942В >

прелставление

а

б

в

г

д

е

ж

з

и

814с, 942В)

814с, 82к, 942В. A342fJ 812h, 814с, 82k. 942В. А343еj

символ буква й 814с, 942В J символ буква к i814c, 942В. A341fJ символ буква л {814с, 942В. АЗ-41 f J

символ буква й символ буква к


й

к

л



Страница 111

С108 ГОСТ 27974-88

буква м { 814с, 942В j

буква н 814с,942В. A341h}

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

символ

м

н

0 п р с т У Ф

X

ц

ч

ш

щ

ъ

ы

ь

э

ю

я

а

b

с

d

е

f

g

h

1 j k 1

m

n

о

P

Я

r

s

t

u

V

w

X

У

буква о 814с, 942В)

буква п 814с, 942В, A341fi

буква р 814с, 942В. А347с}

буква с 814с, 82к, 942В, А348а)

буква т 814с, 942В }

буква у 814с, 942В, А34If}

буква ф 814с, 942В}

буквах {814с.942В, A341f}

буква ц }814с, 942В}

буква ч {814с. 942В }

буква ui { 814с, 942В}

буква ш 814с, 942В j

буква ъ 814с, 942В?

букваы 814с. 942В}

буква ь {814с,942В}

букваэ {814с. 942В}

буква ю { 814с. 942В i

буква я {814с, 942В }

буква а лат { 814с, 82k, 942В, A346b J

буква бс лат 814с, 82k, 942В. A344bj

буква це лат 814с, 82k, 942В. А348а)

буква ае лат 814с, 82k, 942В. А342Г/

буква е лат £ 812h, 814с, 82k, 942В. А343е]

буквз эф лат {814с, 82k, 942В, А349а}

буква ге лат {814с, 942Б. А43Аа}

буква аш лат { 814с, 942В }

буква и лат {814с, 942В. А345Ь/

буква йот лат [ 814с, 942В}

буква ка лат [814с, 942В, A341f }

буква эль лат ( 814с. 942В, A341f}

буква эм лат f 814с, 942В }

буквз эн лат (814с. 942В, A34lh)

буква о лат {814с, 942В}

буква пэ лаг 814с, 242В. A341f J

буква ку лат 814с, 942В. А341 f}

буква эрлат 814с,82с, 942В. А347с }

буква хлат 814с, 942В. А34Ц }

буква гэ лат { 814с, 942В }

буква у лат {814с. 942В }

буква велат {814с, 942В}

буква дубль ве лат {814с, 942В }

буква икс лат { 814с, 942В. А341 f }

буква игрек лат { 814с, 942В, A34lf }

110

Страница 112

ГОСТ 27974-88 C.1

символ буква зэглат {814с, 942В. A342dj

b)    Символы для изображений

символ

представле1ше

0

1 2

3

4

5

6

7

8 9

true истина falle ложь

empty пустое

представление

V

Л

&

*

<

<

>

>

I

f

%

Г

i

символ цифра нуль Г 811с, 814с, 82h, 942CJ

символ цифра один { 43Ь, 811с, 814с, 82g, h, 942Cj

символ цифра два / 43Ь, 81 Ic, 8I4c, 82d, i, 942Ci

символ цифра три { 43Ь, 811с. 814с, 82i, 942С J

символ цифра четыре { 43Ь, 81 Ic, 814с, 83е, j, 942С j

символ цифра пять } 43Ь. 811с, 814с. 82j, 942С }

символ цифра шесть ЫЗЬ. 81 lc. 814с. 82g, j, 942С }

символ цифра семь { 43Ь. 81 Ic, 814с, 82j, 942С )

символ цифра восемь { 43Ь. 811с, 814с. 82f, k. 942CJ

символ цифра девять { 43b. 8Uc, 814с. 82k, 942С }

символ точка | 8l2d, 814с. A343d }

символ на десять в степени ISl2h}

символ истина { 813а}

символ ложь {813а/

символ кавычка { 814а, 83а j

символ образ кавычки {814bj

символ пробел 814с J

символ запятая 814с I

символ пусгое 815а/

c)    Символы для обозначении операций

символ символ или {942Н } символ и {942Hj символ амлерсенд 1942HJ символ не равно f9421 li символ меньше {9421 i символ не больше { 942Н J символ не меньше (94211] символ больше {9421} символ разделить { 9421 i СИМВОЛ от до {94211} символ процент { 942НI символ элемент { 942Н / символ меньшее целое { 942Н } символ большее целое / 94211} символ плюс и ка {942н} символ не {942HJ символ тильда f 942Н/ символ вниз { 942Н ) символ вверх { 942Н] символ плюс {812j, 814с, 942Н, Д342е } символ минус { 8l2j, 814с. 942Н, А342еJ

Ш

Страница 113

C.l 10 ГОСТ 27974-88

символ равно {9421J символ умножкть { 9421) символ звездочка { 9421J символ присвоить направо {942J } символ присвоить /44f, 521а, 942J )

d)    Символы для описаний

символ символ определяется как {42b.43b.44c.45c) символ длинное {810а, 82а } символ короткое f810a, 82bl символ имя {46с} символ локальный { 523а, bj символ глобальный { 523а, Ь) символ структура { 46d J символ подвижное ( 46gj символ процедур { 44b, 46oj символ объединение (46s j символ операция {45а} символ приоритет [ 43а J символ вид {42а}

e)    Стандартные виды

символ символ целое ( 942 Е} символ вешествекное \942E/ символ логическое { 942Е} символ литерное .[942ЕЗ символ формат (942ЕI символ пустое значение {942F.} символ комялексное f942E } символ битовое {942ЕI символ слоговое f942Е] символ строковое I942Е) символ сема f 942Е} символ файл { 942EJ символ канал / 942Е}

f)    С и н г а к с и ч с с к и с символ

ы

символ

символ начало выделенный (133d } символ конец выделенный /133d I символ начало краткий /133d, A348b, A34Abj символ конец краткий {133d. A348b, A34Ab>

представление

long

ДЛИН

short

кор

ref

имя имени

loc

лок

heap

глоб

struct

ст структ

flex

под в

proc

проц

union

об

op

СП

prio

прио

mode

вид

представление

int

цел

real

веш

bool

лог

char

лит

format

форгют

void

пуст

compl

компл

bits

бит

bytes

слог

string

строк

sema

сема

file

файл

channel

J

канал

представление

begin

end

(


112

Страница 114

ГОСТ 27974- 88cut

символ начало сткля I J 133d) символ конец стиля I {l33di символ начало стиля U f133d} символ конец стиля II {133d j символ а также { 133с, 33b, f, 34h, 41а, b, 46с, i.q.t.S32b, S41e. 543Ь. A348b.A34Acfd } символ продолжать { 32Ь] символ завершить { 32Ь ) символ метка £32с/    ,

начало

конец

нач

кон

»

exit

выход

пар

символ параллельно { 33с 1 символ открыть f 814с} символ закрыть (814с) символ если выделенный (91а j символ то выделенный ( 91bj символ иначе если выделенный f 91cJ символ иначе выделенный f91d} символ все выделенный { 91е } символ выбрать выделенный { 91а } символ в выделенный {91Ь } символ либо выбрить выделенный {91с) символ либо выделенный { 91 d } символ коней выбора выделенный символ если кроткий {91а} символ то краткий {91b} символ иначе если краткий 191 cj символ иначе краткий {9ld} символ все краткий {91 е} символ выбрать краткий (91а} символ в краткий {91b} символ либо выбрав краткий {91с} символ либо краткий {91d} символ конец выбора краткий (91е/ символ если стиля I {91л} символ то стиля I f91bj символ иначе если стиля И {91с} символ иначе стиля 1 { 9Id} символ все стиля I { 91е} символ выбрать стиля f 91ai символ в стиля 1 {9lbJ символ либо выбрать стиля I { 91с} символ либо стиля 1 / 91 d } символ конец выбора стиля I (91е/ символ двоеточие {34\. к ) символ открыть индексы краткий {133е}

par

(

)

if

then el if else fi

case

In

ouse

out

esac

[91е\

если

то

инее

иначе

все

выб

в

ливыб

либо

быв

113

Страница 115

Cl 12 ГОСТ 27974-S8

символ закрыть индексы краткий { 133е ) ] символ открыть индексы стиля I ^ 133с j ( символ закрыть индексы стиля I {133е} ) символ вплоть до {46j, k, 1, 532f) символ с {532g} символ есть {522b} символ не есть { 522b} символ нил /524а) символ из {531а)

символ признак процедуры (541.. b} символ на выделенный (544Ь } симнол на краткий {544b} символ иди выделенный {544b} символ пропуск (S52aj символ форматор {A341aj

е

at

с

is

eciv

:/«:

isnt

О

nil

нил

of

из

goto

go

skip пропуск S

на

скип

ф

g)    Символы для циклов

представление

символ

символ для выделенный 135b)    for

символ нижний предел

выделенный {35dj    from

символ с шагом выделенный {35d}    by

символ верхний предел выделенный

{35d. 544b}    to

символ пока выделенный <35gj    while

символ цикл выделенный {35h}    do

символ конец цикла выделенный f35h} od символ для краткий f35bj символ нижний предел краткий (35dJ символ с шагом краткий {35d j символ верхний прсцеп краткий {35d} символ пока краткий f3Sgj символ цикл краткий (35h) символ коней цикла краткий |35hJ

для

от

шаг через

до

пока

ЦК

кц

представление

прим

Г1

прагм

h)    Символы для пояснений

символ

символ примечание краткий [92Ь/    с

символ примечание выделенный (92Ь/    comment

символ примечание стиля 1 {92b}    со

символ примечание стиля II { 92b)    #

символ примечание стиля III { 92b} символ примечание стиля 1III С92Ь) символ прагмах выделенный f 92b}    pragmat

символ прагмат стиля I (92Ь)    рг

символ прагмат стиля II ( 92bJ

1

Страница 116

ГОСТ 27974-88 С. 113

9.4.2 Символы прочих обозначений 9.4.2.1. .Метасинтаксис.

A)    СЛОВО {D, F, К, 48а. b.c, d} :: БУКВА (в) ;

СЛОВО БУКВА { В} : СЛОВО ЦИФРА (С)

B)    БУКВА {А} :: буква АЛФАВИТА {94а>;

буква алеф {- }; буква АЛФАВИТА стиля НОМЕР {■} .

C)    ЦИФРА [а} :: цифра нуль {'Mb} ; цифра один f94b} ;

цифра два ( 94b} ; цифра три { 94b} ; цифра четыре { 94b} ; цифра пять {94b} ; цифра шесть {94Ь) • цифра семь {'Mb} ; цифра восемь [ 94hJ ; цифра девять {94bJ.

D)    ИНДИКАНТ {48а, ь) :: выделенное СЛОВО {а,-};

?РАЗМЕРНОЕ СТАНДАРТНОЕ (B.J.

E)    СТАНДАРТНОЕ [Dj: целое {94ej ; вещественное { 94е} ;

логическое (94е1 ; литерное { 94е J ; формат {94е} ; пустое значение г 94е} ; комплексное |94ef ; битовое }94е} ; слоговое {?4е} ;

строковое {94е} , сема {94е j ; файл {94е } ; канал { 94е} .

F)    ИНФИКС {48а, bj :: выделенное СЛОВО ( А. -) ;

ЗНАК [G } '’ПРИСВОЕНИЕ { J j ;

ЗНАК { С } перед НЕПРЕФИКСНЫМ {I } ’ПРИСВОЕНИЕ £j/ .

G)    ЗНАК {Г/ :: ПРЕФИКСНЫЙ {Н} ; НЕПРЕФИКСНЫЙ {1}

H)    ПРЕФИКСНЫЙ /G.KJ ::или /94с) ; и {94с} ; амперсенд {.94с} ;

не равно (94с) ; не больше {94с/ ; не меньше {94с}; от до f'Mcj , процент {94с} ; элемент {94с} ; меньшее целое Г94с}; большее целое (94с/; плюс и на (94с/; не / 94с} ; тильда f94с} ; вниз / 94сI;

вверх Г94с} ; плюс 194с/; минус {94с} ; префиксный стили НОМЕР {-}.

I)    НЕПРЕФИКСНЫЙ {F.G.K} :: меньше {94cJ ; больше {94с};

разделить {94с}; равно {94с}; умножить {94с}; звездочка { 94с].

J) /ПРИСВОЕНИЕ {F, К} :: перед присвоить { 94с );

перед присвоить направо {94с} ". ПУСТО.

К) ПРЕФИКС {48а, b} :: выделенное СЛОВО /А,};

ПРЕФИКСНЫЙ (Н} 7ПРИСВОЕНИЕ Jj}; ПРЕФИКСНЫЙ (HJ перед {9422е} НЕПРЕФИКСНЫМ {1} ’ПРИСВОЕНИЕ { J }.

L) АЛФАВИТ {В} :: а;б;в;г;д;с;ж;з;и;й;к;л;м;н;о;п;р;с;т;у;ф;х; ц;ч; ш;ш;ъ;ы;ь: э; ю: я;

а лат; бе лат; це лат; де лат; е лат; эф лат; ге лат; аш лат; и лат; йот лат; ка лат; эль лат; эм лат; эн лат; о лат; пэ лат; ку лат; эр лат; эс лат; тэ лат; у лат; ве лат; дубль вс лат; икс лат; игрек лат; зэт лат.

М)*ЗНАКОВЫЙ :: ЗНАК /G} ; ЗНАК {с} перед

115

Страница 117

С114 ГОСТ 27974-88

НЕПРЕФИКСНЫМ (\).

/Метапонятне „АЛФАВИТ" предусмотрено и дополнение к метапоня-гию „ЛИТЕРА”, чтобы способствовать определению вариантов Алгола 68 (1-1 5 Ь).)

94.2.2. Представления.

a)    Представление кажаого символа-СЛОВО. не заданное выше f 9.4.1] , сосшнг из знаков, соответствующих но порядку 'БУКВАМ' или ’ЦИФРАМ , содержащимся в этом 'СЛОВЕ'. Эти знаки могут разделяться особенностями типографского Ha6opa{9.4.dJ Знзком, соответствующим каждой 'БУКВЕ' (’ЦИФРЕ1). является представление данного символа-БУКВА (символа-ЦИФРА) /Например, представлением символа-буква-х-цифра-одкн является х 1, что можт:о написать и как х 1, Символы-СЛОВО используются для идентификаторов и указателей-поля.)

b)    Представление каждого символа-выделенное-СЛОВО, если оно вообще существует, состоит из знаков, соответствующих по порядку 'БУКВАМ' или 'ЦИФРАМ', содержащимся в этом ’СЛОВЕ’ {. но без разделяющих их особенностей типографского набора f. Знак, соответствующий каждой ’БУКВЕ' ('ЦИФРЕ'), аналогичен знаку, представляющему соответствующий символ-ЬУКВЛ (символ-ЦИФРА). что воспроизводится в настоящем стандарте соответствующей буквой (цифрой). {Приемлемы также и другие способы указания этой аналогии, распознаваемые без дополнительных разъяснений. например, лицо, лицо. ЛИЦО, лицо и 'лицо' могут все быть представлениями для символа-выделенные-буквз-п-буква-и-буква-ц-буквао.}

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

c)    Представление каждого символа-РАЗМЕРНОЕ-? РАЗМЕРНОЕ-СТАН-ДАРТНОЕ состоит из представления соответствующего символа-РА3МI:Р-НОЕ с возможно следующими за ними особенностями типографского набора, за которыми идет представление соответствующего символa-?PA3Mt:P-НОЕ-СТАНДАРТНОЕ. Например, представление символэ-длинное-вещест-венное будет дпин вещ или. возможно, ’длин' 'вещ' (. но. согласно сказанному в и b выше, не длинвеш и не ’длинней/, так как последние могли бы быть представлениями для символа-выделенные-буквз-д-буква-л-буква-и-

Страница 118

ГОСТ 27974-88 C.l 15

буквз-н-буква-в-буква-е-буква-щ).Символы-',РАЗМЕРНОЕСТАНДАРТНОЕ используются для инликзюров вида.у

d)    Представление каждого символа-ЗНАКОВЫЙ-перед-присвоить (сим вола-ЗНАКОВЫЙ-перед-лрисвоить-напраао) состоит из знака или знаков прслстапляюших С001встствующнй символ-ЗПАКОВЫЙ, за которыми, бс вмешательства особенностей типографского набора, идут знаки, представ ляюнже символ-присвоить (символ-присвоить-напрзво). {Например, пред ставлением символа-плюс-перед-присвоить является *:». Символы-ЗНАКО ВЫЙ-перед-"’ПРИСВОЕНИЕМ используются для обозначений-операций /

e)    Представление каждою символа-ЗПАК-перед-НЕПРЕФИКСНЫМ со стоит из знака, представляющего соответствующий символ-ЗНАК, за кото рым без вмешательства особенностей типографскою набора, идет знак представляющий соответствующий символ-НЕПРЕФИКСНЫЙ, {Например представлением символа-от-до-псред-умиожигь является -т-Х. Символы ЗНАК-перел-НЕПРЕФИКСНЫМ2 могут быть только обозначениями-бинлр ной-онерзции. }

»0. СГАНДАГТЛАЯ ЯЗЫКОВАЯ ОБСТАНОВКА

[Данная „стандартная языковая обстановка" охватывает составляющие BHFIllHHE-встунлсния. системные-задачи и собственные заключения всяко-ю текста-программы. J

10.1 Тексты программ

(Программист имеет дело С епбетвенно-нрограммами (10.1.I g>. Последние всегда включены в текст-прогрз.ммы (10.1.1.а), содержащий также стзндзртное-вступленис. бибдиотсчное-вступлсние, зависящее от рехти-запии системное-встунлеиие и системные-задачи, соответствующие операционной обстзновке. возможно некоторые другие собсгвенно-программы, одно или несколько собственных вступлений (по одному для каждой из собственно-программ) и одно или несколько собственных-заключений.)

1011. Синтаксис

A)    ВНЕШНЕЕ : стандартное,

библиотечное; системное; собственное.

B)    СТОП :: буква хлат буква тзлат буква о лат

буква пэ лат для метки буква с буква т буква о буква н для метки.

a)    текст программы

знак начало ОФОРМЛЕННЫЙ {94fj. вступления в новом {ПУСТО] с СЛОЕМ 1 { Ь/ , знак параллельно { 94fJ,

УПАКОВКА задач в новом {ПУСТО J с СЛОЕМ 1 }<1/, знак коней ОФОРМЛЕННЫЙ { 94f}.

b)    вегуаления в СРЕДЕ1 |а|:

стандартное вступление с ЮПИСАНИЯ.МИ1 в CPEJLEI {с/, •

117

Страница 119

С. 116 ГОСТ 21974 -88

библиотечное вступление с 70ПИСАНИЯМИ2 в СРЕДЕ 1 [ с} , системное вступление с 70ПИСАНИЯМИЗ в СРЕДЕ1 [с}, если (СРЕДА 1) есть (новое ПУСТО с новыми !ОПИСАНИЯМИ 1 70ПИСАНИЯМИ2 70ПИСАНИЯМИЗ).

c)    ВНЕШНЕЕ вступление с 70ПИСАНИЯМИ1 в СРЕДЕ 1 {b,f}:

кортеж с 70ПИСАНИЯМИ1 сильно выдающий пустое значение вСРЕДЕ! (32b}, знак продолжать (94fj ; если (?ОПИСАНИЯ1) есть (ПУСТО), ПУСТО.

d)    задачи в СРЕДЕ1 {aj:

список системных задач в СРЕДЕ I [е] , знак а также (94f).

список УПАКОВОК задач пользователя в СРЕДЕ1 {Г/ . с) системная задача в СРЕДЕ 1 {dj : основа в СРЕДЕ!

сильно выдающая пустое значение (32d>

f)    задача пользователя в СРЕДЕ 1 ( d }:

собственное вступление с ЮПИСАНИЯМИ в СРЕДЕ2 {с /, УПАКОВКА собственно программы в СРЕДЕ2 [gj , знак продолжать f94fj. собственное заключение в СРЕДЕ2 {i}, если (СРЕДА2) есть (СРЕДА I с новыми ЮПИСАНИЯМИ {и} СТОПОМ).

g)    собственно программа в СРЕДЕ2 { f ) :

групповое определение меток через ’МЕТКИЗ в СРЕДЕ2 с новыми ’МЕТКАМИЗ {h} .

ЗАКРЫТОЕ предложение в СРЕДЕ2 с новыми "’МЕТКАМИЗ сильно выдающее пустое значение (31а, 33а, с, 34а, 35аJ ,

h)    групповое определение меток

через 7МЕТКИ в СРЕДЕ {g. h }: если (7МЕТКИ) есть (ПУСТО), ПУСТО: если (7МЕТКИ) есть (МЕТКА 1 7МЕТКИ1), определение метки через МЕТКУ 1 в СРЕДЕ {32с} , грч'пповое определение меток через 7МЕТКИ в СРЕДЕ {h}.

i)    собственное заключение в СРЕДЕ2 ({}:

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

{ Пример ы:

а) (с стандартное-вступление с; с библиотечное-вступленке с; с системкос-вступление с; пар начало с системная-задача ! с, с системная-задача-2 с,

(с собственное-вступление с;

118

Страница 120

ГОСТ 27974-88 С. 117

(старг: начать: нач пропуск кон); с собственное-заключение с),

(с другая-задача-пользователя с) конец)

Ь) с стандартное-вступление (10.2,10.3) с; с библиотечное-всгупление с: с системное-вступление (10.4.1) с;

«1) с системнаи-задача-1 (10.4.2.а) с. с системная-задача-2 с.

(с собственное-вступление с:

(старт: на<(ать: нач пропуск кои); с собственное-заключение с).

(с другая-задача-пользовагеля с)

f)    с собствениое-вступлеиие (10-5.1) с;

(старт: начать: нач пропуск кон); с собственное-заключение (105.2) с

g)    старт: начать: нач пропуск коп

h)    старт: начать:

i)    stop: стоп: снять (станд ввод);

снять (станд вывод); снять (станд обмен);

10.1.2. Соответствие языковой обстановке'

a)    Программа в строгом языке должна быть подобна (1.1.3.2.к } некоторому тексту-npoi раммы, составляющие ВНЕШНИЕвступления и собст-венные-заключения которого зздзются ниже в настоящем разделе.

{Удобно говорить о стандартном-вступлении, библиотечном-вступле-нии, собственно-программе и т.п. некоторой программы. когда рассматриваются фрагменты этой программы, соответствующие составляющему етандартному-вступлению и т.п. соответствующего текста-программы }

b)    Составляющим стандартным-вступлением всех текстов-программы является стандартнос-вступленис, представление которою получается {Ю.1.3} из форм, данных в подразделах 10.2 и 10.3.

c)    Составляющее библиотечное-вступление в настоящем стандарте не задано ни дая какого текста-программы {, но должно быть задано дня

•каждой реализации; синтаксисом 'текста программы’ гарантируется, что никакое описание, содержащееся в любом библиотечиом-вступлении. не может противоречить никакому описанию, содержащемуся в стандартном-вступлении. указанном выше, j

d)    Составляющим системным-вступлением (списком-системных-задач) всех текстов-программ является снстемнос-всгупление (список-систем-ных задач), представление которого получается из форм, данных в подразделе 10.4, с возможным добавлением других форм, не задаваемых и настоящем стандарте {. но которые задаются, чтобы удовлетворит!, гребля ниям операционной обстановки в каждой реализации }.

с) Каждым составляющим собствениым-встуллетшем (собс^еши.м-заключением) всех текстов-программ является собсгвенно-вступг“’Ч*е

\\9

Страница 121

С. 118 ГОСТ 27974-88

(собственно-заключение), представление которого получается из форм, данных в подразделе 10.S, с возможным добавлением других форм, не задаваемых в настоящем стандарте [, но которые задаются в каждой реализации}.

10.1.3. Способ описания стандартной языковой обстановки Представление ВНЕШНЕГО-вступления, системной-задачи или собст-венного-заключения получается за счет внесения изменений в каждую из форм в соответствующем разделе этой главы посредством следующих шагов:

Шаг I: Если данная форма F начинается с (символа-операция } оп и за ним идет один из знаков Р, Q, R или Е, то F заменяется рядом новых форм - копий формы F, в которых этот {следующий за оп) знак в каждой соответствующей новой форме заменяется (все другие вхождения этого знака в F заменяются) на:

Случай А: Знак ест». Р:

-, + ,<Х,*>или/

(-.♦,Х или /);

Случай В: Знак естьО:

< minusab, минпр. -

<    plusab, плюспр. ♦

<    timesab, умпр. X :■,* :«=    >    или

<divab,flennp,/:=>

(-    X    :=    или    /:*);

Случай С: Знак есть R:

•    <    С, It. мш >,<<,< =, 1е, нб >,

Ч =,еч,рв >,<Ф,1~, пе, ир>,

<>,>■.ge, нм > или <>,gt. бш >

(С,    или    >);

Случай D: Знак есть Е:

• < =, eq, рв > или < Ф, / *, пе, нр>

( * или Ф);

Шаг 2: Если в некоторой форме, возможно полученной на предыдущем шаге, встречается знак * , за которым идет какой-нибудь ИНДИКАТОР (указатель-поля) 1, то это вхождение *- удаляется, а каждый ИНДИКАТОР (указатель-поля), подобный (1.1.3.2.к) этому 1 и содержащийся в любой из форм, заменяется копией одного и того же ИНДИКАТОРА (указателя-поля), не встре-ающегося нигде в данной программе, после чего шаг 2 предпринимается снова. Шаг 3: Если данная форма F,.возможно измененная или полученная на предыдущих шагах, начинается с {енмвола-операция} ор, за которым идет разделенная символами-а-также-цепочка символов-АФФИКС, и эта цепочка заключена между < и >, то эта F заменяется рядом разных ее „версий", причем каждая из них является копией формы F н в ней данная цепочка вместе с охватывающими ее знаками < или > заменена одним из входящих в нее символов-

120

Страница 122

ГОСТ 27974-ад с. 119

АФФИКС £ : однако никакая реализация не обязана обеспечивав более одной из таких версий 9.4.Ъ)) .

Шаг 4: Если в данной форме, возможно измененной или полученной на предыдущих шагах» встречается заключенная между < и > последовательность S символов и в S встречаются L int, Я цел, L real, Д вещ, L compl, Л компл, L bits, Д бит. L bytes или Д слог, го S заменяется разделенной символамиа-тзкже цепочкой достаточ-ного числа последовательностей, причем n-я из них является ко-пией последовательности S и в ней каждой вхождение Д (Л, L, L, У. С) заменено повторенным п - 1 раз длин (длин, long, iong, удл, укр): за пой цепочкой идут символ-а-также и другая разделенная символами-а-также цепочка достаточного числа последовательностей, причем ш*я из них является копией последовательности S и в ней каждое вхождение Д (Д, L, L, У, С) заменено повторенным т раз кор (кор, short, short, укр, удл); после этого удаляются охватывающие S знаки < и >.

Шаг 5: Если в данной форме F, возможно измененной или полученной на предыдущих шагах, встречаются L int (Д цел, L real, Д веш, L compl, Д компл, L bits, Д бит, L bytes, Д слог), то эта F заменяется последовательностью достаточного числа новых форм, причем n-я из них является копией формы F и в ней каждое вхождение Д (Д, L, Ь,У, С) заменено повторенным п - 1 раз длин (длин, long, long, удл, укр) а каждое вхождение длин Д (длин Д, long L, long L) заменено повторенным п раз длин (дайн, long, long); за згой последовательностью идет другая последовательность достаточного числа новых форм; причем m-я из них является копией формы F и в ней каждое вхождение Д (Д, L, L, У, С) заменено повторенным ш раз кор (кор, short, short, укр, удл), а каждое вхождение длин Д (длин Д, long L, long L) заменено повторенным m - 1 раз кор (кор, short, short).

Шаг 6: Каждое вхождение F (I1EPB) в любую форму, возможно измененную или полученную на предыдущих шагах, заменяется неко-горым представлением символа-буква-алеф (символа-нсрвичный)

Шаг 7: Если в любой форме, возможно измененной или полученной на предыдущих шагах, встречается последовательность представлений, начинающаяся и оканчивающаяся знаками с, то эта последовательность, называемая „псевдопримечакием”, заменяется некоторым представлением описателя или замкнутого-предложения, неформально задаваемого данной последовате/тыюстыо.

Шаг 8: Если в любой форме, возможно измененной нли полученной на предыдущих шагах, встречается текст-процедуры, вызов которого включает действия с вещественными числами, то этот текст-процедуры. можно заменить любым другим текстом-процедуры, вызов ко юрою имеет приблизительно тот же эффект -.{степень такого

121

Страница 123

С. 120 ГОСТ 27974-88

приближения оставлена в настоящем стандарте не определенной (см. также 2.1.3.1.е)} .

Шаг 9: В случае ВНЕШНЕГО-встуиленмя в его конце добавляется форма. состоящая из символа-про пуск, за которым идет символ-продолжать ^пропуск;! .

Шаг 10: Если в любой форме, возможно измененной или полученной на предыдущих шагах, встречается последовательность А1|1Р1ЛЛ2|*Р2Л...ЛпПРпЙАп + 1 , где Л, - идентификаторы, а Р( - последовэтельностиолсментов-пояс-меннй, то зта последовательность заменяется на последовательность Л1А2...АпАп»1^А1Р1А2Р2...ЛпРпЛп«| й Шаг II: Если некоторая форма F. возможно измененная или полученная на предыдущих шагах, представляет собой описание некоторого индикатора 1. представление которого содержит буквы русского алфавита, перечисленные в п. 2.1 приложения 2, го дополнительно вводится еще одна форма, получаемая из F заменой всех таких букв в первом вхождении индикатора i в F на соответствующие буквы латинского алфавита {Термин достаточное число", использованный выше в шагах 4 и 5, подразумевает, чго никакая собс1вс1шо-про1рамма не может иметь другого смысла или не порождаться синтаксисом только из-за недостаточности этого числа-j

Повсюду {в описаниях обмена] . где в иэображении-дитерного или изображении-строки встречаются представления l0 (V I), они должны интерпретирования как представления элемснтов-строки (8.1.4 l b}, применяемые для указания (символов } „на десять в степени” (некоторой альтернативной формы „на десять в степени'Ч. если она ссть>, „плюс и на") на внешних носителях. { Ясно, что эти представлении выбраны из-за их подобия представлениям символа-на-десягь-в-степени (9.4.1 Ь) и символа-и-плюс-и-на (9.4.1.с), но на носителях, для которых эти литеры недоступны, надо выбирать другие элементы-строки (и символ-буква-с-лат с символом-буква-и-лат очевидные кандидаты).}

{ Все описания в данном разделе предназначены для гого. чтобы четко определить их действие. То же действие вполне можно получить и более эффективными способами.)

10.2. Стандартное вступление

{ Описания данного стандартного-вступления включают „запросы к обстановке", поставляющие информацию о конкретных особенностях данной реализации (2.2.2.с), „стандартные виды", „стандартные обозначения операций и функции", „опеоадии синхронизации" и (данные в подразделе 10.3) „описанияобмена”.}

10.2.1. Запросы к обстановке а) цел число длин цел = с 1 плюс число добавочных удлинений целых чисел (2.1.3Л.<)} с: цел int lengths = число длин цел:

122

Страница 124

ГОСТ 27974-48 С. 121

b)    исл число кор исл * с 1 плюс число добавочных укорочений целых чисел

(2.1.3.1.d} с; цел int shorths = число кор цел;

c)    Д цел Д макс цел ■ с наибольшее Д цел значение { 2.2.2.bj с;

Д цел L ш^х int ■ Д макс цел;

d)    цел число длин веш ■ с 1 плюс число добавочных удлинений веществен

ных чисел £2.1.3.1-dJ с; цел real lengths = число длин вещ;

e)    цел число кор веш = с 1 плюс число добавочных укорочений веществен

ных чисел [2.1.3.1.df с; цел real shorths - число кор вещ;

Г) Д веш макс вещ ■ с набольшее Д веш значение { 2.2.2.b} с;

Д вещ L max real = Д макс вещ;

g)    Д вещ Д точность вещ «* с наименьшее Д вещ значение, такое, что как Д 1 + Д точность вещ >Д 1,так и Д1 - Д точность веш < Д1 { 2.2.2.Ъ} с;

Д вещ L small real • Д точность вещ;

h)    цел число длин бит * с 1 плюс число добавочных размеров {j} битовых с;

цел bits lengths ■ число длин бит;

1) цел число кор бит = с 1 плюс число добавочных размеров fj) коротких битовых с: цел bits shorths ■ число кор бит; j) цел Д размер бит * с число элементов в Д бит; см. Д бит fl0.2.2.gj ; зто число увеличивается (уменьшается вместе с ..размером”, т.е. с числом 'длин' (взятым с обратным знаком числом 'кор'), из которых составлено 'Д\ до достижения определенного размера, а именно „числа добавочных размеров" (взятого с обратным знаком „числа добавочных размеров коротких”) битовых, после чего оно остается постоянным с; цел L bits width - Д размер бит; к) цел число длин слог * с 1 плюс число добавочных размеров (т) слоговых с;

цел bytes lengths = число длин слог;

1) цел число кор слог = cl плюс число добавочных размеров коротких

(т) слоговых с; цел bytes shorths * число кор слог; т) цел Д размер слог = с чиспо элементов в Д слог; см. Д слог {l0.2.2 J»} ; это число увеличивается (уменьшается) вместе с „размером”, т.е. с числом 'длин'J[взятым с обратным знаком числом ’кор'), из которых составлено 'Д, вплоть до достижения определенного размера, а именно „числа добавочных размеров" (взятого с обратным знаком „числа добавочных размеров коротких") слоговых, после чего око остается постоянным с;

цел L bytes width ■ Д размер слог; n) оп < абс, abc> - (лит а) цел: с целочисленный эквивалент f2.1.3.Lgj литеры а с;.

123

Страница 125

С. 122 ГОСТ 27974-88

0)    оп < пред, герг > - (цел а) лит: с та литера 'х\ если она существует, для дня которой абс х * а с;

р) цел макс лит * с наибольший целочисленный эквкиалент {2.1.3.1 .g] литеры с:

цел шах abs char = макс лит; q) лит заполнитель = с некоторая литера с;

лит null character = заполнитель; г) пит да = с литера, используемая для представления 'истина' во время обмена (l0.3.3.1.а, 103 J.2.a } с; лит flip * да;

s) лит нет = с литера, используемая для представления 'ложь' во время обмена с;

лит flop - нет;

*) лит литера ошибки = с литера, используемая во время обмена для пред. ставления непреобразуемых арифметических значений {10.3.2.J.b,с,d, е, f } с;

лит crrorchar ■ литера ошибки; и) лит пробел »"iH; лит Ыалк = пробел;

10.2.2.    Стандартные виды

a)    вид пуст = с фактический-описатель. специфицирующий вид ’пустое зна

чение’ с; вид void • пуст;

b)    вид лог ■ с фактический-описатель. специфицирующий вид логическое'

с;

вид bool * лог;

c)    вид Д цел * с фактический-описатель, специфицирующий вид 'Д цел' с;

вид L int * Д цел с;

d)    вид Д вещ ■ с фактический описатель, специфицирующий вид ’Д вещ' с;

вид L real • Д вещ;

e)    вид лит - с фак1ический-описатель, специфицирующий вид 'литерное' с;

вид char = лит;

О вид Lcompl = ст (Д вещ re, im); вид Д комам = L compl;

g)    вид Д бит = ст ([1 :Д размер бит) лог Д F); (см. 10.2.1 -j } {Этот ука-

ззтель-поля скрыт от пользователя для того, чтобы он не мог проникнуть внутрь данной структуры; в частости, он не может индексировать данное поле.) вид L bits *Дбит;

h)    вид Д слог «ст ((1 : Д размер слог) лит ДЯ); {см. 10.2.1 лп}

вид L bytes ■ Д слог;

1)    вид строк ■ подв (1 : 0] лит;

вид string = строк;

10.2.3.    Стандартные обозначения операций и функций 10.2.3.0. Стандартные приоритеты.

124

Страница 126

ГОСТ 27974-88 С. 123

а) прио минпр = 1, mlnusab = 1, плюспр = 1,    plusab =    1,    умпр    ■!, timcsab    •

= ], делпр = 1, divab - 1, цедпр ■ 1. overab = 1,    модпр =    1, modab =    I,

прип = J, plus to - i,

%:==1,+X:*e 1,+*:= * 1. %Х:- ■ 1,%*:== 1,+=:= 1,

V = 2, или = 2, or * 2, Л в 3, & и 3, и = 3, and = 3,

= = 4, рв ■ 4, eq ■ 4, Ф ■ 4, / ■ ■ 4, нр = 4, пс = 4,

< ■ 5, мш ■ 5, И ■ 5, <■ 5, < ■ ■ 5, нб - 5,1е ■ 5,

> = 5, > = = 5, нм = 5, ge = 5, > я 5, бм = 5, gt = 5,

- = 6, + = 6,

X = 7, ♦ = 7,'/ - 7, + « 7, % - 7, цед * 7, over = 7,

-5-Х=7, -г**7,%Х * 7, % • “ 7, мод - 7, mod - 7,

□ = 7, элем = 7, elem = 7, t = 8, •• = 8,1 = 8,

вверх = 8, up = 8, вниз = 8, down = 8,

лев = 8, shl = 8, прав = 8, shr = 8, нигр = 8,    Iwb = 8,

вегр = 8, upb = 8, L= 8, Г = 8,

i = 9, +X = 9, +•'= 9, им = 9, i * 9;

10.2.3.1.    Массивы и связанные с ними операции.

a)    вид массив ■ с фактический-описатель, специфицирующий вид, объеди

ненный из {2.1.3.6.а} досгаточного набора видов, каждый из которых начинается с вектор с;

b)    оп < нигр, Iwb, L > * (цел п, массив а) цел: с нижняя граница в л-й гра

ничной паре паспорта значения 'а', если эта граничная пара существует с;

c)    оп < вегр, upb, I— > = (цел п, массив в) цел: с верхняя граница rn-й гра-

ничной паре паспорта значения 'а', если эта граничная пара существует с;    •

d)    оп < нигр, lwb,l_ > ■ (массив а) цел: 11_а;

e)    оп < вегр, ирЬ,Г> = (массив а) цел: ILa;

{ Термин .достаточный набор”, использованный выше в (а), а также в 10.3.2.2.Ь и d, подразумевает, что никакая имевшаяся в виду собственно-программа не может не порождаться (никакая не имевшаяся в виду собст-венно-программа может порождаться) синтаксисом только за счет недостаточности видов в этом наборе.}

10.2.3.2.    Операции над логическими операндами.

a)    on <V, или, or > ■ (лог а, Ь) лог: (а I истина I Ь);

b)    он < Л &, и, and > = (лог а, Ь) лог: (а |Ь| ложь);

c)    оп < -г», не, not > = (лог а) лог: (а I ложьI истина);

d)    оп < =, рв, eq > = (лог а, Ь) лог: (а.Лb) V (п • А ^Ь);

e)    оп < Ф, /=, нр, пе > =(лог а), Ь) лог: '■? (а * Ь);    1

{) оп < абс, abc > * (лог а) цел: (a I 1 I 0);

10.2.3.3.    Операции над целыми операндами.

а) оп < <, мш, It > = (Д цел а, Ь) лог: с истина, если значение 'а' меньше {2.1.3.1л} значения V, а иначе ложь с;

125

Страница 127

С. 124 ГОСТ 27974-88

b)    оп«£,<-,нб, к > ■ (Д цел а, Ь) лог: ~»(Ь <а);

c)    оп < =, рв, eq > = (Д цел а, Ь) лог: а < b Л b < а ;

d)    on < Ф, I •, нр, пе > = (Д цел а, Ь) лог: “* (,а = Ь); с) on < >, > • нм. ge > = (Д цел а, Ь) лог: b < а;

f)    on О, бш. gt > ■ (Д цел а, Ь)    лог:Ь<а;

g)    оп - = (Д цел а. Ь) Д цел:    с значением 'а' минус{ 2.1.ЗА.с) значение

Vc;

h)    on - = (Д цел а) Д цел: Д 0 - а;

i)    оп + в (Д цел а, Ь) Д цел: а--Ь;

j) оп ♦ * СД “ел а) Л цсл: а:

к) on < абс, abs > = (Д цел а)Д цел: (а < Д О I - аI а);

1) on < X, • > - (Д цел а, Ь) Д цел: начало Д цел 8:» ДО. i : = абс Ь; пока i > Д 1

цк s :■ s + a; i :■ i — Д 1 кц:

(Ь <Д01 - si s) конец;

m) on < +, %. цел, over > ■ (Д цел а, Ь) Д цел: если b Ф Д О

го Дцел q ^ДО^г :=абса;

пока (г г — абсЬ) >Д0ик q := q +Д1 кц;

(а <Д0ЛЬ>Д0Уа>Д0АЬ<Д01-ql q) все;

п) оп <* X, *, % X, %•, мод, mod > = (Д цел а, Ь) Д цел:

(Дцел г = а- а-5-ЬХЬ;г<01г + абсЫ г); о) оп / - (Д цел а, Ь) Д вещ: (Д вещ (а) / Д вещ (Ь); р) on < t, • •, вверх, up > = (Д цел а, цел Ь) Д цел:

(Ь> О 1Д цел р : = Д 1: до Ьцк р :=рХ а кц; р); q) on <удл, leng > = (Д цел а) длин Д цел: с длинное Д цел значение, удлиненное из (2.1 значения'а'с; г) оп < укр, shorten > 3 (длин Д цел а) Д цел: с Д цел значение, если оно существует, которое можно удлинить до {2.1.3.1л} значения V с; s) on < нчт, odd > = (Д цел а) лог: абса-гХД2 = Д1; t) on < знак, sign > = (Д цел а) цел:

(а > Д 0111 :а<Д01-П 0); u) on < 1, + X. + •, i, им > = (Д цел а, Ь) Д компл: (а. Ь);

10.2.3.4. Операции над вещественными операндами.

a)    оп < <, мш, It > ■ (Д веш а, Ь) лог: с истина, если значение 'а' меньше

{2.1.3.1 .е } значения V, а иначе ложь с;

b)    оп < <. < -. нб. 1е > = (Д вещ а. Ь) лог: —» (Ь < а);

c)    оп < ■, рв, eq > = (Д вещ а, Ь) лог: а < b л b < а;

d)    оп < Ф, I ■, нр, пе > • (Д вещ а, Ь) лог: -п (а » Ь); с) оп <>,>=, им, ge > ■ (Д веш а, Ь) лог: b < а;

f) оп < >, бш, gt > = (Д вещ а, Ь) лог: b < а;

126

Страница 128

ГОСТ 27974 -88 С. Ш

g)    on - » (Я вещ а, Ь) Д вещ:

с значение 'а' минус { 2.1.3.1 .с } значение V с;

h)    оп - * (Д веш а) Д вещ: ДО - а;

i)    оп + = (Д веща, Ь) Д вещ: а--Ь;

j) on + = (Д веш а) Д веш: а;

к) оп <абс, abs> в (Д веша) Д вещ:    (а <Д0 1-а1    а);

1) on < Х,*> ■ (Д веш а, Ь) Д веш: с    значение    'а', умноженное на{2.1.3.1.с}

значение V с;

ш) оп / • (Д веш а. Ь) Д вещ: с значение 'а', деленное на {2.1.3.1 .е } значение V с;

n) оп < удл. leng > ■ (Д вещ а) длин Д вещ: с длинное Д веш значение, удлиненное из (2.13.1.е) значения'а'с; о) оп < укр, shorten > * (длин Д вещ а) Д вещ: с если

абс а < удл Д макс вещ, то Д веш значение V такое, «по для любого Д вещ значения V абс (удл v - а) < абс (удл w - а) с; р) оп < окр, round > =■ (Д вещ а) Д цел: с Д цел значение, если оно существует, обобщаемое до {2.1 -3.1л} некоторого Д вещ значения, отличающегося не более чем на одну вторую от значения 'а' с; q) оп < знак, sign> = (Д вещ а) цел:

(а > Д 011 I : а <Д01 — 11 0); г) оп < целч, entier, I- > = (Д веш а) Д цел: начало Д цел j :*»Д0; пока j <а цк j :»j + Д 1 кц; пока j >а цк j :«j -Д1 кц; j

конец;

s) оп<1,+ Х, + *, i, нм>= (Д веш. а, Ь) Дкомпл: (а, Ъ);

10.2.3.5.    Операции над_арифмегическимн операндами

a)    on Р = (Д вещ а, Д цел £) Д вещ: а Р Д вещ (Ъ);

b)    on Р = (Д цел а, Д вещ Ь) Д вещ: Д вещ (а) Р Ь;

c)    on R ■ (Д вещ а, Д цел Ь) лог: a R Д вещ (Ъ);

d)    on R ■ (Д цел а, Д вещ Ь) лог: Д веш (a) R Ь;

e)    оп<1,+ Х, + *,Ь> (Д веща, Д цел Ь) Дкомпл: (а,Ь);

f)    оп<1,+X, + *,b>= (Д цел а, Д веш Ь) Дкомпл: (а.Ь);

g)    on < t, • •, вверх, up > - (Д вещ а, цел Ь) Д вещ:

(Двещр:=Д1; до абс Ьцк р :=рХ а кц;

(b>0lpl Д1 /р)):

10.2.3.6.    Операции над литерными операндами.

a)    onR= (лита, b) лог: абс a R абс Ь; { 10.2.1л}

b)    оп *■ = (лит а, Ь) строк: (а, Ь);

10.2.3.7.    Операции над комплексными операндами.

a)    оп < вч. ге > * (Д комлл а) Д вещ: ге из а;

b)    оп < мч. im > = (Д компл а) Д вещ: im из а;

c)    оп < абс, abs > = (Д компл а) Д вещ:

127

Страница 129

С 126 ГОСТ 27974

Д корень (вч a t 2 ♦ мч a t 2);

d)    on < apr, arg > = (Д компл а) Д вещ:

если Д вещ вч * вч а. мч = мч а;

вч^ДО V/мч* ДО

го если абс вч > абс мч

го Д арктанг (мч / вч) + Д пи / Д 2 X

(мч<Д01знак вч - II I - знак вч)

иначе - Д арктанг (вч / мч) + Д го/Д 2 X знак мч

все

все;

e)    оп < сопрж, oonj > * (Д компл а) Д компл: вч а 1 - мч а;

f)    оп < =, рв, eq > • (Д компл а, Ь) лог:

вч а ■ вч ЬЛ мч а = мч Ь;    %

g)    on < Ф,1 ■, нр пе > = (Д компл а, Ь), лог: 1 (а = Ь):

h)    оп-■ (Д компл а, Ь) Д компл:

(вч а - вч b) 1 (мч а -мч Ь);

i)    on - » (Д комол а) Д компл: - вч а 1 - мч а: j) on + = (Д комля а, Ь) Д компл:

(вч а + вч b) 1 (мч а + мч Ь); к) оп + = (Д компл а) Д компл : а;

1)оп< Х,*>“ (Д компл а, Ь) Д компл:

(вч а X вч Ь) - мч а X мч b) 1 (вч а X мч b + мч а X вч Ь); т) оп / * (Д компл а, Ь) Д компл:

(Д вещ d * вч (Ъ X оепрж Ь); Д компл n = а X сопрж Ь; (вчп/d) 1 (мч п/ d)); n) on < удл, leng > = (Д компл a) long Д компл: удл вч а 1 уди мч а; о) оп < укр, shorten > ■ (long Д компл а) Д компл: укр вч а 1 укр мча; р) on Р = (Д компл а. Д цел Ь) Д компл: а Р Д компл (Ь); q) on Р = (Д компл а, Д вещ Ь) Д компл: а Р Д компл (Ь); г) on Р - (Д цел а, Д компл Ь) Д компл: Д компл (а) РЬ; s) on Р ■ (Д вещ а, Д компл Ь) Д компл: Д компл (а) РЬ; t) on < t, * • , вверх, up >■ (Д компл а, цел Ь) Д компл:

(Д компл р:жД1; до абс Ь цк р := р X а кц;

(Ь> 0 Ipi Д1 / Р)); u) on Е * (Д компл а, Д цел Ъ) лог: а Е Д компл (Ь); v) on Е ■ (Д компл а, Д вещ Ь) лог: а Е Д компл (Ь); w) on Е ■ (Д цел а, Д компл Ь) лог: b Е а; х) on Е ■ (Д вещ а, Д компл Ь) лог: b Е а; у) оп ивч = (имя Д компл а) имя Д вещ: ге из а; г) оп имч = (имя Д компл а) имя Д вещ: im из а;

128

Страница 130

ГОСТ 27974-М С. 127

10.2.3.8. Битовые и связанные с ними операции

a)    od < в, рв, eg > = (Д бит а, Ь) лог:

мчало лог с;

для i до Д размер бит

пока с :■ (Д F из a) (i) ■ (Д F из b) (i)

цк пропуск кц;

с

коней;

b)    оп <¥•,! =, нр, пс > в (Д бит а, Ь) лог: -• (а = Ь);

c)    on < V, или.ог > а (Д бит а. Ь) Д бит:

начало Д бит с: для i до Д размер бит

цк (Д F из с) (i) := (Д F из a) [ij V (Д F из b) [i] кц: с

конец;

d)    on <A, &, и, and < = (Д бит а, Ь) Д бит:

начало Д бит с; для i до Д размер бит

цк (Д F из с) fij :• (ДРиза) (1]Л(ДРизЬ) (i) кц;

с

конец;

e)    оп < <, <*, нб, 1е > = (Д бит а, Ь) лог: (а V Ь) * Ь:

f)    onO,>=,HM.ge>= (Д бита, b) лог: Ь<а;

g)    on < t, вверх, up, лев, shl > = (Д бит а, цел Ь) Д бит:

если абс b < Д размер бит

то Д битс :*а;

до абс b

цк если Ь > 0 то

для i от 2 до Д размер бит

шс (Д F из с) [i — 1| :■ (Д F из с) [i] кц;

(Д F из с) [Д размер бит} :*ложь иначе

для i от Д размер бит шаг - I до 2 ЦК (Д F из с) (1J : ■ (Д F из с) (1-1] кц;

(Д Fh3c) (1J :«ложь

все

кц;

с

все;

h)    оп < *, вниз, down, прав, shr > =

(Д бит х, цел п) Д бит : х t - п;

i)    оп < абс, abs > = (Ябит а) Д цел:

начало Д цел с :» Д0; для i до Д размер бит цк с :• Д 2 X с + У абс (Д F из a) (i) кц;

5-136»

129

Страница 131

С.12в ГОСТ 27974-48

С

конец;

j) on < бин, bin > = (Д цел а) Д бит: если а > ДО то Д цел b :■ а; Д бит с; ял* i от Д размер бит шаг — 1 до 1 цк (ДРнзс) [ij :■ ичт b; Ь:'*Ы-Д2|ец; с

все;

k) on < элем, elem, □ > ■ (цел а, Д бит Ь) лог:

(ДРизЬ) (а);

I) проц Д бит пак = ([ ) лог а) Д бит: если цел п -Г а (с 1 ]; п < Д размер бит то Д бит с;

для i до Д размер бит юс (Д F из с) [i] :■

(i < Д размер бит -п 1ложь1 а [с 1] [i - Д размер бит + nj) чц

с

все;

проц ([ j лог) Д бит L bits pack = Д бит пак; ш) оп <-», —, не, not > * (Д бит а) Д бит: начало Дбитс;

для! до Д размер бит цк (ДЯизс) [i] :=

-» (Д F из a) (i) кц;

с

конец;

п) оп < удл, leng > = (Д бит а) длин Д бит: длин Д бит пак (а); о) оп < укр, shorten > = (длин Д бит а) Д бит: Д бит пак ([ J лог (а) [длин Д размер бит - Д размер бит ♦ 1 :]);

10.2.3.9. Слоговые н связанные с ними операции.

a)    on R ■ (Д слог а, Ь) лог: строк (a) R строк (Ь);

b)    оп < элем, elem, □ > = (цел а. Д слог Ь) лит: (Д F из Ь) [а];

c)    проц Д слог пак * (строк а) Д слог:

если цел п «Га [с 1): п < Д размер слог то Д слог с; для i до Д размер слог

цк (ДРиэс) (ij := (i<n la [с 1] [i]|заполнитель)

кц;

с

все;

проц (строк) Д слог L bytes pack = Д слог пак;

d)    оп < удл, leng > ■ (Д слог а) длин Д слог: длин Д слог пак (а);

130

Страница 132

ГОСТ 27974-88 С.1»

'• е) on < укр, shorten > * (длин Д слог а) Д слог;

Д слог пак (строк (а) [: Д размер слог));

10-2.3.10- Строковые и связанные с ними операции.

. а) оп < <; мш. It > = (строк а, Ъ) лог:

начало цел m “Г а [с 1),п=Г* Ь [с 11’, иел с :а0; для i до (ш<п Imln)

пока (с :■ абс а [с 1 ] [ij — абс b [с 1 ] (ij) *0 цк пропуск кц;

(с = 01ш<пАп>01 с<0) конец;

b)    оп < <, < =, нб, 1е > = (строк а, Ь) лог: — (Ь < а);

c)    on< =, pB,eq > = (строк а, Ь) лог: а < ЬА b < а;

d)    оп < Ф, / =, нр, пе > = (строк а, Ъ) лог: — (а = Ь);

e)    оп < >,    > =, нм, ge > = (строк а, Ь) лог: b < а;

f)    оп < >, бш, gt > ■ (строк а, Ь) лог: Ь < а;

g)    on R = (строк а, лит Ь) лог: a R строк (Ь);

h)    on R = (лнт а, строк Ь) лог: строк (a) R Ь;

i)    оп ♦ = (строк а, Ь) строк:

(цел m= (int 1а=Г а [с 1); 1а <0 1011а), л=(цсл!Ь = 1 Ь1 (с ij; lb<0 10! lb);

[1 : т + nj лит с;

(т>0 Ic [1 : mj :ва 1 с 1));

(п > 0 I с [т + 1 : т ♦ п] : ■ Ь (с11 ] ; с);

. j) о» 4 ■ (строк а, лит Ь) строк : а + строк (Ь); к) оп ♦ = (лит а, строк Ь) строк : строк (а) + Ь;

1) on < X, • > = (строк а, цел Ь) строк:

(строк с; до b цк с :=* с ♦ а кц; с); m) on < X, • > = (цел а, строк Ь) строк : b х а;

. n) on < X, * > ■ (лит а. цел Ь) строк : строк (а) X Ь; о) оп < Х,*> ■ (цел а, лит Ь)строк:Ь X а;

{ Из операций, определенных в a, g к h, следует, что если абс "а” < абс . "Ь", то    "a"    <"b”;    "аа”    <-ab”; "аа" <,,ba"; ”ab" <,,Ь” и "ab" <

<”ba”. j

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

a)    оп < минлр, minusab, -:= > = (имя Д цел а, Д цел Ь)

имя Д цел: а :■ а - Ь;

b)    оп < минпр, minusab, > = (имя Д вещ а, Д вещ Ь)

имя Д вещ: а := а - Ь;

c)    оп < минпр, minusab, а (имя Д компл а, Д компл Ь)

имя Д компл: а а - Ь;

. d) оп < плюспр, plusab, +:■ > = (имя Д цел а, Д цел Ь) имя Д цел: а :а а + Ь: е) оп < плюспр, plusab, +:= > = (нмя Д вещ а, Д вещ Ь) имя Д вещ: а :«а + Ь;

О оп < плюспр, plusab, +:= > « (имя Д компл а, Д компл Ь)

131

5*

Страница 133

С.130 ГОСТ 27974-8#

имя Д компл:.а :«а + b;    ...

g)    on < умпр, timesab, X    (им*    Д    цел а, ДцеЛ b)

имя Д цел : а :=а X Ь;

h)    on < умпр, timesab, X :=,•:=> = (имя Д вещ а, Д вещ Ь)

имя Д вещ; а := а X Ь;

i)    on < умпр, timesab. X :»,•:*» = (имя Д компл а, Д компл Ь)

имя Д компл : а := а X Ь; j) on < цолпр, overab, -г:*,    > ■ (имя Д цел а. Д цел Ь)

имя Д цел :а:= а ▼ Ь; k) оп < модпр, modab.-5-Х -г»:**, %Х :».%•:* >

* (имя Д цел а, Д цел Ь) имя Д цел : а:= а -гХ Ь;

1) оп < делпр, divab, /:■ > ■ (имя Д веш а, Д веш Ь) имя Д вещ :а:« а / Ь; ш) оп < делпр, /:* > = (имя Д компл а, Д компл Ь) имя Д компл: а:* а / Ь;

п) on Q = (имя Д вещ а, Д цел Ь) имя Д вещ: a Q Д веш (Ь); о) on Q = (имя Д компл а, Д цел Ь) имя Д компл: a Q Д компл (Ь); р) on Q = (имя Д компл а, Д вещ Ь) имя Д компл: a Q Д компл (Ь); q) оп < плюспр, plusab, +: * > ■

(имя строк а, строк Ь) имя строк: а:= а + Ь; г) оп < прип, plus to, + =:>=*

(строк а, имя строк Ь) имя строк: Ь:= а + Ь; s) оп < плюспр, plusab, ♦:*=>»

(имя строк а, лит Ь) имя строк: а ♦:= строк (Ь); t) оп < прип, plusto, +=: > =

(лит а. имя строк Ь) имя строк: строк (а) +*: Ь; и) оп < умпр, timesab, X• :* > =*

(имя строк а, цел Ь) имя строк: а:= а X Ь;

10.2.3.12. Стандартные математические константы н функции.

a)    Д веш Д пи = с Д вещ значение близкое к числу П;

Д веш L pi = Д пи;

b)    проц Д корень * (Д веш х) Д вещ: с если х > Д 0,

Д вещ значение, близкое к квадратному корню из 'х' с; проц (Д вещ) Д вещ L sqrt = Д корень;

c)    проц Д эксп =* (Д веш х) Д вещ: с Д вещ значение, если оно существует,

близкое к экспоненте от Y с; проц (Д веш) Д вещ L ехр ■ Д эксп;

d)    проц Д лг = (Д вещ х) Д вещ: с Д вещ значение, если оно существует,

близкое к натуральному логарифму от 'х' с; проц (Д веш) Д вещ L In = Д лг;

e)    проц Д кос = (Д веш х) Д веш: с Д веш значение, близкое к косинусу

от Y с;    »

проц (Д вещ) Д веш L cos ■ Д кос;

f)    проц Д арккос (Д вещ х) Д веш: с если абс х < Д 1,

132

Страница 134

ГОСТ 27974-88 С. 131

Д вещ значение, близкое к арккосинусу от 'х\

Д 0 < Д арккос (х) < Д пи с;

проц (Д веш) Д вещ L arccos * Д арккос;

g)    проц Д син = (Д вещ х) Д веш: с Д вещ значение,    близкое к синусу от

X с,

проц (Д вещ) Д вещ L sin » Д син;

h)    проц Д арксин = (Д вещ х) Д вещ; с если абс    х < Д I,

Д вещ значение, биизкое к арксинусу от 'х\

абс Д арксин (х) < Д пи f Д 2 с;

проц (Д вещ) Д вещ L arcsin ■ Д арксин;

i)    проц Д таиг = (Д вещ х) Д веш: с Д веш значение, близкое к тангенсу

от 'х' с;

проц (Д вещ) Д веш I. tan * Д танг; j) проц Д арктанг = (Д вещ х) Д вещ: с Д вещ значение, близкое к арктангенсу от ’х\ абс Д арктанг (х)’ < Д пи / Д 2 с; проц (Д вещ) Д вещ L arctan =Д арктанг; к) проц Д след печ = (имя Д цел а) Д вещ:

(а:= с следующее после 'а' псевдослучайное Д цел значение из некоторой однородно распределенной последовательности ка отрезке (Д О, Д макс цел j с;

с вещественное значение, соответствующее 'а' по некоторому отображению целых значений [Д О, Д макс цел) в вещественные [ Д О, Д 1) {т.е. так, что 0 < х < 1} . такое, что порожденная при этом последовательность вещественных значений сохраняет свойства псевдослучай-ностн и однородности распределения данной последовательности целых чисел с);

проц (имя Д цел) Д вещ L next random ■ Д след печ;

10.2.4. Операции синхронизации

Исполнение параллельного-предоожения Р { 3.3.1 .с} в некотором окружении Е называется „параллельным действием”. Исполнение составляющей основы этого Р в Е называется „процессом” этого параллельного действия.

Всякое исполнение А (в некотором окружении} одного из ЗАКРЫ-ТЫХ-предложений, выделенных прагматами {9.2.1 Ь) прагм начало несовместимой части прагм и прагм конец несовместимой части прагм в формах 10.2.4.d и 10.2.4л, несовместимо / 2.1.4.2л} ни с каким исполнением В другого из этих ЗАКРЫТЫХ-предложений, если А и В - наследные действия (2.l.4.2.bJ разных процессов одного и того же параллельного деймвия.

a)    вид сема - ст (имя цел F); вид sema = сема;

b)    оп < уст, level > * (цел а) сема:

(сема s; F из s :■ гпоб цел := a; s);

c)    оп < уст, level > = (сема а) цел : F из а;

d)    оп < вниз, down > * (сема эдегер) пуст;

начало имя цел дейкстра ■ F из эдегер;

133

Страница 135

С. 132 ГОСТ 27974-88

пока

прагм начало несовместимой части прагм если дейкстра > I го дейкстра I; ложь иначе

с пусть Р будет таким процессом, что исполнение данного псевдо-

примечания {10.1.3. Шаг 7} есть наследное действие этого Р, но

никакого другого процесса, наследного для Р; данный процесс Р

приостанавливается

{2ЛАЗ.{}

с;

истина

все

прагм конец несовместимой части прагм цк пропуск кц конец,

е) ол < up, вверх > ■ (сема здсгер) пусг: прагм начало несовместимой части прагм если имя цел дейкстра ■ F из эдсгер;

(дейкстра+:» 1)    >1

то    .

с возобновляются {2.1.4.З4} все процессы, приостановленные потому, что целое число, именуемое выдаваемым 'дейкстра' именем, было меньше единицы с

все

прагм конец несовместимой части прагм;

10.3. Описание обмена

{Стандаршым-вступлением предусмотрено три способе „обмена” (т.е. ввода и вывода), а именно бесформатный обмен (10.3.3), форматный обмен (10.3.5) и двоичный обмен (10.3.6). J 10.3.1 . Книги, каналы и файлы

/„Книги, „каналы" и „файлы” моделируют устройства обмена физической машины, используемой в реализации.^

10.3.1.1. Книги и связки.

{ аа) Вся информация в системе содержится в ряде „книг". Книга (а) является структурой, содержащей поле, текст вида, специфицированного описателем подвтекст (Ъ), именующее информацию в форме литер. Этот текст имеет переменное число страниц, каждая из которых может содержать переменное число строчек с переменным числом литер в каждой строчке. Номер страницы, номер строчки и номер литеры определяют позицию в тексте. Книга включает также поле запоям, указывающее „логический конец” этой книги, т.е. позицию, до которой книга заполнена информацией, строку обозначение, идентифицирующую данную книгу и. возможно, содержащую некоторую другую (служебную) информацию, например о ее владельце, а также поля запись и пользователи, позволяющие открывать

134

Страница 136

ГОСТ 27974-88 С. 133

(10.3.l-4.d) данную книгу одновременно дня более чем одного файла голь-ко в том случае, если запись в нее невозможна ни для одного из них.

bb) Доступ к книгам в системе осуществляется через цепочку связок. Эта цепочка доступных для открытия (10.3.1.4.dd) книг именуется доступные книги. Данная книга можег именоваться более чем одной связкой в этой цепочке, таким образом создается возможность одновременного доступа к отдельной книге из более чем одного процесса (10.2.4). Однако каждый такой доступ возможен только зля чтения книги, так как только один процесс может иметь доступ к книге, чтобы писать в нее (аа). Цепочка книг, которые были сняты (10.3.1.4.о), именуется снятые книги.

сс) Одновременный доступ более чем одного процесса к цепочке связок предотвращается использованием семафора зашита связей, обеспечивающем взаимное исключение между такими процессами.

dd) Книги могут создаваться (например, при вводе) или уничтожагься (например, после вывода) посредством задач (например, операционной системой) из списка-системиых-заддч (10.4.2) ; эти книги тогда добавляются к цепочке связок или удаляются из нее }. а) вид *- книга ■

ст (подвтекст текст,

позиция заполи it логический конец книги rt , строк обозначение (t для идентификации |t, лог запись К истина, если эта книга открыта для записи ft цел пользователи ft сколько раз эта книга была открыта |!;

Ь) вид* текст = имя I } ( ] ( ) лит,

вид *• подвтекст ■ имя подв [ J подв ( J подв f ) лит;

c)    вид *• позиция ■ ст (цел р, I, с);

d)    прко *• вне ■ 5,

оп вне = (позиция а, Ь) лог: если р из а < р из b то ложь инее риэа>ризЬто истина инее 1 из а < 1 из b то ложь инее 1 из а > 1 из b то истина иначе с кз а > с из b все;

с) вид связка « ст (имя книга книга,

имя связка след 4 уюшая ri);

f)    имя связка «■ доступные книги ;= нил;

g)    имя связка f' снятые книги :* нил;

h)    сема *- зашита связей = (сема s; F из s := ПЕРВ цел :* 1; $);

10.3.1.2. Каналы.

{аа) „Канал” соответствует одному или нескольким реальным устройствам (например, перфоратору или устройству построчной печати, или даже некоторой установке для ядерной физики, результаты работы которой со-

135

Страница 137

C.1J4 ГОСТ 27974-88

бираются вычислительной машиной) или же системному архиву данных, поддерживаемо му операционной системой. Канал ест* структур*, поля котором являются процедурами, вырабатывающими истинностные значения, определяющие допустимые методы доступа к книгам, связанным (с файлами) через данный канал. Поскольку эти методы доступа к книге могут зависеть как от книги, так к от канала (например, некоторая книга может быть устроена так, что се можно читать, но в не* нельзя записывать), большинство свойств этих методов доступа зависят и от канала, и от книги. Соответствующие свойства можно проверить с помощью запросов к обстановке, предусмотренных для файлов (10.3.1.3.ff) Для каналов предусмотрены два запроса к обстановке. Это:

можно завести, вырабатывающий истина, если на данном канале можно „завести” (10.3.1.4.сс) другой файл;

станд код, применяемый для получения „кодирующей таблицы” (bb), которая используется по умолчанию для данного канала.

bb) „Кодирующая таблица” есть значение вида, специфицируемого описателем код, используемое дня перекодирования литер из значений, хранимых во „внутренней” форме в памяти машины, в значения, хранимые во „внешней” форме в некоторой книге, и обратно. Эта таблица является структурой, состоящей из вектора структур, каждая из которых содержит значение во внутренней форме и соответствующее ему внешнее значение. Дополнительные кодирующие таблицы могут предусматриваться реализациями в нх библиотечных-вступлениях.

сс) Предусмотрены три стандартных канала, свойства которых определены ниже (е, f, g). Дополнительные каналы могут предусматриваться реализацией в ее библиотечном-вступлении. Поле номер канала предусмотрено для того, чтобы различать каналы, свойства которых в остальном совпадают. }

а) вид канал ■ ст (проц (имя книга) лог*- уст нач, установка, + ввод. + вывод,

* двоичный, +■ сжатие, переобозначение, проц лог *• заведение, проц позиция + макс позиция, проц (имя книга) код + станд код, цел номер канала); вид channel = канал;

b)    вид + код * ст ([ 1 : цел (пропуск) J ст (лит внутр, внешн) F);

c)    проц можно завести = (канал кан) лог: заведение из кан;

проц (канал) лог estab possible = можно завести;

d)    проц станд код = (канал кан) проц (имя книга) код:

станд код из кан;

проц (канал) проц (имя книга) код stand conv® станд код;

e)    канал станд канал ввода = с значение вида канал, поле которого, выби

раемое по 'ввод', есть процедура, всегда вырабатывающая истина, а другие поля имеют какие-то подходящие значения с; канал stand in channel * станд какал ввода;

136

Страница 138

ГОСТ 27974-88 С. «35

О канал сганд канал вьяода = с значение вида канал, поле которого, выбираемое по 'вывод',есть процедура, всегда вырабатывающая истина, а другие поля имеют какие-то подходящие значения с, какал stand out channel ■ стана канал вывода; g) канал сганд канал обмена в с значение вида канал, поля которого, выбираемые по 'установка', 'yet нач', 'ввод', 'вывод' и двоишый , являются процедурами, всегда вырабатывающими нсгина, а другие поля имеют какие-то подходящие значения с; канал stand back channel = станд канал обмена;

J0.3.1.3. Файлы.

аа) „Файлы” служат средством сообщения между ообственно-про-лой и книгой, с которой этот файл был открыт на некотором канале. Файл есть структура, содержащая имя книги, с которой он был связан (10.3.1.4.bb) и отдельно имя текста этой книги. Файл содержат также информацию. необходимую для работы процедур обмена с этой книгой, включающую его текущую позицию тооз-в данном тексте, его текущее „состояние” (ЬЬ), его текущий „формат” (10.3.4) и канал, на котором он был открыт.

ЬЬ) „Состояние” файла определяется пятью полями :

для чтения, которое есть истина, если данный файл предназначен для ввода;

для записи, которое есть истина, если данный файл предназначен для вывода;

для литер, которое есть истина, если данный файл предназначен для литерного обмена;

♦    для двоичн, которое есть истина, если данный файл предназначен для двоичного обмена;

•    открыт, которое есть истина, если данный файл связан с какой-нибудь книгой.

сс) Файл включает некоторые „процедуры обработки ообьпия”, вызываемые, когда во время обмена возникают определенные условия. По умолчанию предусматривается, что после открытия файла зти процедуры обработки события вырабатывают ложь, когда они вызываются, но программист может предусмотреть и другие процедуры обработки события. Поскольку соответствующие поля файла не доступны прямо для пользователя, процедуры обработки события можно изменять с помощью „процедур реакции” (1, ш, п, о, р, q, г). Процедуры обработки события всегда задают в качестве параметра имя своего файла. Если исполнение процедуры обработки события прекращается, то вызвавшая ее процедура обмена не может действовать дальше; в противном случае, если она вырабатывает истина, предполагается, что данное условие было некоторым образом исправлено, и, если возможно, обмен продолжается, но. если она вырабатывает ложь, система продолжает работу, предпринимая действия по умолчанию. Процедуры реакции таковы:

• при конце лог файла. Соответствующая процедура рбрабогки события

137

Страница 139

С. 136 ГОСТ 27974-88

вызывается, когда в ходе ввода или в результате вызова установить досыпется логический коиеи соответствующей книги (см. 10.3.1.6.dd).

Пример:

Программист хочет знать количество целых чисел на входной ленте. Файл лента ввода был открыт во внешнем блоке. Если он напишет качало цел п :а 0; при конце лог файла (лента ввода,

(имя файл файл) лог: на f); цк ввод (лента ввода, лок цел); п*:" 1 кц; f: печ (п) конец,

го такое присваивание соответствующему полю из файла лента ввода нарушит ограничения на области дейсгвия, поскольку область действия процедуры (имя файл файл) лог: на f меньше области действия файла лента ввода. Поэтому ему следует написа1Ь

начало цел п :*0: файл вспомог :* лента ввода; при конце ЛОГ файла (вспомог,

(имя файл файл) лог: на Г); цк ввод (вспомог. лог цел); п ♦:■ 1 кц; f: печ (п) конец.

при конце физ файла. Соответсгвуюшая процедура обработки события вызывается, когда текущий номер страницы данного файла превышает число страниц в соответствующей книге, а обмен пытаются продолжить (см. 10.3.1.6 dd).

при конце страницы. Соответствующая процедура обработки события вызывается, когда текущий номер строчки данного файла превышает число строчек на текущей странице, а обмен пытаются продолжить (см.

10.3.1.6.dd).

при конце строчки. Соответсгвуюшая процедура обработки события вызывается, когда текущий номер литеры данного файла превышает число литер в текущей строчке, а обмен пытаются продолжить (см. 10.3-1.6.dd). Пример;

Программист хочет, чтобы на начзле каждой страницы его файла f автоматически печатался зашловок:

при конце страницы (f, (имя файл файл) лог:

(вывод (файл, (нов страница ."стр.". целое (i +:* 1,0). нов строчка)), истина)

* предполагается, что i было где-то описано «1>. при ошибке литеры. Соответствующая процедура обработки события вызывается, когда перекодирование некоторой литеры не было успешным или когда в ходе ввода читается не „ожидаемая” (103.4.1.11) литера. Эта процедура обработки события вызывается с именем литеры, предиагасмой в качестве замены. Процедура обработки события, задаваемая программи-

Страница 140

ГОСТ 27974-88 С. 137

• сгом. может присваивать литеру, отличную от предлагаемой. Если данная процедура обработки события вырабатывает истина, то используется эта предлагаемая литера с возможным ее изменением.

Пример:

Программист хочет читать суммы денег, отперфорированные в форме ..55123.45”,.1$23.45”,,,    8 3.45”ит.д.:

при ошибке литеры /станд ввод,

(имя файл f, имя лит пред) лог: если пред = ”0"

то лит с; назад (f); ввод (f, с);

(c-”S” Iввод (f. пред); истина I ложь) иначе ложь все);

цел центы; ф чит ((ф 3z". "dd ф. центы)Ь

при ошибке значения. Соответствующая процедура обработки события вызывается, когда:

(i)    в ходе форматного обмена делается попытка обменз какого-нибудь значения под контролем некоторого „шаблона”, с которым оно несовместимо, или когда число „рамок” недостаточно. Если эта

процедура вырабатывает истина, то текущее значение и шаблон пропускаются, и обмен продолжается; если же процедура вырабатывает ложь, то вызывается не определено, перед которым при выводе . выводится значение при помощи процедуры вывод;

(ii)    в ходе ввода оказывается невозможным преобразовать строку в значение некоторого данного вида (это может случиться, например. при попытке прочитать целое число, большее, чем макс цел (10.2.1.с)).

• при конце формата. Соответствующая процедура обработки собьпия вызывается, когда в ходе форматного обмена формат исчерпывается, в то время как еще остается некоторое значение, подлежащее обмену. Если данная процедура вырабатывает истина, то в случае когда она не обеспечила нового формата для этого файла, вызывается не определено, а иначе повторяется текущий формат.

dd) Поле код файла — это его текущая кодирующая таблица (10.3.1,2.Ы>). После открытия файла кодирующая таблица обеспечивается по умолчанию. Другие кодирующие таблицы могут применяться программистом при помощи вызова процедуры задать код (j). Такие таблицы должны предусматриваться в бмблиотечном ветуплении.

ее) Процедура задать стопстроку вызывается для присоединения к файлу некоторой строки. Эту строку используют во время ввода переменного числа литер, любая из се литер служит для окончания ввода.

ff) Имеющиеся методы доступа к книге, открытой с каким-нибудь файлом, можно узнать посредством вызовов следующих процедур (выдача такого вызова может быть функцией и этой книги, и данного канала, и некоторых других факторов обстановки, не определяемых настоящим стандартом) :

139

Страница 141

С. 138 ГОСТ 27974-88

возм ввод, которая вырабатывает истина, если данный файл можно использовать для ввода;

возм вывод, которая вырабатывает истина, если данный файл можно использовать для вывода;

возм двоичн, которая вырабатывает истина, если данный файл можно использовать дня двоичного обмена;

сжимаем, которая вырабатывает истина, если строчки и страницы будут сжимаемы (10.3.16.аа) в ходе вывода; в этом случае соответствующая книга тоже называется „сжимаемой”;

возм уст нач, которая вырабатывает истина, если для данного файла возможна установка на начало, т.е. его текущую позицию можно установить в (1,1,1):

возм установка, которая вырабатывает истина, если данный файл можно установить, т.е. его текущей позиции можно придать заданное значение; соответствующая книга называется тогда книгой с „произвольным доступом", а иначе — книгой с „последовательным доступом”;

возм переобозначение, которая вырабатывает истина, если поле обозначение данной книги можно изменить;

канал, которая вырабатывает канал, где был открыт данный файл (это можно использовать, например, при помощи процедуры, присваиваемой посредством при конце физ файла, для того чтобы открыть другой файл на том же канале).

gg) Если при книге с последовательным доступом двоичный и литерный обмен чередуются, то вызывается не определено (10.3.1.4.а), тл. после открытия или установки на начало (I03.1.6.j) возможен любой из этих обменов, но, если один из них имел место, другой может происходить только после очередной установки на начало.

hh) При книге с последовательным доступом вывод немедленно заставляет логический конец книги переместиться на текущую позицию (если они оба не находятся в одной и той же строчке); таким образом, за вводом не может следовать вывод без предшествующей установки на начало (10.3.1.6.J).

Пример;

начало файл fl, f2; 11 : 10 ООО] цел х; цел п :=0; открыть (fl, ” ”, канал 2);

(2 := fl;

|1 теперь fl и Г2 можно использовать один вместо другого i задать код (f 1. код связи); задать код (f2, код телекса); fl теперь fl и [2 используют разные коды; код связи и код телекса определены библиотечным-вегуплением данной реализации ft уст нач (fl); )1 в результате на (2 тоже произойдет установка на начало (1

140

Страница 142

ГОСТ 27974 -88 С. 139

при конце лог файла (f 1, (имя файл /) лог: на сделано); для 1 цк ввод ( f 1.x [ij); п :■ iKu;

|t плохо, если при вводе окажется больше 10000 целых чисел t сделано:

уст нач (fl); для i до п цк вывод (f2,x (i)) кц; закрыть (f2) |t fl тоже закроется * конец }

a)    вид файл * ст (имя книга *-книга, об (подвтекст, текст)

••текст, канал •'кан, имя формат ^-формат, имя цел ук йазатель (кфор я мага |1. имя лог ^-для чтения, *-для записи, •'для литер, ^-для двоичн, *-открыт, имя позиция ^ т И екушая 4 поз * ииия я, строк *• стопе ft трока |1, код “^код ft ирующая габлица для литер it, проц (имя файл) лог^испр йавлен йлогфайл.^-испр фкз файл, *-испр Давлена it страница, *>испр строчка, ^•ислр формат, *-испр давлена £ ошибка значения, проц (имя файл, имя лит) лог •'нспр павлена Ц ошибка литеры); вид file * файл;

b)    проц возм йожен |( ввод = (имя файл f) лог:

(открыт из f I (ввод из кан из f) (книга из f) I не определено; пропуск); проц (имя файл) лог get possible • возм ввод;

c)    проц возм вывод = (имя файл Г) лог:

(открыть из f I (вывод из кан из f) (книга из f) I не определено; пропуск); проц (имя файл) лог put possible ■ возм вывод;

d)    проц возм двоичн |t ый обмен |1 ■ (имя файл f) лог:

(открыт из f I (двоичный из кан из f) (книга из О I не определено; пропуск); проц (имя файл) лог bin possible ■ возм двоичн;

e)    проц сжимаем = (имя файл f) лог:

(открыт из f I (сжатие из кан из 0 (книга из f) I не определено; пропуск); проц (имя файл) лог compressible ■ сжимаем;

0 проц возм уст нач = (имя файл О лог:

(открыт из f I (уст нач из кан из f) (книга из 0 I не определено; пропуск); проц (имя файл) лог reset possible ■ возм уст нач;

g) проц возм установка = (имя файл f) лог:

(открыт из f I (установка из кан из 0 (книга из f) I не определено; пропуск);

141

Страница 143

С.140 ГОСТ 27974-88

проц (имя файл) лог set passible = возм установка: .

h)    проц возм переобозначение = (имя файл 0 лог:

(огкрыг из f I (переобозначение из кан из f)

(книга из f) I не определено; пропуск); проц (имя файл) лог reidf possible ■ возм переобозначение;

i)    проц канал ■ (имя файл f) канал:

(открыт из f I кан из f I не определено; пропуск); проц (имя файл) канал chan = канал; j) проц задать код = (имя файл f, проц (имя книга) код с) пуст: (открыт из f I код из f := с (книга из f) I не определено); проц (имя файл, проц (имя книга) код) пуст make conv ■ задать код; к) проц задать стопстроку ■ (имя файл f, строк t) пуст: стопс из f :■ t; проц (имя файл, строк) пуст

make term - задать стопстроку;

/ ) проц при конце лог файла = (имя файл f,

проц (имя файл) лог р) пуст: испр лог файл из f := р; проц (имя файл, проц (имя файл) лог) пуст on logical file end « при конце лог файла: т) проц при конце физ файла » (имя файл f,

проц (имя файл) лог р) пуст: испрфкз файл из f := р; проц (имя файл, проц (имя файл) лог) пуст on physical file end = при конце физ файла; п) проц при конце страницы = (имя файл f,

проц (имя файл) логр) пуст: испр страница из f := р; проц (имя файл, проц (имя файл) лог) пуст on page end * при конце страницы; о) проц при конце строчки = (имя файл f,

проц (имя файл)' лог р) пуст: испр строчка из f := р; проц (имя файл, проц (имя файл) лог) пуст on line end - при конце строчки; р) проц при конце формата * (имя файл f,

проц (имя файл) лог р) пуст: испр формат из f := р; проц (имя файл, проц (имя файл) лог) пуст on format end = при конце формата; q) проц при ошибке значения * (имя файл f, проц (имя файл) лог р) пуст:

испр ошибка значения из f :* р; проц (имя файл, проц (имя файл лог) пуст on value error = при ошибке значения; г) проц при ошибке литеры = (имя файл f,

проц (имя файл, имя лит) лог р) пуст: испр ошибка литеры из f :■ р;

142

Страница 144

ГОСТ 27974-88 С. 141

проц (имя файл, проц (имя файл. имя лит) лог) пуст on char error « при ошибке литеры; s) проц переобозначение =*(имя файл f, строк обозн) пуст: если открыт из f двозм переобозначение (f) Л приемлемо обозн (обозн) го обозначение из книга из Г :*обозн все;

проц (имя файл, строк) пуст reidf ■ переобозначение;

10.3.1.4. Открытие и закрытие файлов.

fза) Когда в ходе обмена происходит что-то, оставленное неопределенным, например, явно вызывается не определено (а), это вовсе не значит, что исполнение катастрофически и немедленно прерывается (2.|.4.3.h), а лишь что предпринимаются какие-то осмысленные действия, которые не описываются или их нельзя описать одним данным стандартом, то есть они зависят от реализации.

bb) Книга „связывается” с файлом при помоши процедур завести (Ь), создать (с) и открыгь (d). Эта связь может прекратиться с помощью процедур закрыть (п),снять (о) истереть (р).

сс) Когда файл „заводится” на каком-то канале, создается (5.2.3) книга с текстом заданного размера, с заданной идентифицирующей строкой, с полем запись, установленным в истина, и с логическим концом книги в (1,1,1) Некоторые реализации могут требовать (g), чтобы образующие идентифицирующую строку литеры были взяты из ограниченного множества и чтобы эта строка была ограниченной длины. Может также потребоваться, чтобы никакие две книги не имели одинаковые идентифицирующие строки. Рели заведение завершается успешно, то вырабатывается значение 0, а иначе вырабатывается ненулевое целое число (его значение может указывать, почему файл не был успешно завелен).

Когда файл „создается” на канале, заводится какой-то файл с книгой, размер текста которой принят по умолчанию для этого канала, а идентифицирующая строка не определена.

dd) Когда файл „открывается”, в цепочке связок ищется первая книга, такая, что соответствует (h) вырабатывает истина. (Точной метод соответствия не определяется настоящим стандартом и, вообше говоря, зависит от реализации. Например, поставляемая в качество параметра процедуры открыть строка может в некоторой форме включать в себя какой-нибудь пароль). Если достигается конец данной цепочки связок или книга уже была выбрана и ее поле запись вырабатывает истина, или запись в эту книгу возможна через данный канал, а книга уже открыта, то дальнейшее исполнение не определено. Если данный файл уже открыт, то операция вверх гномы обеспечивает возможность для подходящих системных действий над этой предварительно связанной книгой- (в случае, если не осталось никакой ару* гой копии данного файла, чтобы сохранить эту связь).

ее) Процедуру соединить можно использовать, чтобы соединить с файлом значение вида, специфицируемого одним из описателей имя | } лит,

143

Страница 145

С. М2 ГОСТ 27974 -вв

имя ( J ( ) лит или имя ( ) ( 1 [ ] лит, таким образом, подобные переменные можно использовать в качеаве книги некоторого файла.

ff) Когда файл „закрывается", его книга присоединяется к цепочке связок, именуемой доступные книги. Затем активизируется некоторая си-стемная-зада-а при помощи вверх гномы. (Она может реорганизовать эту цепочку связок, удалить данную книгу или добавить ее другие копии. Она может также вызвать выдачу этой книги на внешнее устройство).

gg) Когда файл „снимается", его книга присоединяется к цепочке связок. именуемой снятые книги. Затем активизируется некоторая системная-задача при помощи вверх гномы. Снятую книгу нельзя снова открыть до тех пор, пока какая-нибудь последующая системная-задача не переместит эту книгу в цепочку связок, доступных для открытия.

hh) Когда файл „стирается", активизируется некоторая системная-задача при помощи вверх гномы. (Оча может некоторым образом удалить книгу, связанную с этим файлом.)}

a)    проц *не определено - цел: с какое-либо осмысленное

действие системы, выдающее целое число, чтобы указать, что было сделано; предполагается, что это действие системы может зависеть от знания любого значения, к которому есть доступ {2.1,2.с} через участок любого окружения, старшего, чем то окружение, в котором исполняется данное псевдопримечание {, несмотря на то. что . нельзя написать никакого конструкта Алгола 68, который может иметь доступ к этим значениям^ с;

b)    проц завести *

(имя файл файл,строк обозн. канал кан, цел р, I, с) цел: начало

вниз защита связей;

ПРРВ книга книга :■

(НЬРВподв (1 : р] подв [1 :1] подв (1 : с) лит,

(1,1,1). обозн. истина, 1); если файл доступен (кан) Л (вывод из кан) (книга) Л заведение из кан Л

(позиция (р, I, с) вне макс позиция из кан)

Л (позиция (1,1,1) вне позиция (р. 1, с))Л обозн приемлемо (обозн) то

(открыт из файл I вверх гномы I вверх защита связей); файл :=

(книга, текст из книга, кан, пропуск, пропуск, й состояние: Ц глоб лог :■ ложь, глоб лог :» истина, глоб лог :■ ложь, глоб лог :■ ложь, глоб лог :■ истина, глоб позиция :« (1,1,1),” ",

(станд код из кан) (книга).

144

Страница 146

ГОСТ 27974-88 C.14J

й процедуры обработки события: t ложь, ложь, ложь, ложь. ложь, ложь,

(имя файл f, имя лит а) лог: ложь);

(-. возм двоичн (файл) I настроить на литерное (файл));

0

иначе вверх зашил связей: не определено все

конец:

прои (имя файл, строк,

канал, цел, цел, цел) цел establish • завести;

c)    проц создать = (имя файл. файл, канал кан) цел: начало позиция макс позиция • макс позиция из кан:

завести (файл, пропуск, кан, р из макс позиция,

1    из макс позиция, с из макс позиция) конец:

проц (имя файл, канал) цел crcatc = создать;

d)    проц открыть ■ (имя файл файл,

строк обозн. канал кан) «ел:

начало

вниз защита связей:

если файл доступен (кан)

го имя имени связка св := доступные книги:

лог есть :* ложь;

пока (имя связка (св) :Ф: икл) Л -«есть цк

если соответствует (обозн, кан, книга из св) то есть := истина иначе св след из св все

ки:

если -«есть

то вверх зашита связей: не определено иначе имя книга книга :■ книга из св; если запись из книга V (вывод из кан) (книга) д пользователи из книга > О

то

вверх зашита связей: не определено Й в этом случае открытою мешают другие пользователи * система может либо ждать, либо выдать ненулевое значение (указывающее на неуспех открытия) немедленно * иначе

пользователи из книга 1;

(( вывод из кан) (книга) I

145

Страница 147

С. 144 ГОСТ 27974-83

запись из книга := истина); имя имени связка (св) := след из св;

Й удалить связку из цепочки доступных Ц (открыт из файл I вверх гномы I вверх зашита связей); файл :=

(книга, текст из книга, кан, пропуск, пропуск, й состояние: yiглоб лог :■ ложь, глоб лог := ложь, глоблог :» ложь, глоб лог :=ложь, глоб лог:» истина,    #

глоб позиция :* (1,1,*)» ми»

(стана код из кан) (книга), процедуры обработки события: |t ложь, ложь, ложь, ложь, ложь, ложь,

(имя файл f, имя лит а) лог: ложь);

(-* возм двоичн (файл) I

настроить на литерное (файл)) ;

(-1 возм ввод (файл) I

настроить на запись (файл));

(-, возм вывод (файл) I

настроить на чтение (файл)) ;

О

все

все

иначе вверх зашита связей; не определено все конец:

проц (имя файл, строк, кан) цел open = открыть; е) проц соединить в

^ (имя файл файл, имя ( ] [ ] [ ] лиг том) пуст: если цел р * нигр том; цел 1 * нигр том [рJ; цел с а нигр том [р) [)); р * 1 А1 = 1 Л с = 1 то

проц и * (имя книга а) лог: истина; проц л s (имя книга а) лог: ложь; канал кан ■* (и, и. и, и, л.я,л, лог: чожь, позиция: (макс цел, макс цел, макс цел), пропуск,пропуск);

(открыт из файл I вниз защита связей; вверх гномы); файл :=

(глобкнйга := (пропуск, (вегртом+ 1,1,1 ), пропуск, иежна, 1), том. кан» пропуск, пропуск, ft состояние: ji глоб лог :* ложь, глоб лог :* ложь, глоб лог := истина, глоб лог :* ложь, глоблог :■ истина,

6

Страница 148

ГОСТ 27974-88 С. 145

глоб позиция := (1.1,1). ”*\пропуск, р процедуры обработки события: it ложь, ложь, ложь. ложь, ложь, ложь,

(имя файл f, имя лит а) лог: ложь) иначе не определено все;

проц (имя файл,

имя ( ) [ ) ( 1 лит) nyci associate = соединить;

f)    проц *-файл доступен * (канал кан) лог:

с истина, если н данный момент на 'кан'але можно открыть некоторый другой файл, а иначе ложь с;

g)    проц ^обозн приемлемо * (строк обозн) лог: с истина,

если 'обозначение премлемо для данной реализации в качестве обозначения, идентифицирующего новую книгу, а иначе ложь с;

h)    проц*-соответствует ■

(строк обозн, канал кан, имя книга имя книги) лог: с истина, если книга, именуемая через 'имя книги', может идентифицироваться посредством лото обозначения, и если к данной книге может быть правильный доступ через 'кан'ал, а иначе ложь с;

i)    проц ••ложь ■ (имя файл файл) лог: ложь

с включена для сокращения текста процедур 'завести', 'открыть' и 'соединить' с;

j) проц ^-настроить на запись = (имя файл f) пуст: если —1ВоЗм вывод (f) V

-т возм установка (f) Л для двоичн из f д для чтения из f то не определено

иначе имя лог (для чтения из О :* ложь;

имя лог (для записи из О :■ истина все;

к) проц •настроить на чтение = (имя файл f) пуст: если -1 возм ввод (f) V -1 возм установка (f) Л

для двоичн из f Л для записи из f то не определено

иначе имя лог (для чтения из 0 := истина;

имя лог (для записи из f) :■ ложь все;

I) проц ^настроить на литерное • (имя файл f) пуст: если -»возм установка (О А для двоичн из f то не определено

иначе имя лог (для литер из О := истина;

147

Страница 149

С. 146 ГОСТ 27974-88

имя лог (для двоичм из f) :■ ложь все;

ш) проц ^-настроить на двоичное - (имя файл f) пуст: если -»возм двоичн (О V-»

возм установка (О А литер из f то не определено

иначе имя лог (для литер из f) := ложь;

имя лог (для двоичн из f) := истина все;

п) проц закрыть ■ (имя файл файл) пуст: если открыт из файл то

вниз зашита связей; имя лог (открыт из файл) :®ложь; имя книга книга = книга из файл; запись из книга :* ложь; пользователи из книга -:= 1;

(текст из файл I (подвтекст): доступные книги:* ПЕРВ связка := (книга, доступные книги)); вверх гномы все;

проц (имя файл) пуст close » закрыть; о) проц снять * (имя файл файл) пуст: если открыт из файл то

вниз защита связей; имя лог (открыт из файл) := ложь; имя книга книга = книга из файл; запись из книга := ложь; пользователи из книга I;

(текст из файл I (подвтекст): снятые книги := ПЕРВ связка := (книга,снятые книги)); вверх гномы все;

проц (имя файл) пуст lock ■ снять; р) проц стереть ° (имя файл файл) пуст: если открыт из файл

то

вниз защита связей; имя лог (открыт из файл) :* ложь; запись из книга из файл :* ложь; пользователи из книга из файл 1; вверх гномы все;

проц (имя файл) пуст scratch • стереть;

148

Страница 150

ГОСТ 27974-88 С.147

10.3.1.5. Запросы позиции.

{аа) „Текущей позицией" книги, открытой с данным файлом является значение, именуемое полем тпоз этого файла. Она продвигается каждой операцией обмена в соответствии с числом записанных или прочитанных литер.

Если с - номер текущей литеры и lb - длина текущей строчки, то всегда I < с < lb +1. Из с 3 I вытекает, что следующая операция обмена будет применена к первой литере этой строчки, а из с = lb ♦ 1 вытекает, что данная строчка переполнена и следующая операция обмена будет вызывать какую-то процедуру обработки события. Если lb * 0, то данная строчка пуста и. значит, всегда переполнена. Соответствующие оговорки относятся и к номерам текущих строчки и страницы. Если данная стрэница переполнена, то текущая строчка пуста, а если переполнена данная книга, то пусты и текущая станица, и текущая строчка (е).

bb) Пользователь может определить текущую позицию при помощи процедур номер литеры, номер строчки и номер страницы (а, Ь, с).

сс) Если в текущей позиции переполнена строчка, страница или книга, то говорят, что она находится за пределами „физического файла" (f. g, h).

dd) Если при чтении текущая позиция находится на логическом конце (книги), то говорят, что она находится за пределами .логического файла" (i).i

J Каждая процедура в этом разделе вызывает не определено, если при входе в нее не открыт соответствующий файл.}

a)    проц номер литеры с (имя файл f) цел:

(открыт из f I с из тпоз из f I не определено); проц (имя файл) цел char number = номер литеры:

b)    проц номер строчки = (имя файл f) цел:

(открыт из f I 1 из тпоз из f I не определено); проц (имя файл) цел line number = номер строчки;

c)    проц номер страницы = (имя файл О дел:

(открыт из f I р из тпоз из f I не определено); проц (имя файл) цел page number « номер страницы;

d)    проц ^-текущая позиция = (имя файл О позиция:

(открыт из f I тпоз из f ( не определено; пропуск); •

e)    проц Страницы книги = (имя файл f) позиция: начало позиции тпоз * текущая позиция (f);

цел р “ р из тпоз, I » 1 из тпоз; выб текст из f в (текст tl):

(цел pb * вегр tl;

цел lb = (р < 0V р > pb 101 вегр 11 (pj); цел cb* (K0Vl>lb Ю1 eerptl [pj (lj);

(pb, lb, cb)),.

(подвтекст t2):

(цел pb * вегр t2;

149

Страница 151

C.U8 ГОСТ 27974-88

цел lb = (р < О V р > pb 101 вегр t2 [pj); цел cb = (KOVl>Ib №1 вегр t2 {pj (1J);

(pb, lb, cb)) быв конец;

О проц ^-строчка окончена = (имя файл f) лог:

(цел с - с из текущая позиция (f); с > с из границы книги (f));

g)    проц ‘‘-страница окончена ■ (имя файл f) лог:

(цел I * 1 из текущая позиция (f);

1 > 1 из границы книги (f) );

h)    проц •■физ файл окончен ■ (имя файл f) лог:

(цел р ■ р из текущая позиция (О;

• р > р из границы книги (f) );

i)    проц^лог файл окончен = (имя файл f) лог:

-I (заполн из книга из f вне текущая позиция (f));

10.3.1.6.Процедуры расположения.

faa) В книге, введенной с внешнего наситсля некоторой системной-зада-чей, строчки и страницы могут быть разной длины. С другой стороны, все строчки и страницы заведенной (10.3.1.4.сс) книги первоначально имеют размер, указанный пользователем. Однако если в ходе вывода в сжимаемую книгу (10.3.1.3.ff) вызываем нов строчка (нов страница) с текущей позицией в той же строчке (странице), что и логический конец этой книги, то данная строчка (страница, содержащая эту строчку,) сокращается до номера литеры (номера строчки) этого логического конца. Таким образом, печ ((”абвг’\ нов строчка)) может вызвать уменьшение текущей строчки до длины в 5 литер. Отметим, что то же вполне осмысленно и для строчки, не содержащей литер, и для страницы, не содержащей строчек.

Хотя действия канала, на котором книги как сжимаемы, так и позволяют произвольный доступ (10J.lJ.ff) корректно бпределены, предполагают, что в фактических реализациях такая комбинация вряд ли встретится.

bb) Процедуры вперед (а), нов строчка (с) и нов страница (d) служат продвижению текущей позиции к следующей литере, строчке и странице соответственно. Однако они не изменяют (за исключением того, что предусмотрено в сс ниже) содержания пропускаемых позиций. Поэтому печ (("а”, назад, вперед)) и печ (("а”, назад, пробел)) дают резные результаты.

Текущую позицию можно также изменить вызовами назад (Ь), уст номер литеры (к) и на соответствующих каналах вызовами установить (i) и уст нач (j).

сс) Содержание вновь заведенной книги не определено, при этом ее текущая позиция и логический конец оба равны (1,1,1). В процессе вывода она заполняется литерами и в соответствии с этим ее логический конец продвигается вперед. Если в ходе литерного вывода вызывается вперед с текущей позицией на логическом конце, то записывается литера пробел

150

Страница 152

ГОСТ 27974-&8C.I49

(аналогичное происходит в случае вызова нов строчка и нов страница, если данная книга несжимаема).

Вызов установить, пытающийся оставить текущую позицию за пределами логического конца, приводит к вызову не определено (некоторое осмысленное действие системы может тогда продвинуть логический конец к данной текущей позиции или даже к физическому концу книги). Следовательно, нет законного способа, которым можно было бы вывести текущую позицию за пределы логического конца или который оставлял бы любую литеру в пределах логического файла в ее начальном неопределенном состоянии.

dd) Операция чтения или записи или вызов вперед, нов строчка, нов страница, установить' или уст номер литеры могут вывести текущую позицию за пределы физического или логического файла (10.3.13.ee, dd), но это не вызывает немел 1енных последствий. Однако перед любой дальнейшей попыткой обмен# или следующим вызовом вперед, нов строчка или нов страница (но не установить или уст номер литеры) текущая позиция должна сделаться „хорошей**. Файл будет „хорошим”, если его текущая позиция не находится при записи (чтении) вне физического (логического) файла (10.5.1.1.се, dd). Страница (строчка) будет „хорошей”, если не переполнен номер строчки (номер литеры). Следовательно, в нужных случаях вызывается процедура обработки события (10-3.1.3.сс), соответствующая при конце лог файла, при конце фиэ файла, при конце страницы или при конце строчки. Дейсгоие по умолчанию.за исключением форматного обмена (использующего проверить позицию, 10 3.3.2.с). состоит в том. чтобы вызвать, если процедура обработки ситуации вырабатывает ложь, ооот-ест свенно не определено, не определено, нов страница или нов строчка. После этого (или еегги вырабатывается истина), если позиция остается не хорошей, снова вызывается процедура обработки события (не обязательно га же самая).

се) Состояние файла (10.3.1.3.ЬЬ) управляет некоторыми действиями процедур расположения. Если настройка на запись/чтение дает чтение, то действие вперед, нов строчка и нов страница при попытке пересечь логический коиец состоит в вызове процедуры обработки события, соответавую-шей при конце лот файла, вместе с вызовом по умолчанию не определено: если же она дает запись, то результатом будет вывод пробелов (при настройке на двоичное запись неопределенной литеры) либо сжатие текущей строчки или страницы (см. сс). Если при входе в процедуру расположения настройка на запись/чтение не определена, то вызывается не определено. Но выходе восстанавливается та настройка на запись/чтение, которая была при входе.}

а) проц вперед = (имя файл f) пуст: если -1 открыт из f то не определено иначе лог чтение =

(для чтения из f I истина I : для записи из f I ложь

Страница 153

С. 150 ГОСТ 27974-вв

I не определено; пропуск);

(-.строчка хороша (f, чтение) I не определено); имя позиция тлоз - тпоз из f; если чтение то с из тпоз ♦:* 1 иначе

если лог файл окончен (f) то если для двоичн из f то

(текст из f I (подвтекст t2):

%2 (ризтпоз] [1 из тпоз]

[с из тпоз) :*» пропуск); с из тпоз +:* 1; заполн из книга нз f :■ тпоз иначе вывести литеру (f,"-”) все

иначе с из тпоз +;= 1 *    все

все ■се;

проц (имя файл) пуст space ■ вперед;

b)    проц назад = (им* файл f) пуст; если -»открыт из f то не определено иначе имя цел с * с из тпоз из f;

(с > 1 I с -    1    I    не    определено)

■се;

проц (имя файл) пуст back space ■ назад;

c)    проц нов й ая «I строчка = (имя файл f) пуст: если -Iоткрыт из f го не определено

иначе

лог чтение =

(дня чтения из f I истина! : для записи из f I ложь I не определено; пропуск);

(-, страница хороша (f, чтение) I не определено); имя позиция тпоз ■ тпоз из f, заполн = заполн из книга из f; если р из тпоз ■ р из заполн л 1 из тпоз =1 из заполн то с из тпоз :■ с из заполн; если чтение то нов строчка (f) иначе

если сжимаем(0

то имя пел р! = р из заполн, 11 = 1 из заполн; подвтекст текст = (текст из f I (подвтекст t2) : t2); текст [pi] (11] :»текст [pi] {U]

[: с из заполн-1] иначе пока -». строчка окончена (0 цк вперед (0 кц все;

152

Страница 154

ГОСТ 27974—$8 С. 151

' тпоэ :■ заполн :■ (р нз тпоз, 1 из тпоз + 1,1) все

иначе тпоз (р из тпоз, 1 из тпоз ♦ 1.1) все все;

проц (им* файл) пуст new line = нов строчка; d) проц нов страница ■ (имя файл f) пуст:

если -1 открыт из f то не определено    »

иначе

лог чтение =

(для чтения из f I истина I -.для записи из f I ложь I не определено; пропуск);

(-, страница хороша (f, чтение) I не определено); имя позиция тпоэ = тпоз из f, ппоз = заполн из книга из f; если р из тпоз = р из ппоз то тпоз := ппоз; если чтение то нов страница (f) иначе если сжимаем (f) Л 1 из ппоз < 1 из границы книги (О то имя цел р! * р из ппоз, U * 1 из ппоз; подвтекст текст - (текст нз f I (подвтекст t2) : t2); текст (pi) [11] :■текст [pi) [U]

[: с из ппоз — 1]; текст (pi) :* текст (plj [: (с из ппоз> 1 I U I U - 1)] иначе пока т> страница окончена (О цк нов строчка (О кц все;

тпоз :=плоз :=■ (риз тпоэ ♦ 1,1,1) все

иначе тпоз :* (р из тпоз + 1,1,1) все все;

проц имя файл пуст newpage ■ нов страница;

{Каждая из трех следующих процедур либо вырабатывает истина и тогда соответствующая строчка, страница или файл хороши (dd), либо вы* рабатывает ложь и тогда текущая позиция может оказаться за пределами логического файла или может переполниться номер страницы, либо же она циклится до тех пор, пока не устранится соответствующая причина, либо такая процедура прекращается в результате какого-то перехода. При выходе из такой процедуры настройка на запись/чтение определяется ее параметром чтение. J

153

Страница 155

С.152 ГОСТ 27974-88

e)    проц ^-строчка хороша ■ (ими файл f, лог чтение) лог:

начало лог не оконч; пока не оконч :■ страница хороша (f, чтение); строчка окончена (f) А не оконч цк ( н (испр строчка из f) (О I настроить (f, чтение); нов строчка (О) кц; не оконч    *

конец;

f)    проб ^-страница хороша - (имя файл f, лог чтение) лог:

начало лог не оконч; пока не оконч := файл хорош (f, чтение);

страница окончена (f) Л не оконч цк (-J (испр страница из f) (f) I настроить (f, чтение); нов страница (О) кц; не оконч конец;

g)    проц *-файл хорош ■ (имя файл f, лог чтение) лог:

начало лог не оконч := истина; пока настроить (f, чтение); не оконч Л

(чтение I лог файл окончен I фиэ файл окончен) (f) цк не оконч := (чтение I испр лог фай-i из f I испр физ файл из f) (f) кц; не оконч конец;

h)    проц «-настроить = (имя файл f, лог чтение) пуст:

(чтение I настроить на чтение (О I настроить на запись (f));

i)    проц установить = (имя файл f, цел р, 1, с) пуст:

если ~| открыт из f V ~1 ,возм установка (f) то не определено иначе лог чтение = (дня чтения из f I истина I : для записи из f I ложь1 не определено; пропуск); имя позиция тпоз * тпоз кз f, плоз * заполн из книга из f; позиция раб тпоз ■ тпоз; если (тпоз (р, 1, с)) вне ппоз если тпоз :* ппоз;

(Л (испр лог файл из f) (f) I не определено); настроить (f, чтение) инее позиция границы = границы книги (f); р < 1V р > р из границы ♦ 1 V К 1VI>1 из границы + 1 V с< 1 Vc>ch3 границы + 1 то тпоз := раб тпоз; не определено

154

Страница 156

ГОСТ 27974-М C.I53

все

все;

проц (имя файл, цел, цел, цел) пуст set - установить; j) проц усг нач * (имя файл f) пуст:

eciV -> открыт из i V “)воэм уст нач (О то не определено иначе

имя лог (для чтения из f) :* П возм вывод (f); имя лог (для записи из f) :«Й возм ввод (f); имя лог (для литер из f) :* пвозм двончн (£); имя лог (для двоичн из f) := ложь; имя позиция (тпоз из 0 := (1,1.1) все;

проц (имя файл) пуст reset ■ уст нач; к) проц уст номер литеры в (имя файл {, цел с) пуст: если -» открыт из f то не определено иначе имя имени позиция тпоз = тпоз из f; пока с из тпоз * с

ЦК

если с <lvc>c из границы книги (f) + 1 то не определено инее с > с из тпоз то вперед (О иначе назад (f) все кц все;

проц (имя файл, цел) пуст set char number 3 уст номер литеры;

10.3.2. Значения для обмена

10.3.2.1. Процедуры преобразования.

'{Процедуры целое, фикс и плав предназначены для использования с процедурами бесформатного обмена вывод, печ и зал в тех случаях, когда требуется небольшое добавочное управление над порождаемым расположением. Каждая из этих процедур имеет параметр разрядность, абсолютная величина которого задает длину сгроки, порождаемой преобразованием предъявляемого арифметического значения V. И фикс, и плав имеют параметр после, задающий число цифр, требуемых после десятичной точки, а параметр порядок в плав задает разрядность, отводимую для порядка. Если V нельзя выразить строкой в пределах заданного разрядность, - даже за счет уменьшения значения после, если оно есть, - то вместо этого вырабатывается строка, заполненная литерами литера ошибки (10.2.1 1).

Знак включается обычным образом, и начальные нули заменяются пробелами. Однако пользователь может указать, задавая отрицательную разрядность, чтобы знак включался только для отрицательных значений. Если задана разрядность нуль, то вырабатывается кратчайшая возможная строка,

155

Страница 157

C.I54 ГОСТ 27974-88

в которую, согласно остальным параметрам, можно преобразовать V. Следующие примеры иллюстрируют некоторые из этих возможностей: печ (целое (i, -4)),

которое может печатать 0”, *- •-99",-99*’, „9999” или, если i было больше, чем 9999, „•***", где -выдача литера ошибки; неч (целое (i. 4) ).

которое будет печатать ♦ 99", а не.-j i 99"; печ (целое (i,0)), которое может печатать „О”, „99”, „-99”, „9999” или „99999”; печ (фикс (х, -6, 3)),

которое может печатать „2.718", „27.183", или „271.83" (в последнем случае пожертвовано одним местом после десятичной точки, чтобы приспособиться к данному числу); печ (фикс (х, 0,3)),

которое может печатать „2.718", „27.183” или „271.828”; печ (плав (х,9.3,2)), которое может печатать 2.718,0 ♦ 0”, „+2.718ю -1" или „+2.7210 ♦И" (в последнем случае пожертвовано одним местом после десятичной точки, чтобы освободить пространство для неожиданно большого порядка).}

a)    вид^число =об (<Двещ>, <Дцел>);

b)    проц целое = (число v, цел разрядность) строк:

выб VB

<    (Д цел х):

(цел длина :■ абс разрядность - (х < Д ОV разрядность >0 111 0), Д цел п := абс х; если разрядность ■ 0 то Д цел m п; длина :■ 0; пока ш+:*= Д 10; длина + :■ 1; т*Д 0 цк пропуск кц все;

строк s :■ предст целого (п, длина); если длина * 0 V

литера в строке (литера ошибки, лок'иел.з) то абс разрядностьX литера ошибки иначе

(х < Д 0 I **—"I : разрядность > 0 Г+"1 ” ") прип *;

(ра.>рядность *01

(абс разрядность - вегр s) X ”. " прип s);

S

все) >,

<    (Д вещ х) : фикс (х, разрядность, 0) >

156

Страница 158

ГОСТ 27974-88 С. 155

быв;

проц (число, исл) строк whole “ целое;

c)    проц фикс * (число V, цел разрядность, после) сгрок:

выб v в

<    (Д вещ х):

если цел дпина :ж абс разрядность -(х<Д0Уразрядносгь>0111 0); после>0Л (длина > после V разрядность ■ 0) то Д веш у = абс х; если разрядное!ь = 0 то дойна :■ (после * 01110); пока у + Д.5 X Д .1 t после > Д 10 t длина цк длина +■:* 1кц; длина +:= (после = 0 101 после + 1) все;

строк s :* предст рационального (у, дпина, после) ; если -.литера в строке (литера ошибки,лок цел, s) то (длина > вегр $Ду <Д 1.0 I ”0" прип $);

(х<Д0 1„-”1 : разрядность>0 1И»”1 ” ”) прип з; (разрядность Ф 0 I

(абс разрядность - вегр s) X"-” прип я); s

инее после > 0

то фикс (v, разрядность, после - 1) иначе абс разрядность X литера ошибки все

иначе не определено; абс разрядность X литера ошибки все >,

<    (Д цел х): фикс (Д веш (х), разрядность, после) > быв;

проц (число, цел, цел) строк fixed ■ фикс;

d)    проц плав * (число v, цел разрядность,

после, порядок) строк: выб v в

<    (Д веш х):

если цел прежде - абс разрядность - абс порядок -(после Ф 0 I после + 1 I 0) - 2; знак прежде + знак после > О то строк s, Д веш у := абс х, цел р := 0;

Д нормализовать (у, прежде, после, р); s ;■

фикс (знак х X у, знак разрядность X (абс разрядность - абс порядок - 1), после) + ..ю ” ♦ целое (р. порядок); если порядок = 0 v литера в строке (литера ошибки,

157

Страница 159

С. 156 ГОСТ 27974-8Я

лок цел,s)

10

плав (х. разрядность, (после * О I после - 1 10), (порядок > О I порядок + 1 I порядок - I)) иначе s все

иначе не определено; абс разрядность X литера ошибки все >,

< (Д цел х): плав (Д веш (х), разрядность, после, порядок) > быв;

проц (число, цел, цел. цел) строк float = плав;

e)    проц ^предст * авление целого =

(число V, цел разр) строк:

Авырабашвает строку с максимальной длиной 'разрядность, содержащую десятичное представление положительного целого числа V 4 выб VB

<    (Д цел х):

начало строк s, Д цел п :■ х; пока цифру в литеру (С (п мод Д 10)) прип s; п-г :* Д 10; п*Д О цк пропуск кц;

(вегр s > разр I разр X литера ошибки I s) конец > быв;

f)    проц ^предст f> авление рационального -

(число V, цел разр, после) строк:

А вырабатывает строку с максимальной длиной ‘разр'ядность, содержащую округленное десятичное представление положительного вещественного числа V; если 'после'больше нуля, эта строка содержит десятичную точку, за которой следует 'после' цифр |t выб v в

<    (Д веш х):

начало строк 8, цел прежде :«0;

Д вещ у :■ х + Д-5 X Д.1 t после; проц подб Й ор # циф I» ры |к = (имя Д вещ у) лит: Цифру в литеру ((цел с := С целч (у X := Д 10.0);

(с>9 I с:-9); у-:«Ус; с)); пока у > Д 10.0 t прежде цк прежде +:= 1 кц; ■ у/:= Д 10.0 t прежде; до прежде цк s шноспр подб циф (у) кц;

(после > 0 I s плюспр " . ”);

158

Страница 160

ГОСТ 27974-88 C.I57

до после ик s плюспр подб цнф (у) кц;

(вегр s > разр I разр X литере ошибки I з) конец > быв;

g)    ироц *-Д нормализовать = (имя Д вещ у, цел прежде, после,

имя цел р)

пуст: й приспосабливае! значение 'у' * тому, чтобы оно могло подвергаться обмену согласно формату ф п (прежде) d . п (после) d ф;

’р' устанавливается таким, чтобы у X 10 t р равнялось первоначальному значению 'у' |4 начало

Л вещ g =* Д 10.0 t прежде; Д веш h = g X Д.1; пока у > g цк у X := Д. 1; р + := 1 кц;

(у*Д 0.0 I пока у<ЬцкуХ:=Д 10.0; р 1 кц);

(у ♦ Д.5 X Д.1 ^ после > g I у :=h; р+:= 1) конец;

h)    проц *-цифру в литеру = (цел х) лит:

„0123456789abcdef” [x+lj;

i)    проц '‘•строку в Д цел = (строк а, цел основание,

имя Д цел i) лог: вырабатывает истина, если абсолютное значение результата не больше Д макс цел ^ начало

Д цел 1г = У основание; лог безопасно :■ истина;

Д цел п :* Д 0, Д цел ш = Д макс цел 4- 1г;

Д цел ml = Д макс цел - m X 1г; для i от 2 цо вегр s

пока Д цел циф ■ Y литеру в цифру (s [i]); безопасно :«n<raVn»mA циф < ml UK n := n X lr + циф кц;

если безопасно то i := (s [1] =”+” Ini - n);истина иначе ложь все конец;

j) проц ^-строку в Д веш = (строк s, имя Д вещ г) лог: t вырабатывает истина, если абсолютное значение результата не больше, чем Д макс вещ |1 начало цел е :■ вегр 8+1; литера в строке (”ю'\е, s); цел р := е; литера в строке (и. ” р, s); цел j := I, длина := 0, Д вещ х :* Д 0 0; fi пропуск начальных нулей: it для i от 2 до е - 1

пока s [1] ="0”Vs [1] = ” . ”Vs [i] ш'*г"

159

Страница 161

С.158 ГОСТ 27974-8$

ЦК j :» i кц:

для i от j + 1 до е - I пока длина <

Л гозрядиость всш

ЦК

если s (i) Ф ". **

го х := х X Д 10.0 + У литеру в цифру (s (j := ij); длина +:= 1

все ц все значащие цифры преобразованы ft

кц;

it предварительно установить порядок: |1 цел пор *ядок |1:» (р> j I р — j — 1 I p-j). показ :*0; й преобразовать порядок: ф лог безопасно := если е < вегр s

то строку в Д цел (s [е ♦ 1 :]. 10. показ) иначе истина

все; •

й подготовить представление Д макс веш для сравнении с Д веш значением, которое должно быть выработано: ф Д веш макс мант й исса ft :• Д макс кеш, цел макс пор ft ядок ft :■ 0;

Д нормализовать (макс мант, длина, 0, макс пор); пор ♦:« показ; если безопасно V (пор > макс пор V«юр ■ макс пор Л X > макс мант) то лом»

иначе г = (s (1) -**♦" I xl - х) X Д 10.0 t пор; истина все конец;

к) проц^-литеру в цифру = (лит х) цел:

с •*—” 101 цел i;

литера в строке (х, i," 0123456789 abedef” ); i — 1); 1) проц литерэ в строке » (лит с, имя цел J, строк s) лог: (лог есть := ложь;

для к от нитр s до вегр s пока И есть цк (с * s [k] I i :• к; есть :* истина) кц; есть);

проц (лит, имя цел. строк) лог char in string •литера в 'строке; in) цел Д разрядность цел ■

$ наименьшее целое значение, такое, что 'Д макс цел' можно преобразовать без ошибки, используя трафарет п (Д разрядность цел) d it (цел с :■ 1;

160

Страница 162

Г ОСТ 27974-88 С. 159

пока Д 10 t (с - 1) < Д.1 X Д макс цел цк с +:= 1 кц;

с):

цел L int width = Д разрядность цел; п) цел Д разрядность веш *

It наименьшее целое значение, такое, что при преобразовании '1.0' и '1.0 + Д точность вещ', с помощью трафарета d.n (Д разрядность вещ - 1) d порождаются разные сгроки t

1 - С целч (Д лг (Д точность веш) / Д лг (Д 10)); цел L real width ■ Д разрядность веш; о) цел Д разрядность порядка =

й наименьшее целое значение, такое, что 'Д макс вещ' можно преобразовать без ошибки, используя трафарет d.n (Д разрядность вещ - 1) den (Д разрядность порядка) d |1

1 + С целч (Д лг (Длг (Д макс вещ) / Длг (Д 10)) /

Длг (Д 10));

цел L exp width * Д разрядность порядка;

10.3.2.2.    Виды для обмена.

a)    вил «-провывод к простые для вывода jt = об (< Д цел >,

< Д веш >, < Д комля >, лог, < Д бит >, лит, ( J лит);

b)    вид ^-выводимое • с фактическийюпнсатель, специфицирующий вид, объединенный из {2.1.3.6.а} достаточно множества видов, ни один из которых не является 'пустым значением', и не содержит 'подвижное', 'имя , ’процедура’, объединение' с;

c)    вид *-проввод ф простые для ввода |1« об (< имя Д цел >,

<    имя Д вещ >, < имя Д компл >, им* лог,

<    имя Д бит >, имя лит, имя [ J лит, имя строк);

d)    вид “-вводимое = с фактическийюпнсатель, специфицирующий вид, объ

единенный кз {2А.3.6л) 'имени подвижного вектора из литерных’ вместе с достаточным множеством видов, каждый из которых есть 'имя', за которым следует вид, не содержащий 'подвижное', 'имя', 'про-дедурв', 'объединение' с;

{См. замечания после 10.2.3.1, касающиеся термина .достаточное множество”.!

10.3.2.3.    Выстраивание.

a)    оп *стройвывод * (выводимое х) ( J провывод: с результат ,.выстраивания” V с;

b)    оп *• стройввод « (вводимое х) { ) проввод: с результат выстраивания 'х' с;

c)    Результатом „выстраивания” данного значения V является [ одномерный } массив W, получаемый следующим образом:

требуется, чтобы V , .(если оно есть имя,} не было псевдонменем; некоторый счетчик i устанавливается в 0;

V „проходится” { d J с помощью i;

6-1361

161

Страница 163

С.160 ГОСТ 27974-88

W составляется из паспорт» ((1, i)) и получаемых прохождением V элементов;

• если V не есть (есть) имя, то вид результата является видом, специфицируемым описателем [ J провывод ([ J проввод).

d) Значение V „проходится с помощью счетчика следующим образом: Если V — значение (именует значение), из которого объединен вид, специфицируемый описателем провывод,

то

i увеличивается на единицу; элементом, выбираемым по (i) в W, является V; иначе *

Случай А: V — {одномерный } массив (именует одномерный массив) с паспортом ((J,и));

для j * 1.....и элемент, выбираемый (подымя, выбираемое) по

(J) в V, проходится с помощью i;

Случай В: V - {n-мерный, п > 2} массив (именует массив) с паспортом

(Oi.u»). (la.ua).....(1п.и„)).гдеп>2;

для j ж 1......U| массив, выбираемый {2.1 ЗАЛ } (имя, генери

руемое {2.13.4.}] по отрезку (j, (la.Ua.O) .... (ln.un,0)),проходится с помощью i;

Случай С: V -структура (именует структуру) V 1:

поля (подымека V, именующие поля) згой VI, взятые в их порядке, проходятся с помощью i.

10.3.3. Бесформатный обмен

| При бесформатном обмене элементы „списка данных” обмениваются один за другим через заданный файл. Каждый элемент этого списка данных является либо процедурой расположения, вид которой специфицируется проц (имя файл) пуст (10.3.1.6), либо значением вида, специфицируемого посредством выводимое (при выводе) или вводимое (при вводе). Когда процедура расположения встречается в списке данных, она вызывается с заданным файлом в качестве параметра. Другие значения в списке данных сначала выстраиваются (10.3.2-3), а затем результирующие значения одно за другим обмениваются через заданный файл.

Обычно обмен происходит на текущей позиции, но если (при выводе) недостаточно места в текущей строчке или (при вводе) на текущей позиции Hci читаемого значения, то сначала вызывается процедура обработки события, соответствующая при конце строчки (или. где это целесообразно, при конце страницы, при конце физ файла или при конце лог файла), а затем, если она вырабатывает ложь, в данной книге ищется следующая „хорошая” позиция литеры, а именно первая позиция литеры в следующей непустой строчке.}

Ш-3.3.1. Бесформатный вывод.

{Для бесформатного вывода можно использовать вывод (а) и печ (или зап) (10.5.1 -d). Каждое выстроенное значение V из списка данных выводится следующим образом:

162

Страница 164

ГОСТ 27974-88 с. 161

аа) Если вид этого V специфицируется посредством Д цел, то сначала, если в остатке текущей строчки нет достаточно места для Д разрядность цел + 2 литер, отыскивается хорошая позиция на некоторой последу ющей строчке (см. 10.3.3), а затем, если это не начало строчки, дается один пробел и V выводится как бы под управлением шаблона п (Д разрядность цел — I} z ♦ d. bb) Если вид этого V специфицируется посредством Д веш, то сначала, если в текущей строчке нет достаточного места для Д разрядность веш + Д разрядность порядка + 5 литер, отыскивается хорошая позиция на некоторой последующей строчке, а затем, если это не начало строчки, дается один пробел и V выводится как бы иод управлением шаблона

+ d.n (Д разрядность вещ - 1) den (Д разрядность порядка — 1) г + d. сс) Если вид этого V специфицируется посредством Дкомпл, то снача-ла, если в текущей строчке нет достаточно места для 2 X (Д разрядность вещ + Д разрядность порядка) + 11 литер, отыскивается хорошая позиция на некоторой последующей строчке, а затем, если это не начало строчки, дается один пробел и V выводится как бы под управлением шаблона + d.n (Д разрядность веш - 1) den (Д разрядность порядка - 1) z + d"—” i + d.n (Д разрядность вещ - 1) den (Д разрядность порядка — — 1) z ♦ d.

dd) Если вид этого V специфицируется посредством лог, то сначала, если текущая строчка полна, отыскивается хорошая позиция в некоторой последующей строчке, а затем, если V есть истина (ложь), выводится литера, выдаваемая да (нет) (без прерывающего пробела).

ее) Если вид этого V специфицируется посредством Д бит, то элементы единственного поля этого V выводятся (как в dd) один за другим (без прерывающих пробелов, но с переходом на новую строчку, когда эго требуется) .

ff) Если вид этого V специфицируется посредством лот, то сначала, если текущая строчка попна, отыскивается хорошая позиция в некоторой последующей строчке, а затем выводится V (без прерывающего пробела).

gg) Если вид этого V специфицируется посредством [ J лит, то элементы этого V выводятся (как в ff) один за другим (без прерывающих пробелов, но с переходом на новую строчку, когда это требуется) а) проц вывод ■ (имя файл f,    ,

[ J об (выводимое, проц (имя файл) пуст) х) пуст: если открыт из f то для i до вегр х

цк выб настроить на запись (f); настроить на литерное (f); х [i] в (проц (имя файл) пуст пиф) : пиф (f),

(выводимое выв): начало

I J провывод у = стройвывод выв;

< проц Д лреоб I* разование fi веш «

б

163

Страница 165

С.162 ГОСТ 27974-88

(Д вещ г) строк: плав (г, Д разрядность вещ + Д разрядность порядка + 4, Д разрядность вещ - 1,

Д разрядность порядки + 1) >; для j до ветру цк выбу (j j в

(об (число. < Д компл >) чиском): начало строк s := выб чнском в

<    (Д цел к): целое (к, Д разрядность цел ♦ I) >,

<    (Д веш г): Д преоб веш (г) >,

<    (Д КОМПЛ w): Д преоб вещ (вч w) к + Д преоб вещ (мч w) >

быв;

имя имени позиция тпоэ = тпоз из f. цел п = вегр s; пока след позиция (f);

(п > с из границы книги (О 1 не определено); с из тпоэ + (с из тпоз = 1 I п I п + 1) > с из границы книги (0 + 1 цк -1(испр строчка из О (О I

вывод (f. нов строчка)); настроить на запись (f) кц;

(с из тпоэ Ф 1 I прип s); для к до вегр s цк вывести литеру (f, s [k]) кц конец |* вывода чисел $

(лог Ь): (след позиция (0; вывести литеру (f, (b 1да1 нет))),

< (Д бит дбит):

для к до Д размер бит

цк вывод (f,(fl F из дбит) [к]) кц>,

(лит к): (след позиция (f); вывести литеру (f, к)),

({ J литстр): для к от нитр стр до вегр стр

цк след позиция (f); вывести литеру (f, стр (к]) кц быв кц конец быв кц

иначе не определено все;

проц (имя файл, [ ] об (выводимое, проц (имя файл) пуст)) пуст put * вывод;

Ь) проц ^вывести литеру = (имя файл f, лит лит) пуст:

164

Страница 166

ГОСТ 27974-88 С. 163

earn открыт из f Л -.строчка окончена (О то имя позиция тпоз втпоз из f, ппоз * за пол и из книга из f;

настроить на литерное (f); настроить ка запись (f); имя цел р = р из тпоз, 1 • 1 из тпоз, с = с из тпоз; лит к; лог есть :■ ложь; выб текст из f в (текст): (к :»лнт; есть :•истина),

(подвтекст):

для i до вегр F из код из f пока -»есть

цк ст (лит внутр, внешн) табл * (F из код из f) (>];

(внутр из табл * лит I к :* внешн из табл: есть :а истина)

кц

быв;

е-сли есть то

выб текст из f в (текст tl): tl [р] (]] (с) :»к (подвтекст t2): t2 [р] jl) (с] :■ к быв; с + :“ 1;

если тпоз вне ппоз то ппоз :■ тпоз инее -I воэм установка (f) Л позиция (р из ппоз, 1 из ппоз, I) вне тпоз то ппоз :* тпоз:

(сжимаем (f) I

с размер строчки и страницы, содержащей логический размер данной книги, и всех последующих строчек и страниц может увеличиться { например, до размеров, с которыми книга была заведена (10.3.1.4.CC) первоначально, или до размеров, предполагаемых из макс позиция из кан из f ] с) все иначе к

если -»(испр ошибка литеры из f) (f, k)

то не определено; к

все;

проверить позицию (f) ; вывести литеру (f, к) все

иначе не определено

все ft настройка на запись сохраняется fl;

;) проц fcMR позиция = (имя файл f) пуст:

(-♦строчка хороша (f, для чтения из f) I не определено)

^строчка теперь хороша [ 10.3.1.6.dd} ,а настройка ка запись/чтение такая же, как и при входе ft;

10.3.3.2. Бесформатный ввод.

{Для бесформатного ввода можно использовать ввод (а) и чит

165

Страница 167

С. 164 ГОСТ 27974-88

(10.5.1л). Значения из данной книги присваиваются каждому выстроенному имени N из списка данных следующим образом:

аа) Если вид этого N специфицируется посредством имя Д цел, то сначала в данной книге ищется первая литера, не являющаяся пробелом (при необходимости отыскиваются хорошие позиции в последующих строчках); затем из данной книги читается наибольшая строка, которую можно „составить” (10.3.4.1 Л.kk) под управлением некоторого шаблона, имеющего форму

♦ n (k!)    ” n (к2) dd или n (к2) dd

(где kl и к2 выдают произвольные неотрицательные целые числа); эта строка преобразуется в целое число и присваивается N; если такое преобразование не было успешным, то вызывается процедура обработки события, соответствующая при ошибке значения.

bb) Если вид этого N специфицируется посредством имя Д вещ, то сначала в данной книге ищется первая литера, не являющаяся пробелом (при необходимости отыскиваются хорошие позиции в последующих строчках); затем из данной книги читается наибольшая строка, которую можно составить под управлением некоторого шаблона, имеющего форму

+ n (kl) "a-" n (k2)d или n (k2)d.

с идущими затем

. n (k3)dd или ds.

и, возможно, далее

е п (к4)    + п (к5) n (k6)dd или

е п (к5) n (k6)dd;

эта строка преобразуется в вещественное чисто и присваивается N; если такое преобразование не было успешным, то вызывается процедура обработки события, соответствующая при ошибке значения.

сс) Если вид этого N специфицируется посредством имя Д ко мил, то сначала вводится (как в bb) вещественное число и присваивается первому подымени этого N; затем в дайной книге ищется первая литера, не являющаяся пробелом, а потом вводится некоторая литера и. если она не является ни "i”, ни "i”, ни 'V', вызывается процедура обработки события, соответствующая при ошибке литеры (10.3.1.3.сс), с предлагаемой литерой ”1**; наконец, вводится вещественное число и присваивается второму подымени данного N.

dd) Если вид этого N специфицируется посредством имя лог, то скачала в данной книге ищется первая литера, не являющаяся пробелом (при необходимости отыскиваются хорошие позиции в последующих строчках); затем читается некоторая литера; если эта литера та же, что и выдаваемая да (нет), то N присваивается истина (ложь), а в противном случае вызывается

166

Страница 168

ГОСТ 27974-S8 С. 165

процедура обработки события, соответствующая при ошибке литеры, с предлагаемой литерой нет.

ев) Если вид этого N специфицируется посредством имя Д бит, то производится ввод (как в dd) для подымем этого N, одного зз другим (с пере-. ходом на новую строчку, когда это требуется).

ff) Если вид этого N специфицируется посредством имя лиг, то сначала, если текущая строчка исчерпана, отыскивается хорошая позиция на некоторой последующей строчке, а затем читается и присваивается N некоторая литера.

gg) Если вид этого N специфицируется посредством имя [ ] лит, то производится ввод (как в ff) для подымен этого N, одного за другим (с переходом на новую строчку, когда это требуется).

hh) Если вид этого N специфицируется посредством имя строк, то литеры читаются до тех пор,

0) пока не встретится литера,содержащаяся в строке, присоединенной к денному файлу вызовом процедуры задать стопстроку,

(ii) либо пока не исчерпается текущая строчка, вследствие чего вызывается процедура обработки события, соответствующая при конце строчки (или, где это целесообразно, при конце страницы, при конце фиэ файла или при конце лог файла); если данная процедура обработки события продвигает текущую позицию к хорошей позиции (см. 10.3.3), то ввод литер возобновляется.

Строка, состоящая из введенных литер, присваивается N (отметим, что если текущая строчка была исчерпана либо текущая позиция была на начале пустой строчки или вне логического файла, то этому N присваивается пустая строка).} а) проц ввод = (имя файл f,

( ] об (вводимое, проц (имя файл) пуст) х) пуст: если открыт из f то . для i до вегр х

цк выб настроить на чтение (f); настроить на литерное (f);

X fij в

(проц (имя файл) пуст пиф): ииф (О,

(вводимое вв): начало

[ J проввод у = стройввод вв; лиг к; лог к пусто; оп ? = (строк s) лог: ft вырабатывает истина, если следующая литер, когда она есть, в текущей строчке содержится в 's' (эта литера присваивается 'к'), а иначе ложь |i если к пусто Л (строчка окончена (f) vnor файл окончен (О) то ложь

иначе (к пусто I ввести литеру (f, к));

167

Страница 169

С-166 ГОСТ 27974-88

к пусто := литера в строке (к, лок цел, s) все:

оп ? = (лиг с) лог: ?сгрок (с): прио * 8:

on ! » (сгрок 8,;шгс) лит:

It запрашивает литеру, содержащуюся в ,У: если читается литера, не входящая в 's’, вызывается процедура обработки события, соответствующая 'при ошибке литеры’, с предлагаемой литерой ‘с’ если (к пусто I проверить позицию (О: ввести литеру (f, к)): к пусто := исгииа; литера в строке (к. лок цел, s) го к

иначе лит предо с: если (испр ошибка литеры из О (f> предл) то (литера в строке (предл, лок цел, s)

I предл I не определено; с) иначе не определено: с все:

настроить на чтение (f) все:

оп ! = (лит s, с) лит: строк (*) ! с;

проц проп й пуск |t нач |t альных й пробелов =

пуст:

пока (к пусто I след позиция (f));

? ”-”цк пропуск кц; проц проп Л уск ф пробелов ■ пуст: пока ?’\l" цк пропуск кц; проц чит г ать й ииф f. ры |t = строк:

(строк f :="0123456789" ! "Q": пока ? ”.0123456789” цк t плюспр к кц; t); проц чит знак * лит:

(лит t = (проп пробелов; ?    ” I kl ”+”);

проп пробелов; t); проц чит чне Ц ло ft = строк:

(лит t = чит знак; t + чит циф); проц чит вещ ft естественное |i * строк:

(строк t := чит знак;

('-.? ".’’It плюспр чит циф I к пусто :* ложь);

(    t    плюспр”    .”    +    чит    циф);

( ? ”иЛе” I t плюспр ”10” + чит чис); ,t); для j до вегр у

цк лог не конч р ено й :* ложь;

168

Страница 170

ГОСТ 27974-88 С. 167

к пусто := истина; выбу Ш в

<    (имя Л цел и;щ):

(проп нач пробелов:

ие коич :• -^строку в Д цел (чит чис, 10. идц)) >.

<    (имя Д вещ идв):

(проп нач пробелов:

не коич:*

строку в Д веш (чит вещ, идв)) >,

<    (имя Д кома-i идк):

(проп нач пробелов: не конч:=

строку в Д веш (чит вещ, ивч идк): проп пробелов: „i и 1    1"г

ие коич :ж не коич V -«строку в Д веш (чит веш, имч идк)) >,

(имя лог ил):

(проп нач пробелов; ил :« (да + нет) ! нет * да),

< (имя Д бит идб): для i до Д размер бит цк ввод (f, (Д Fhj идб) (i)) кц >,

(имя лит ил): (след позиция (f);

ввести литеру (f, ил)).

(имя ( ) лит имп):

для i от нигр имл до вегр и мл цк след позиция (£); ввести литеру (f, имл (ij) кц;

(имя строк ис): начало строк t: пока проверить позицию (О если строчка окончена (О V лог файл окончен (f) то ложь

ииаче ввести ."Итеру (f, к); к пусто :■ -•литере в строке (к.

пок цел, стопе из f)

вое

цк t плюелр к кц; ис :■ t конец быв:

(“'кпусто I назад (f)); если и: коич

то (->(испр ошибка значения из О (О •

169

Страница 171

С168 ГОСТ 27974-88

не определено): нас!роить на «пение (О все ки коней быв кц

иначе не определено все:

проц (имя файл, [ ] об (вводимое, проц (имя файл пуст)) пуст get = ввод:

b)    проц "-ввести литеру * (имя файл f, имя лит лит) пуст:

если открыт из f Л строчка окончена (О А -»лог файл окончен (f) то имя позиция тпоз = тпоз из f: настроить на литерное (f): настроить на чтение (0 ’• цел р «= р из тпоз. 1 * 1 из тпоз, с » с из тпоз; сиз тпоз♦:* 1; лит :■ выб текст из f в (текст tl): tl [р} [1] (с],

(подвтекст t2):

(лит k := t2 (pi [I] [с]; лог есть :* ложь:

для i до вегр F из код из f пока -s гсть цк ст (лит внутр. внсшн) таби =

(F из код из О 10;

(внешн из табл = k I к :■ внутрь из табл: есть :■ истина) цк;

если есть то к иначе к

если (испр ошибка литеры из f) (f, k) то k

иначе не определено: " ." все;

настроить на чтение (f) все) быв

иначе не определено

все |i настройка на чтение сохраняется |t;

c)    проц ^-проверить позицию • (имя файл f) пуст:

начало лог чтение = для чтения из f; лог не окончено :■ истина; пока не окончено :* не окончено Л страница хороша (f, чтение);

170

Страница 172

ГОСТ 27974-88 С. 169

строчка окончена (f) Л не окончено цк не окончено := (искр строчка из f) (f) кц

конец;

{ Процедура проверить позицию используется в форматном обмене перед каждым вызовом процедур вывести литеру и ввести литеру. Если позиция не хороша (10.3.1.6.dd). вызывается соответствующая процедура обработки события и, если вырабатывается истина, могут дальше вызываться процедуры обработки события. Если вырабатывается ложь, то в случае процедуры обработки события, соответствующей при конце страницы, вызывается нов страница, а для любой другой процедуры обработки события действия по умолчанию не предпринимаются и никакой процедуры обработки события больше не вызывается. По выходе сохраняется настройка на чтение /запись, которая была при входе, но текущая позиция может не быть хорошей. В этом случае не определено будет вызвано ь следующей процедуре вывести литеру или ввести лигеру. Однако проверить позицию вызывается также при вводе строк (hh). и в этом случае, если позиция не хороша, строка обрывается. J

10.3.4. Текс ты формата

{ В форматном обмене каждое выстроенное значение из списка данных (ср. 10.3.3) сопоставляется с составляющим шаблоном некоторого текста-формата, обеспечиваемого пользователем. Шаблон задаст, как преобразовать значение в или из последовательности литер, и предписывает расположение этих литер в книге. Возможности, которые можно задавать, включают: число цифр, позиции десятичной точки и знака, если они есть, подавление нулей и вставку произвольных строк. Например, с помошью шаблона

-d.3d"-’3d"t”e г ♦ й значение 1234.567 можно было бы обменивать, как строку ••i 1.234 ^ 567 — ,о i ♦ 3 и.

„Формат" - это структура (те. внутренний объект) вида 'ФОРМАТ', отражающая иерархическое строение текста-формата (являющегося внешним объектом). В данном разделе даны синтаксис текстов-формата и семантика для получения соответствующих им форматов. Фактический форматный обмен осуществляется посредством процедур, задаваемых в п. 10.3.5. Для удобства описание их операций дается здесь в связи с соответствующим синтаксисом.}

10.3.4.1.    Наборы и шаблоны.

10.3.4.1.1.    Синтаксис.

{ Следующие описания-вида (взятые из 10.33.а) отражены в приводимых ниже метаправилах от А до К.

A)    вид формат =ст (лодв [1:0] кадрр):

B)    вид кадр = ст (цел утн, счет, оук, подв (1:01 набор н):

C)    вид набора об (шаблон, пакет):

D)    вид пакет ■ ст (вставка в1, проц цел ноет, цел удк,

вставка в2):

171

Страница 173

Cl70 ГОСТ 27974-8»

E)    вид вставка = иодв [1 : 0] ст (ироц цел повг.об (строк, лиг) сгр):

F)    вид шаблон * ст (об (трафарет, травыб, трэфор, трабесф, пуст)

траф,вставка в):

G)    вид трафарет =ст (цел тип,под» (1 : 0] рамка рамки):

H)    вид рамка ■ ст (вставка в. прои цел повг, лог подав, лит марк):

I)    вид травыб ■ ст (вставка в. цел тип, подв (1 : 0| вегавка стр):

J) вид трофор ■ ст (вставка в, проц формат прф):

К) вид трабесф ■ ст (вставка в. поди (1:0) проц цел спец): j

A)    ФОРМАТ :: структура'содержащая букву алеф для выборки вектора из КАДРОВ в себе.

B)    КАДР : структура содержащая букву у букву т букву и для выборки целого букву с букву ч букву е букву т для выборки целого

букву о букву у букву к для выборки целого букву и для выборки вектора из НАБОРОВ в себе.

C)    НАБОР :: объединение ШАБЛОНА ПАКЕТА воедино.

D)    ПАКЕТ :: структура содержащая букву в цифру один для выборки ВСТАВКИ букву п букву о букву в букву т шм выборки процедуры вырабатывающей целое букву у букву д букву к для выборки целого букву в цифру два для выборки ВСТАВКИ в себе.

E)    ВСТАВКА :: вектор из структур содержащих букву п букву о букву в букву т для выборки процедуры вырабатывающей целое букву с букву т букву р для выборки объединения вектора из литерных литерного воедино в себе.

F)    ШАБЛОН :: структура содержащая букву т букву р букву а букву ф для выборки объединения ТРАФАРЕТА ТРАВЫБА ТРАФОРА ТРАБЕС-ФОРА пустого значения воедино букву в для выборки ВСТАВКИ в себе.

С) ТРАФАРЕТ :: структура содержащая букву т букву и букву п дня выборки целого букву р букву а букву м букву к букву и для выборки вектора из РАМОК в себе.

H)    РАМКА :: структура содержащая букву в для выборки ВСТАВКИ букву п букву о букву в букву т для выборки процедуры вырабатывающей целое букву п букву о букву д букву а букву в для выборки логического букву м букву а букву р букву к для выборки литерного в себе.

I)    ТРАВЫБ :: структура содержащая букву в для выборки ВСТАВКИ бук

ву г букву и букву п для выборки целого букву с букву т букву р для выборки вектора ВСТАВОК в себе.

J) ТРАФОР :: структура содержания букву в для выборки ВСТАВКИ букву п букву р букву ф для выборки процедуры вырабатывающей ФОР-ПАТ в себе.

К) ТРАБЕСФ :: структура содержащая букву в для выборки ВСТАВКИ букву с букву п букву е букву ц для выборки вектора из процедур вырабатывающих целое в себе.

L) ФОР11АТ :: ци I определение структуры содержащей букву алеф

172

Страница 174

ГОСТ 27974-88 С. 171

для выборки вектора из структур содержащих букву у букву г букву н для выборки целого букву с букву ч букву е букву т ДЛЯ выборки целого букву о букву у букву к для выборки целого букву н для выборки век юра из объединения структуры содержащей букву г букву р букву а букву ф для выборки объединения ТРАФАРЕТА ТРАВЫБА структуры содержащей букву в для выборки ВСТАВКИ букву п букву р букву ф для выборки процедуры вырабатывающей использование ци I в себе ТРАБЕС»ЮРА пустого значения воедино букву в для выборки ВСТАВКИ в себе ПАКЕТА воедино в себе в себе.

(Вид 'ФОРПАТ' эквивалентен ( 2.1.1.2л ) виду 'ФОРМАТ'.}

М) ТОЧКА :: знак, точка; порядок; комплексное: логическое.

N) ПУНКТ г.нуль; цифра; литера.

О) 7НЕПОДАВЛЯ FMOE :: неподавляемое: ПУСТО.

Р) ТИП :: целое; вещесгвенное: логическое: комплексное:

строковое: битовое: целого выбора; логического выбора; форматное; бесформатное.

a)    текст формата в СРЕДЕ выдающий ФОРМАТ < 5 D ):

знак форматор ОФОРМЛЕННЫЙ (<>4f) список наборов в СРЕДЕ (b), злак форматор ОФОРМЛЕННЫЙ {?4f} .

b)    набор в СРЕДЕ £а, b) :

возможная последовательность пояснений [92а} , шаблон в СРЕДЕ { с I;

возможная последов/тельмость пояснений /92а! , вставка в СРЕДЕ { J }, повторюель в СРЕДЕ { g }, упакованный кратким список наборов в СРЕДЕ ( bj. возможная последовательность пояснений {92л} , вставка в СРЕДЕ fd }.

c)    шаблон в СРЕДЕ { b }: возможный трафарет ТИЛА в СРЕДЕ

(А342а, А343з, А344а, А345а, А346а. А347а. А348а, Ь,

А 349а, А34Аа}, вставка в СРЕДЕ d .

d)    вставка в СРЕДЕ { Ь. с. j, k, A347b. А348а, b, А349а. A34Aaj;

возможный литерал в СРЕДЕ [i j,

возможная последовательность размещений в СРЕДЕ fcj . с) размещение в СРЕДЕ {d} :

повторитель в СРЕДЕ (g}. код размещения {f}, возможный ш i в СРЕДЕ / i j •

f) код размещения

ПЗ

Страница 175

С.172 ГОСТ 27974-88

символ буква ка .чат { 94а } либо символ буква к {94а }: символ буква икс лат [ 94а} либо символ буква х { 94а} : символ буква игрек лат ( 94а} либо символ буква у { 94а}: символ буква эль лат { 94а} либо символ буква л { 94а} : символ буква пэ лат {94а } либо символ буква п 194а }: символ буква ку лат (94а) либо символ буква к> {, 94а} ;

g)    повторитель в СРЕДЕ (b. е, i, к }:    «

возможный иеподавляемый повторитель в СРЕДЕ {h }.

h)    нслодавляемый повторитель в СРЕДЕ {g, i} :

натуральное число {81 lb}:

символ буква эи лат {94а} либо символ буква и {94а/,

ЗАКРЫТОЕ предложение в СРЕДЕ раскрыто выдающее целое {31a,34a,-}, возможная последовательность пояснений (92а J.

i)    7НЕП0ДАВЛЯЕМЫЙ ли!ерал в СРЕДЕ R е, i А348с }:

7НЕП0ДАВЛЯЕМЫЙ повторитель в СРЕДЕ { g. h }. приведенное изображаемое в СРЕДЕ { 80з } сильно выдающее век юр из литерных {61а}, возможный нсподавлясмый литерал в СРЕДЕ { i /. j) ?НЕПОДАВЛЯЕМЛЯ рамка

ТОЧКИ в СРЕДЕ /л342с, A343b,c, А344а, А345а J: вставка в СРЕДЕ fdj,

7НЕПОДАВЛЯЕМОЕ подавление {l }. маркер ТОЧКИ { А342е. A343d. с, A344b. A345b}. к) 7НЕПОДАВЛЯЕМАЯ рамка ПУНКТА в СРЕДЕ {А342Ь. с. А346а}: вставка в СРЕДЕ fd}. повторитель в СРЕДЕ fg},

7НЕПОДА ВЛЯ ЕМ ОЕ подавление { 1^, маркер ПУНКТА { A342d, f. A346bt.

1) 7НЕПОДАВЛЯЕМОЕ подавление {j, k, A347b):

если (7НЕПОДАВЛЯЕМОЕ) есть (неподавляемое), ПУСТО; если (7НЕПОДАВЛЯЕМОЕ) есть (ПУСТО), возможный символ буква эс лат /94а } либо возможный символ буква ш /94а }. щ)" рамка: 7НЕПОДАВЛЯЕМАЯ рамка ТОЧКИ в СРЕДЕ (j}; 7НЕПОДАВЛЯЕМАЯ рамка ПУНКТА в СРЕДЕ { к }: рамка ДВОИЧНОГО в СРЕДЕ { А347Ь}. п)* маркер: маркер ТОЧКИ / А342е, A343d, е, А344Ь. А345Ь/:

маркер ПУНКТА/ A342d, f, A346b \\ маркер основания {\341c}. о)* трафарет: трафарет ТИПА в СРЕДЕ {.А342а, А343а, А344а, А345а, А34ба, А347а. А348а, Ь, А349а. А34Аа ].

{Примеры:

a)    Ф п „таблица” х 10а, л и (пред - 1) (”х = ”12ж + д2х,

♦    ,12дс + 2дЗч” + j X”3” *” si + .Юде + 2дл) п ф

b)    п „таблица" х10а • л н (пред - 1) ("X = *’12ж + d2x,

♦    .12де + 2fl3q" + j Х"3" *”si + .Юде + 2дя) п

174

Страница 176

ГОСТ 27974-88 С 173

c)    )20кц ("север", ”восточ"Гюж”.-запад”) "ный”

d)    п "таблица” х

e)    п "таблица”

h)    10 • е (пред - I)

i)”+j    Х"3""*” j) ^

к) ”х • ”12ж .0 ш )

[ Пояснения (9.2.1.а) могут встречаться и текстах-формата только в определенных позициях. В общем случае пояснения (какивсюду в языке) не могут встретиться между двумя сммволами-БУКВА или -ЦИФРА?^-

аа) Для форматного вывода можно использовать процедуры ф вывод (10.3.5.1л) и ф печ (или ф зап) (10.5.1 .f)» а Для форматного ввода процедуры ф ввод (10.3.5.2.а) к ф чит (10.5.l.g). Каждый элемент в списке данных (ср. 10.3.3) является либо форматом, который должен присоединяться к данному файлу, либо значением, подлежащим обмену (таким образом, формат можно включить в список данных непосредственно перед значением, обмен которого использует этот формат).

bb) При вызове процедур ф вывод и ф ввод обмен происходит следующим образом:

Для каждого рассматриваемого поочередно элемента списка данных, если это формат,

он становится текущим форматом файла посредством процедуры присоединить формат (10.3.5.к),

а иначе этот элемент выстраивается (Ю.3.2.3.с) и каждый элемент полученного массива выводится (hh) или вводится (ii) с помощью очередного „шаблона" (сс, gg) из текущего формата, сс) „Шаблон” есть выдача некоторого шаблона. Он состоит из „трафарета" какого-то конкретного 'ТИПА' (в соответствии с синтаксисом трафаре-та-ТИПА этого шаблона), за которым идет „вставка" (ее). За исключением трафаретов 'выбора', 'форматного' и 'бесформатного', трафареты состоят из „рамок", возможно „подавляемых", каждая из которых имеет вставку, „повторитель" (dd) и маркер, указывающий, «по 3ro"d" ("д”),'’г”("ж"): Си”) и т.п. рамка. Рамки каждого трафарета могут «руппироваться в „образцы знака”, „образцы целого” и т.п. в соответствии с синтаксисом соответствующего трафарета.

dd) „Повторитель" есть процедура, вырабатывающая целое число и конструируемая из повторителя (10.3.4.1.2х). Например, повторитель 10 создаст процедуру, состоящую из цел: 10: более того, п (предел - 1) является .динамическим” повторителем и создает процедуру цел: (предел > 1). Обметим, что область действия повторителя ограничивает область «енсгвнл любого содержащего его формата, и потому может оказаться необходимым взять локальную копию файла, прежде чем присоединять к нему формат. Повторитель, вырабатывающий отрицательное значение, рассматривается (за исключением "к" (”к”) размещения) как вырабатывающий значение нуль.

175

Страница 177

С.174 ГОСТ 27974-8в

Когда шаблон „подготавливается”, все его повторители и прочие процедуры (включая и тс, что содержатся в его вставках) вызываются сов-вместно. Можно сказать, что подготовленный трафарет „управляет” строкой, поскольку существует соответствие между рамками лого трафарета и литерами этой строки. Каждая рамка управляет п последовательными литерами дайной строки, где п для ”г" ("я”) рамки равно 0, а иначе п — целое число, вырабатываемое повторителем рамки (которое всегда равно 1 для    . ”,”€”,’4" (“и”) или "Ь" (”б“) рамки). Каждая из

управляемых литер должна принадлежать определяемому соответствующей рамкой ограниченному множеству.

ее) „Вставка”, являющаяся выдачей вставки (10.3.4.1.2.<1),есгы1осле-довательноегь повторяемых „размещений” и строк: вставка, не содержащая размещении, называется .литералом”. Вставка „осуществляется” посредством осуществления ее размещений (ff) и при выводе (вводе) записью („ожиданием”) (11)) каждой литеры из ее повторяемых строк (строка повторяется посредством воспроизведения ее столько раз, каково вырабатываемое ее повторителем число).

ff) „Размещение” есть литера, выдаваемая кодом-размещения (10.3.4.l.2.d). Повторяемое п раз размещение осуществляется следующим образом:

•    "к” (”к”) заставляет вызваться уст номер литеры с п в качестве ее второго параметра:

•    ”х” (“х”) заставляет п раз вызваться вперед;

.    «ty** ("у”) заставляет п раз вызвался назад;

”1” Сл~) заставляет п раз вызваться нов строчка;

’*р” С’п”) заставляет п раз вызваться нов страница;

”q” (”ю”) при выводе (вводе) заставляет п раз записать (ожидать) литеру пробел.

gg) Формат может состоять из последовательности шаблонов, каждый из которых выбирается по очереди посредством взять след шаблон (10.3.5.Ь). В дополнение к эгому некоторое множество шаблонов можно сгруппировать вместе и образовать повторяемый „набор” (который сам может содержать подобные наборы). Когда выбирается последний шаблон набора, скова выбирается его первый шаблон и тл., пока весь этот набор не повторится п раз, где п - целое число, вырабатываемое его повторителем. Набор можно снабдить двумя вставками, первая из которых осуществляется перед набором, а вторая после него.

Формат может также вызывать другие форматы с помощью трафаретов 'форматного ' (10.3.4.9.1).

Когда формат исчерпывается, вызывается процедура обработки события, соответствующая при конце формата; если она вырабатывает ложь, то данный формат повторяется, а иначе, если только эта процедура обработки события не может обеспечить новый формат, вызывается не определено, hh) Значение V выводится с помощью шаблона Р следующим образом; Если трафарет Q этого Р есть трафарет 'выбора' или 'бесформатного',

176

Страница 178

ГОСТ 27974-88 С.175

то V выводится с помощью Р (см. 10.3.4.8.1.аа, dd, 10.3.4.1 аа), а иначе V выводится так:

Р подготавливается.

Наш вид этого V „совместим по выводу'" с О, то

V преобразуется в строку, управляемую (dd) этим Q.

Если данный вид не совместим по выводу или если это преобразование не было успешным.

то

вызываегся процедура обработки события, соответствующая при ошибке значения:

если она вырабатывает ложь, V выводится с помощью процедуры вывод и вызывается не определено; а иначе данная строка „редактируется” (jj) с помощью трафарета О; осуществляется вставка из Р. ii) Значение вводится в имя N с помощью шаблона Р следующим образом:

Если трафарет Q этого Р есть трафарет 'выбора' или ’бесформатного', го значение вводится в N с помощью Р (см. 10.3.4А.1.ЬЬ, ее, 10.3.4.10.1 ЛЬ);

а иначе

Р подготавливается;

• „составляется" строка, управляемая Q (kk).

Если вид этого N „совместим по вводу” с Q. го

данная строка преобразуется с помощью Q в подходящее для N значение;

если эго преобразование было успешным, данное значение присваивается N.

Если данный вид не совместим по вводу или если это преобразование не было успешным.

то

вызывается процедура обработки события, соответствующая при ошибке значения;

если она вырабатывает ложь, вызывается не определено: осуществляется вставка из Р. jj) Строка „редактируется" с помощью трафарета Р следующим образом:

В каждой час1и строки, управляемой образцом знака,

если (указывающая знак) первая литера этой строки есть"*", а данный образец знака содержит рамку то эта литера заменяется на

• первая литера (т.е. знак) сдвигается вправо через все начальные нули в данной части этой строки и эти нули заменяются пробелами (например, с помощью образца знака 4z + (4ж +) строка

177

Страница 179

С176 ГОСТ 27974-88

”+0003” становится строкой *'i J. i43”) •

В каждой части этой строки, управляемой образцом целого,

управляемые ”z” (”ж”) рамками нули заменяются пробелами, если они расположены

между началом данной строки и первой ненулевой цифрой;

• между каждой ”<Г ("а”) V ("е") или "Г ("и”) рамкой и следующей ненулевой цифрой;

(например, с помощью трафарета zdzd2d (жджд2д) строка ”180168" становится "18л 1 68”).

Для каждой рамки F из Р

осуществляется вставка из F;

если рамка F не подавляема, записываются управляемые ею литеры;

(например, редактирование с помощью трафарета 4ж + ш. ” . " д строки '’+0003.5*’ дает ^ ^ +3,5", а редактирование строки "180168" с помощью трафарета жд,,-,,жд"-19"2д дает ”18-i 1-1968").

kk) Строка „составляется" с помощью трафарета Р следующим образом:

Для каждой рамки F из Р

осуществляется вставка из F.

Для каждого элемента этой строки, управляемого F, следующим образом получается некоторая литера:

Если F содержится в образце знака, то

если знак уже был, ожидается цифра с предлагаемым”0"; а иначе ожидается ”+” или ” с предлагаемым ’*+” и, кроме того, если данный образец знака содержит рамку, в качестве знака будет приемлем пробел; предшествующий первой цифре (заменяемый на "+”);

а иначе если рамка F содержится в образце целого, то если ока подавляема, то подается “О”; а иначе:

Случаи A: F - ”d” (,,д”) рамка:

•    ожидается некоторая цифра с предлагаемым “О”;

Случай В: F - "г" ("ж”) рамка:

ожидается цифра или пробел с предлагаемым м0", причем

пробел приемлем только в следующих случаях:

между началом данной строки и первой ненулевой цифрой;

•    между каждой "d” (”д"),"е” (V’) ил и” Г Гн”) рамкой и следующей ненулевой цифрой;

такие пробелы заменяются нулями; а иначе если F- "а” ("а”) рамка,

го, если она неподавляема, читается и подается некоторая литера, а иначе подается ••••аче, если F неподавляема.

Страница 180

ГОСТ 27974- 88 С.177

го, если F - " . ” (”е ("e’V’i" С’и,,),’,Ь” С’б")) рамка, ожидается ” Гю" иии ”\” или ”е”, "1” или "i”, да или нет) с предлагаемым ” . ”

( V.Twr);

а иначе, если F - подавляема ”. ” (”е” С'е”). ”Г С’н")) рамка, подается литера Г\0".■» 1”).

11) Элемент множества литер S .ожидается" с предлагаемой литерой С следующим образом:

читается некоторая литера: если это ОДК1 hj ожидаемых литер (т.е. принадлежит множеству s). то она подаекя,

а иначе вызывается процедура обработки события, соответствующая при ошибке литеры, с предлагаемой литерой С: если эта процедура вырабатывает истина, а (возможно, измененная) литера С есть одна из ожидаемых литер, то подается С, а иначе вызывается не определено. J 10.3.4.1.2. Семантика.

{ Форматы вводятся в действие посредством текстов-формата. Формат лучше всего рассматривать как дерево с некоторым набором в каждом уз-ле и шаблоном на каждом из его концов. Чтобы не нарушались ограничения на области действия, каждый узел в этом дереве запакован - в настоящем стандарте - в значение вида 'КАДР'. Формат составлен вектором 1аких кадров, и они содержа! указатели друг на друга в форме индексов, выбирающих (их) иээтого век тора. Без сомнения, в реализациях это дерево будет храниться более эффективным способом. Это возможно, так как ука. затель-поля любого формата скрыт от пользователя, чтобы тот не мог проникнуть в это поле.

Хотя текст-формата может содержать ЗАКРЫТЫЕ-предложеми* (в повторителях и трафаретах-форматного) или основы (в трафаретах-бесформат-ного), эти ЗАКРЫТЫЕ-предложення и основы не исполняются при исполнении текста-формата, но превращаются в процедуры, вызываемые впоследствии. когда до них дойдет дело в ходе форматного обменэ. В дейстьитель-ности исполнение текста-формата не приводит ни к каким действиям, имеющим какой-нибудь смысл для пользователя. }

а) Выдача текста-формата F в окружении Е есть структура, единственным полем которой является массив W вида 'вектор из КАДРОВ'. Этот массив составлен из паспорта ((1, п)) и п элементов и определяется следующим образом:

счетчик i устанавливается в 1;

W получается ..трансформацией" Cb}- F в окружении Е с помощью i. Ь) Массив W, вид которого есть 'вектор из КАДРОВ', получается ..трансформацией" текста-формата или упакованного-спнска-наборов С в окружении Е с помощью счетчика i следующим образом:

элемент этого W. выбираемый по (i), является структурой, вил которой есть 'КАДР' и поля которой, взятые в их порядке, таковы • { утн} не определено;

179

Страница 181

С.178 ГОСТ 27974-88

•    {счет} не определено;

•    1оук} не определено;

•    {н} массив V, вид которого есть 'вектор из НАБОРОВ' с паспортом ((1, ш)), где m - число составляющих наборов из С. и элементами, определяемыми гак:

Для] ■ 1,.... mnycTkCj будетj-м составляющим набором из С:

Случай А: Прямой наследник этого Cj включает шаблон Р

составляющий трафарет Т. если он есть, и вставка I этого Р исполняются совместно;

j-м элементом V является структура, вид которой есть 'ШАБЛОН' и поля которой, взятые в их порядке, таковы: , {граф} выдача этого Т, если она есть, {е, 10.3.4.8.2, 10.3.4.9.2, 10.3.4.10.2}, а иначе пусто; в выдача этой I (d } ;

Случай В: Прямой наследник этого Cj включает первую вставку 11, повторитель REP, угикованный-список-наборов Р и вторую вставку 12:

i увеличивается на 1;

11, REP и 12 исполняются совместно; j-м элементом V является структура, вид которой есть 'ПАКЕТ' и поля которой, взятые в их порядке, таковы

•    {в1} выдача 11 {d} ;

•    (повт) выдача REP {с} ;

*    {УДК} i;

♦    {в2}выдача 12;

W получается трансформацией Р в окружении Е с помощью i.

c)    Выдача в_ некотором окружении Е ‘•НЕПОДАВЛЯЕМОГО-повторитс-ля-в-СРЕДЕ R 00-3.4.1.l.g, hi - это процедура вида 'процедура вырабатывающая целое', составленная из текста-процедуры-в-СРЕДЕ-выдаюшсго-проиедуру-вырэбагывакицую-целос, основа которого есть U вместе с окружением. необходимым [7 2.2 с} для U в Е, причем U определяется следующим образом:

Случай A: R содержит ЗАКРЫТОЕ-предложение-раскрыто-выдаюшее-це-лоеС:

U - новая основа, подобная {.1.1.3.2.к ) С;

Случай В . R содержит натуральное-число D. а не ЗАКРЫТОЕ-предложе-ние:

U — новая основа, подобная D;

Случай С: R невидимо:

U - новая основа, подобная натуральному-числу. , имеющему естественное {8.1.1.2} значение 1.

d)    Выдача вставки 1 {l0.3.4.1.1.d} - это массив W вида 'ВСТАВКА', определяемый следующим образом:

пусть Ui, —, Un - составляющие ?НЕПОДАВЛЯЕМЫЕ-повторитсли вставки 1 и Aj для 1 = 1, .... п есть приведенное-иэображаемое или код-раз-

Страница 182

ГОСТ 27974-88 С.179

мешения, непосредственно следующий за U,;

пусть Rj, .... Кп и D,, .... Dn - совместные выдачи U|.....U„ к А,,

Ап, причем выдача кода-размещения символ-бук ва-ка-лат или символ-буква-к-(символ-буквз-икс-лат или символ-буква-х, символ-буква трек-лат или символ-буква-у. символ-буква-эль-лат или символ-буква-л, символ-бук ва-пэ-лат или символ-буква-п, символ-буква-ку-лат или символ-буква-ю) есть (литера, которая есть} естественное значение {8.1.4.2Ь} символа-буква-ка-лат (символа-буква-икс-лат, символа-буква-игрек-лат, символа-буква-эль-лат, символа-буква-пэ-лат, символа-буква-ку-лаг); паспортом згою W является ( (1, п)):

элемент этого W, выбираемый no (i), i = 1, —, п,является структурой, вид которой специфицируется посредством ст (проц цел повт. об (строк, лит) стр) и поля которой, взятые в их порядке, таковы:

•    {повт} Rj;

*    OP) °»

с) Выдача трафарета-целого, -вещественного, -логического, комплексного, -строкового или -битового Р {10.3.4.2.1 .а,} 10.3.4.3.1л, ..., 10.3.4.7.1.а] - это структура W вида 'ТРАФАРЕТ', определяемая следующим образом:

^ ^пусть Vu Vn - совместные выдачи составляющих рамок из Р

поля структуры W, взятые в их порядке таковы:

•    {типу i (2, 3, 4, 5). если Р - трафарет-целого (-вещественного, -логического. -комплексного, -строкового), и 6 (8, 12. 20). если Р - гра-фаретбитового. составляющее ЛВОИЧНОЬоснованис которого есть двоичное-(четверичное-, восьмеричное-, шестнадцатеричное-) основание;

{рамки} массив, вид которого есть 'вектор из РАМОК', имеющий паспорт ((1, п) и п элементов. причем выбираемым по (i) элементом будет V,.

f) Выдача всякой рамки F {10.3.4.1.1.m3 - это структура W вида 'РАМКА' определяемая следующим образом:

вставка и повторитель, если они есть, из F исполняются совместно; поля структуры W. взятые в их порядке, таковы:

•    { в} выдача ее вставки;

•    {повт } выдача ее повторителя {с}. если он есть, а иначе, выдача невидимого повторителя:

•    {подав} истина, если ее ?НЕПОДАВЛЯЕМОЕ-подавление содержит символ-букву-эс-лат (символ-букву-ш), и ложь в противном случае;

•    {марк} {литера, которая есть} естественное значение (8.1.4.2.Ь) символа S,определяемого следующим образом:

Случай А: F - составляющая кеподавляемая-рамка-нуля некоторого образца-знака (, такого, как Зж+}. составляющий маркер-знака которого содержит символ-плюс:

181

Страница 183

С.180Г0СТ 27974-88

S есть символ-буква-у-лат;

Случай В: F - составляющая неподавляемая-рамка-нуля некоторого образ-ца-энакэ ^, такого, как Зж-J, составляющий маркер-знака которого содержит символ-минус:

S есть символ-буква-ве-лат;

Прочие случаи: составляющий символ маркера нэ F есть символ-букм-а» лат или символ-буква-а (символ-буквабе-лат или символ-буква-б. символ буква-де лат или символ-буква-д,снмвол-буква-е*лат или символ-буква-е, символ-буква-и-лат или символ-буква-и. символ-буква-эр-лат или символ-буква-я. символ-буква-ээт-лат или сим-вол буква-ж):

S есть символ-буква-а-лат (символ-буква-бе-лат. символ-бук-ва-де-лат, символ-буква-е-лат. символ-буква-и-лат. символ-буква-эр-лат, символ-буква-ээт-лат).

{Таким образом, маркер-нуля ж можно передать как литеру "u”, ’V* или "z" в зависимости от того, образует он часть образца-знака (с наследным еимволом-плюс или символом-минус) или же часть образца-целого. Кроме того, русские символы маркера заменяются их латинскими эквивалентами.

10.3.4.2. Трафареты целого.

10.3.4.2.1. Синмксис.

a)    трафарет целого в СРЕДЕ [а341с. А343с}:

возможный образен знака в СРЕДЕ (с J , образец целого в СРЕДЕ {b) .

b)    образец целого в СРЕДЕ (а. А343Ь, с, А347а} ;

последовательность рамок цифры в СРЕДЕ (А341к) .

c)    образец знака в СРЕДЕ fa. A343a j :

возможная последовательность неподавляемых рамок нуля в СРЕДЕ /Л341к}, неподавляемая рамка знака в СРЕДЕ £А341j j .

d)    маркер нуля {{, A341kl ; символ буква зэт лаг 94а

либо символ буква ж {94а} .

e)    маркер знака fA341jj :

символ плюс (94с Г; символ минус {94с}.

0 маркер цифры {А341к}:

символ буква де лат {94а} либо символ буква л {94а} ; маркер нуля fd}.

(Примеры:

а) ”х ■ "12ж *. д    j,)    д

с) "х = и12ж+ }

{О семантике трафаретов-целого см. 10.3.4.1.2.е.}

(аа) Совместные по выволу (вводу) с трафаретами целого виды специфицируются посредством Д цел (имя Д цел).

bb) Значение V преобразуется в строку S с помощью трафарета 'целого' Р следующим образом:

182

Страница 184

ГОСТ 27974-вв С. 181

если Р содержит образец знака, го первой литерой S будет знак этого V, а иначе, если V < 0, преобразование не будет успешным;

оставшаяся часть S заполняется десятичным представлением этого V, получаемым следующим образом:

элементами строки S, управляемыми "d" (’^д”) и Hz” ("ж”) рамками, будут соответствующие цифры (таким образом, шаблон определяет число используемых цифр);

• если V нельзя представить такой строкой, то данное преобразование не будет успешным..

(Например, используя трафарет zzd (жжд), значение 99 можно преобразовать в строку, а значения 9999 и - 99 нельзя).

сс) Строка S преобразуется в целое число, подходящее для имени N, с помощью трафарета 'целого' следующим образом:

рассматривается целое число 1, десятичное представление (8.1.1.2) которого содержится в S;

если 1 превышает наибольшее значение, которое может именовать N, то преобразование не будет успешным; иначе I - |ребуемое целое число (например, если вид этого N специфицируется посредством имя кор цел, а значением кор макс цел служит 65535, то никакую строку, содержащую десятичное представление значения, превышающего 65535. преобразовать нельзя).}

10.3.4.3. Трафареты вещественного.

10.3.4.3.1. Синтаксис.

a)    трафарет вещественного в СРЕДЕ {A341c, А345а}•;

возможный образец знака в СРЕДЕ {Л342с ) , образец рационального в СРЕДЕ {b} либо образец действительного в СРЕДЕ (с] .

b)    образец рационального в СРЕДЕ [а, с} :

образец целого в СРЕДЕ {А342Ь}, рамка точки в СРЕДЕ {A341j}, возможный образец целого в СРЕДЕ /A342b} ; рамка точки в СРЕДЕ {A341j} , образец целого в СРЕДЕ {A342b}.

c)    образец действительного в СРЕДЕ {а} :

образец рационального в СРЕДЕ (Ъ } либо образец целого в СРЕДЕ /А342Ь) , рамка порядка в СРЕДЕ {A341J |, образец целого в СРЕДЕ {А342а} .

d)    маркер точки fA341jj : символ точка {94b} .

e)    маркер порядка {A341j} :

символ буква с лат /94а} либо символ буква е {94з} .

[Примеры:

а) ♦ жд-Ид • +.12де + 2д    Ь) жд. 11д • ,12д

с) .12де+ 2а/

tO семантике графаретов-вешественного см. 10.3.4.1.2.е.}

183

Страница 185

С.182 ГОСТ 27974-88

faa) Виды, совместимые по выводу (вводу) с трафаретами 'вещественного , специфицируются посредством Д веш и Д цел (имя Д вещ).

bb) Значение V преобразуется в строку S с помощью трафарета 'вещественного' Р следующим образом:

если Р содержит образен знака, то первой литерой строки S будет знак-этого V, а иначе, если V < 0. преобразование не будет успешным;

оставшаяся часть S заполняется десятичным представлением этого V, определенным следующим образом:

если необходимо. V обобщается до вещественного числа; элементом строки S. управляемым " . ” ("е” или ’V’) рамкой из Р. если он есть, будет " . ” (”,0"):

Если Р содержит "с” (”е”) рамку, то

пусть W — последовательность рамок, предшествующих этой V* ("с”) рамке, а 1Р - следующий за ней трафарет 'целого';

порядок Е вычисляется посредством нормализации этого V до наибольшего значения, преобразуемого с помощью W (см. ниже);

управляемая 1Р часть строки S получается преобразованием порядка Ес помощью 1Р (см. 10.3.4.2.1 .ЬЬ); а иначе

Р целиком становится последовательностью W; элементами строки S, управляемыми "d" ("д”) и "г” (“ж”) рамками из W. являются соответствующие цифры (таким образом, данный шаблон определяет число используемых цифр, а также число цифр, помещаемых после десятичной точки, если она есть);

если V нельзя представить такой строкой, то данное преобразование не будет успешным.

сс) Строка S преобразуется в вещественное число, подходящее для имени N, с помощью трафарета 'вещественного' следующим обрззом;

рассматривается вещественное число R, десятичное представление которого содержится в S;

если R превышает наибольшее значение, которое может именовать N, то преобразование не будет успешным; иначе R - требуемое вещественное число.J

10.3.4.4. Трафареты логического.

10.3.4.4.1. Синтаксис.

a)    трафарет логического в СРЕДЕ {Л341с} :

неподавлясмая рамка логического в СРЕДЕ {A341j }.

b)    маркер логического {А341 j, А348в} :

символ буква бе лат {94а} либо символ буква б {94а} .

{Пример: а) 14x6

{О семантике трафаретов-логического см. 10.3.4.1.2 .е.)

(аа) Вид, совместимый по выводу (вводу) с трафаретами 'логического', специфицируется посредством лог (имя лог).

184

Страница 186

ГОСТ 27974-88 С. 18}

bb) Значение V преобразуется в строку с помощью трафарета 'логического' следующим образом:

если V - истина (ложь), то это строка, выдаваемая литерой да (ист), сс) CipOKa S преобразуется в логическое значение с помощью трафарета 'логического' следующим образом:

• если S совпадает со строкой, выдаваемой да (нет), то требуемым значением будет истина (ложь).}

10.3.4.5.    Графареты комплексного.

10.3.4.5.1.    Синтаксис.

a)    трафарет комплексного в СРЕДЕ {а341с}:

трафарет вещественного 8 СРЕДЬ f А343а} , рамка комплексного в СРЕДЕ {A341jl, трафарег вещественного в СРНДЕ { АЗДЗа} .

b)    маркер комплексного | A341j J:

символ буква и лат (94а) либо символ буква и {94а /.

(Пример:

а) +.12де + 2дЗю”+j X" 3"£" ши + .Юде ♦ 2д j {О семантике трафаретов-комплексного см. 10.3.4.1.2.е.}

^аа) Виды, совместимые по выводу (вводу) с трафаре1ами'комплексного , специфицируются посредством Д компл, Д вещ и Д цел (имя Д компл).

ЬЬ) Значение V преобразуется в строку S с помощью трафарета ’комплексного' Р следующим образом:

•    если необходимо. V обобщается до комплексного числа, элементом строки S, управляемым vi” ("и”), рамкой из Р. является

"I”;

управляемая первым (вторым) трафаретом 'вещественного' этого Р часть строки S получается преобразованием первого (второго) поля из V в строку с помощью первого (второго) трафарета 'вещественного' этого Р (10.3.4.1.bb);

•    если какое-то из этих преобразований не было успешным, то и преобразование этого V не будет успешным.

oc) Строка преобразуется в комплексное значение С, подходящее для имени N, с помощью трафарета 'комплексного' Р следующим образом:

часть строки, управляемая первым (вторым) трафаретом 'вещественного' этого Р, преобразуется в подходящее вещественное число (10.3.4.1.сс), давая первое (второе) поле этого С;

•' если какое-то из этих преобразований не было успешным, то и преобразование этого С не будет успешным.}

10.3.4.6.    Трафареты строкового.

10.3.4.6.1.    Синтаксис.    .

a)    трафарет строкового в СРЕДЕ 1А341с}:

последовательность рамок литеры в СРЕДЕ {А341к} .

b)    маркер литеры [А34 Ik}: символ буква а лат { 94а }

либо символ буква a {94a J.

185

Страница 187

С. 184 ГОСТ 27974-8в

{Пример:

а) п"таблица”xlOa}

{О семантике трафаретов-строкового см. 10.3.4.1,2.е.}

(аа) Виды, совместимые по выводу (вводу) с трафаретами строкового'. специфицируются посредством лит и [ ) лиг (имя лит, имя [ J лиг и имя строк).

bb) Значение V преобразуется в строку с помошью трафарета 'строкового' Р следующим образом:

• если необходимо, V векторизуется в С1року;

если длина этой строки V равна длине строки, управляемой Р, то подается V. а иначе преобразование не будет успешным, сс) Строка S преобразуется в литеру или строку, подходящую для имени N, с помощью трафарета 'строкового’ следующим образом:

Случай А: Вид этого N специфицируется посредством имя лит:

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

Случай В: Вид этого N специфицируется посредством имя [ ] лит: если длина строки S не равна числу литер, именуемых именем N. то преобразование не будет успешным; а иначе подастся S;

Случай С: Вид этого N специфицируется посредством имя строк: подастся S.j 10.3.4.7. Трафареты битового.

10.3 4.7.1. Синтаксис.

a)    трафарет битового в СРЕДЕ (А341с } :

рамка ДВОИЧНОГО основания в СРЕДЕ {Ь/ , образец целого в СРЕДЕ {а342Ь

b)    рамка ДВОИЧНОГО основания в СРЕДЕ {а} :

вставка в СРЕДЕ f A341d>.

ДВОИЧНОЕ основание { 82d.e.f.g}. неподавляемое подавление (A341I}, маркер основания {с }:

c)    маркер основания {b} .•    .    .

символ буква эр лат [94а } либо символ буква я (94а / . f Примеры:

a) 2r6d26sd • 2я6д26сд    Ь)    2г    •    8я    }

[О семантике трафаретов-битового см. 10.3.4.1.2.е.}

{аа) Виды, совместимые по выводу (вводу) с трафаретами ’битового', специфицируются посредством Д бит (имя Д бит).

bb) Значение V преобразуется в строку с помошью трафарета 'битового' Р следующим образом:

с помощью обозначения-операции абс (10.2.3.8.») определяется целое число 1, соответствующее V;

Если "г" (ия*‘) рамка из Р выдана рамкой-двоичного- (-четверичного-, -восьмеричного-, -шестнадцатеричного-) -основания, то 1 преобразуется

186

Страница 188

ГОСТ 27974-88 С. 185

в управляемую образцом целого из Р строку, содержащую двоичное (четверичное, восьмеричное, шесшадца1еричиое) представление этого I (ср. 10-3.4.2.1 .bb),

если I нельзя представить такой строкой, то преобразование не будет успешным.

сс) Строка S преобразуется в битовое значение, подходящее для имени N, с помошью трафарета 'битового' Р следующим образом:

если ”г” (”я”) рамка из Р выдана рамкой-двоичного-(-четверичного-, восьмеричного-, -шестнадцатеричного-) -основания, то опрецеляется целое число 1, для которого S содержит двоичное (четверичное, восьмеричное, шестнадцатеричное) представление;

*    с помошью обозначения-операции бин (10-2.3.8.j) определяется битовое значение В, соответствующее лому 1;

если размер этого В больше размера значения, именуемого N, то данное преобразование не будет успешным.}

10.3.4.8. Трафареты выбора.

10.3.4.8.1. Синтаксис.

a)    трзфарет целого выбора в СРЕДЕ [А341с }:

вставка а СРЕДЕ {A341d} , символ буква цэ лат {94а} либо

символ буква ц {94а f.

упакованный кратким список

поясняемых литералов в СРЕДЕ {с],

возможная последовательность пояснений )92а|.

b)    трафарет логического выбора в СРЕДЕ { A341c): f

вставка в СРЕДЕ [A341d] ', маркер логического {A344bJ ,

знак начало краткий f94f j ,

поясняемый литерал в СРЕДЕ {с j ,

знак а также { 94 f},

поясняемый литерал в СРЕДЕ (с },

знак конец краткий f94f},    .

возможная последовательность пояснений }92а).

c)    поясняемый литерал в СРЕДЕ {a, b}:

возможная последовательность пояснений {92а/ , литерал в СРЕДЕ {А3411/.

{Примеры:

a)    л 20к ц (•"’север”, ””восточ”, ’’"юж", ’’’’запад”)

b)    б Г". ” ошибкз”)

c)    ’’’’север” }

{аа) Значение V выводится с помошью шаблона Р, трафарет которого Q был выдан трафаретом-целого-выбора С. следующим образом:

•    подготавливается (10-3.4.1.1 .dd) к осуществляется (10.3.4.1.1 ее) вставка из Q;

Если вид значения V специфицируется посредством цел, а V > 0,

и если число составляющих литералов в упакованном-списке-пояс-няемых-литералоя этого С не меньше V,

187

Страница 189

C.l86 ГОСТ 27974-88

то

подготавливаете* и осуществляется литерал, выдаваемый V-м из этих литералов: а иначе

вызывается процедура обработки события, соответствующая при ошибке значения;

если она вырабатывает ложь. V выводится с помощью вывод и вызывается не определено:

• подготавливается и осуществляется вставка из Р.

ЬЬ) Значение вводится в имя N с помощью шаблона Р. трафарет которого О был выдан трафаретом-целого-выбора С. следующим образом: подготавливается и осуществляется вегавкз из Q; по очереди подготавливается и „отыскивается” (сс) каждый из литералов. выдаваемых составляющими литералами упзкованного-спискапояс-няемых-литералов этого С;

Если вид этого N специфицируется посредством имя цел и i-й литерал окажется первым из искомых, то i присваивается N; а иначе

вызывается процедура обработки события, соответствующая при ошибке значения.

если она вырабатывает ложь, вызывается не определено; подготавливается и осуществляется вставка из Р. сс) Литерал „отыскивается" путем чтения литер и сопоставления их с последова1ельными литерами этого литерала. Если будет достигнут конец текущей строчки либо логического файла или для некоторой литеры не найдется соответствия, то этот поиск не будет успешным, а текущая позиция возвращается на то место, откуда поиск начался.

dd) Значение V выводится с помощью шаблона Р. трафарет Q которого был выдан трафарстом-логическо! о-выбора С, следующим образом: подготавливается и осуществляется вставка и> Q;

Если вид этого V специфицируется посредством лог. то

если V - истина (ложь), подготавливается и осуществляется литерал, выдаваемый первым (вторым) составляющим литералом из С; а иначе

вызывается процедура обрабожн события, соответствующая при ошибке значения;

если она вырабатывает ложь, V выводится с помощью вывод и вызывается не определено; подготавливается и осуществляется вставка из Р.

ее) Значение вводится в имя N с помощью шаблона Р, трафарет Q которого был выдан трафарегом-логического-Выбора С, следующим образом: подготавливается и осуществляется вставка иэ Q: по очереди подготавливается и отыскивается каждый из литералов, вы-

188

Страница 190

ГОСТ 27974-88 С. 187

даваемых составляАиими литералами из С:

Если вил этого N специфицируется посредством имя лог и первый (второй) литерал окажется искомым, то этому N присваивается истина (ложь); а иначе

вызывается процедура обработки события, соответствующая при ошибке значения;

если она вырабатывает ложь, вызывается не опрелелено; подготавливается и осуществляется вставка из Р. ?

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

Выдача трафарета-выбора Р является структурой W вида 'ТРАВЫБ', определяемой следующим образом:

пусть п - число составляющих литсралов-в-СРЕДЕ упакованногоспис-ка-поясняемых-литералов из Р;

пусть Sj, I ■ 1, .... п, есть вставка-в-СРЕДЕ, подобная {1.1.3.2.к} i-му из этих составляющих лигераловв-СРЕДЕ;

вставка I из Р и все Si, S*.....Sn исполняются совместно;

поля структуры W, взятые в их порядке, таковы:

•    [в] выдача вставки 1;

•    (тип) 1 (2),еслиР- графарст-логического-(-целого-) выбора;

•    {сгр) массив вида 'вектор из ВСТАВОК', имеющий паспорт ((1. п)) и п элементов, причем выбираемый по (i). i - 1,..., п, элемент -это выдача вставки Sj.

10.3.4.9. Трафареты форматного.

10.3.4.9.1.    Синтаксис.

а) трафарет форматного в СРЕДЕ fA341c} : вставка в СРЕДЕ {A341d} ,

символ буква эф лат {94а} либо символ буква ф {94а},

ЗАКРЫТОЕ предложение в СРЕДЕ раскрыто выдающее ФОРМАТ (31а, 34а} , возможная последовательность пояснений {92aj .

^Пример:

а) ф (uir I (цел) : ф 5дф, (вещ): фд.Зпф)}

{Трафаретформатного можно использовать, чтобы динамически создавать форматы для применения в обмене. Когда в течение вызова процедуры взять след шаблон дело доходит до трафарета 'форматного', он подготавливается, а затем осуществляется его вставка. Первый шаблон формата, вырабатываемого процедурой этого трафарета, подается в качестве очередного шаблона, а дальше шаблоны берутся из этого формата до тех пор, пока он не исчерпается.)

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

Выдача в окружении Е некоторого трафарета-форматного Р • это структура, вид которой есть 'ТРАФОР', и поля которой, взятые в их порядке, таковы:

•    { в } выдача его вставки;

•    { прф} процедура вида 'процедура вырабатывающая ФОРМАТ', со-

1Я9

Страница 191

C.IM ГОСТ 27974-88

ставленная из текстн-процедуры-в-СРЕДЕ-выдающего-процсдуру-выра-батываюшую-'РОРМАТ, основа U которою является новой основой, подобной {l.l.3.2.k} ЗАКРьЛ ОМУ-предложению раскрыто-выдающему-ФОРМАТ этого Р. вместе с окружением, необходимым для U в Е. 10.3.4.10. Трафареты бесформатного.

10.3.4.10.1. Синтаксис.

a)    трафарет бесформатного в СРЕДЕ {А341с} :

вставка в СРЕДЕ {A341d},

символ буква ге лат {94а} либо символ буква г {94а} , возможное задание разрядности в СРЕДЕ .

b)    задание разрядности в СРЕДЕ {а) :

знак начало краткий {94f} ,

основа в СРЕДЕ раскрыто выдающая uenoe {32d} , возможное задание после {с} , знак конец краткий {94f},

возможная последовз!ельность пояснений {92а) .

c)    задание после в СРЕДЕ {b} :

знак а также {94f} .

основа в СРЕДЕ раскрыто выдающая целое (32d) , возможное задание порядка в СРЕДЕ {d} .

d)    задание порядка в СРЕДЕ {с} :

знак а также (94{},

основа в СРЕДЕ раскрыто выдающая целое {32d} .

{Примеры:

а) г • г (-18, 12.-3)    Ь) -18.12,-3

с), 12,-3    d),-3]

{аа) Значение V выводится с помощью шаблона Р. трафарет Q которого был выдан трафареюм-бесформатного С, следующим образом:

Р подготавливается: осуществляется вечавка из Q;

Если Q не параметризован (т.е. не содержит задания-разрядности), то V выводится с помощью вывол;

а иначе, если вид этого V специфицируется посредством Д цел или Д вещ, то

•    если Q содержит один (два, 1ри) параметр (а, ов), V преобразуется в строку с ломошьк» целое (фикс, плав);

эта строка записывается с помощью вывод;

а иначе

вызывается процедура обработки события, соответствующая при ошибке значения;

•    если она вырабатывает ложь. V выводится с помощью вывод и вызывается не определено;

осуществляется вставка из Р.

ЬЬ) Значение вводится в имя N с помощью шаблона Р, грзфарет кото-

190

Страница 192

ГОСТ 27974-88 С. 189

рого есть трафарет 'бесформатного', следующим образом:

F подготавливается; осуществляется вставка из Q;

(игнорируются любые параметры и) данное значение вводится в N с помощью ввод;

осуществляется вставка из Р.}

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

Выдача в окружении Е некоторого трафарета-бесформатного-в-СРЕДЕ Р - это структура вида 'ТРАБЕСФ'. поля которой, взятые в их порядке, таковы

{в} выдача вставки из Р;

{спец} массив W вида 'вектор из процедур вырабатывающих целое', имеющий паспорт ((1, п)), где п - число составляющих основ-раскрыто-выдающих-целое возможного-задания-разрядиости из Р, и п элементов, определяемых следующим образом:

Для i = 1,.„, п

i-м элементом массива W служит процедура, вид которой есть 'процедура вырабатывающая целое', составленная из текста-процедуры-в-СРЕДЕ-выдаюшсго-процедуру-вырабатывающую-целое. основа U которой является новой основой, подобной {l.l.3.2.к} i-й из этих основ-раскрыто-выдаюших-целое, вместе с окружением, необходимым для UbE.

10.3.5. Форматный обмен а) вид формат = ст (подв [1:0] кадрр); вид format = формат; вид 9-кадр = сг (цел у ft казатель ф т rt екущего fi н й аборз ft, счет ft чик числа раз, сколько должен быть повторен кадр |1. о г- брзтный ft ук ft азатель й, подв (1:0] набор н); вид 9-набор = об (шаблон, пакет); вид 9-пакет • ст (вставка в1, проц цел повт t оритель ft, цел у ft казатель jl д й рутого й к ji адра ft, вставка в2);

вид 9-вставка «* подв [1 :0] ст (проц цел повт ft орятель it. об (строк, лит) стр^ока текста Jt); вид 9-шаблон = ст (об (трафарет, травыб, трафор, трабссф, пуст) траф, вставка в); вид 9-трафарет * ст (цел тип ft трафарета ft, подв (1:0)

рамка рамки); вид 9-рамка ■ ст (вставка в. проц цел повт ft оритель yt. лот подав |1 ление >к, лит марк it ер ft); вид 9-травыб И трафарет выбора ft =* ст (вставка в, цел тип

191

Страница 193

С.190 ГОСТ 27974-88

li логического или целого it подв (1 : 0J вставка стр йоки текста |ll); вид ^-трафор трафарет форматного ft * ст (вставка в. проц формат прф); вил ^грабесф it трафарет бесформатного ft ® ст (вставка в.

подв (1:0) проц цел спец); b) npou ‘‘-взять след |t уюший шаблон = (имя файл fj лог чит |*ать имя шаблон шаблон) пуст: начало

лог есть шаблон := ложь, формат окончен := ложь; пока —1 есть шаблон

цк если ук р азатель фор jt мата |1 из f = 0 го если формат окончен то не определено инее *» (нспр формат из f) (f) то имя цел (укфор из О -= утн из (F из формат из О [ 1) :* 11 счет из (F из формат из f) [1] := I; иначе формат окончен := истина все иначе

имя цел укфор ■ укфор из f;

имя подв [ ] кадр алеф = F из формат из f:

выб (н из алеф [укфор]) [утн из алеф [укфор] ] в

(пакет пак):

([1 :вегр (в1 из пак)] подвставка пв; оук из алеф [ удк из пак] := укфор; укфор := пропуск; (подготовить вставку (в1 из пак, пв), счет из алеф [удк из пак] := повт из пак);

(алеф :¥=: F из формат из f I не определено);

(чит I ввести вставку (f, пв)

I вывести вставку (f, пв)); утн из алеф (удк из пак] :=

(счет из алеф [удк из пак] >010 I есть шаблон ;= истина; шаблон := (пустое, ( )); вегр н из алеф [удк из пак]); укфор :■ удк из пак),

(шаблон шабл) : (есть шаблон :■ истина; шаблон :» шабл)

быв;

пока

(укфор Ф 0

I ути из алеф [укфор] * вегр н из алеф [укфор]

I ложь)

цк если (счет из алеф [укфор] 1) < 0 то

если (укфор := оук из алеф [укфор]) #0

192

Страница 194

ГОСТ 27974 -88 C.I91

то

вставка аобав » выб (н из алеф (укфор)) [утн из алеф [укфор] | в (пакет пак):

(оук из алсф [удк из пак) := 0; в2 из пак),

(шаблон шабл): выб граф из шабл в (трафор траф) •

(цел к :■ укфор:

пока оук из алеф [к] ¥• укфор цк к +:= 1 ки: алеф :■ алеф [:k - 1 J: в из шабл) быв быв;

цел m = вегр в из шаблон, п * вегр добав;

[I m + п] ст (проц цел повт, об (строк, лит) стр) с; с (1 : ш] 8 из шаблон; с [т ♦ 1 : т + п) добав; в из шаблон := с . все

иначе утн из алеф [укфор) :* 0 все ки;

(укфор Ф 0 I утн из алсф (укфор] + := 1) все кц конец;

c)    вид ^подвсгавка » сг (цел повт, об (строк, лит) стр):

d)    проц подготовить вставку *

(вставка вст, имя 1 ] подвставка подвст) пуст:

Ji совместно вызывает все повторители во 'вст' авке если вегр вст = 1 то

повт из подвст [1] :* повт из вст [1J; стр из подвст (1J :■ стр из вст [1] инее вегр вег > 1

то (подготовить вставку (вст [1], подвст (1J),

подготовить вставку (вст (2 :]. подвст [2 :J))

все;

e)    вид ^подрамка -

ст (подв [1 : 0J подвставка пв, цел повт, лог подав, лит марк);

f)    проц «-подготовить рамки =

(I ] рамка рамки, имя [ ] подрамка подрамки) пусг: й совместно вызывает все повторители в рамках 'рамки' 1* если вегр рамки = 1 то

7-136!

193

Страница 195

С. 192 ГОСТ 27974 -88

(1 : всгр (в из рамки 11))) подвставка пв; (подготовить вставку (в из рамки 11], пв), повт из подрамки (1| := повт из рамки (1)); пв из подрамки [1] :* пв; подав из подрамки [ 1) := подав из рамки (1J; марк из подрамки [ 1) := марк из рамки [1] инее всгр рамки > I

то (подготовить рамки (рамки [1), подрамки [1J),

подготовить рамки (рамки [2:], подрамки [2:)))

все;

g)    проц ^-вывести вставку *

(имя файл f, [ ) подвставка пв) пуст: начало настроить на запись (f); для к до вегр пв

ЦК

выб сгр из пв (к) в

(лит а) : разместить (f, повт из пв (к), а, ложь), (строк s): до повт из пв fk]

UK

для i до вет р s цк проверить позицию (О; вывести литеру (f, s (i))KU

кц

быв

кц

конец;

h)    проц '‘'ввести вставку ■

(имя файл f, ( ] подвставка пв) пуст: начало настроить на чтение (f); для к до вегр пв

ЦК

выб стр из пв (к) в (лит а): разместить (f, повт из пв (к), а. истина),

(строк s):

(лиг с;

до повт из пв (к)

ЦК

для i до вегр s ЦК проверить позицию (f);

ввести литеру (f, с);

(с + s [i]

I (-1 (испр ошибка литеры из f) (f.c :=s [i])

I не определено);

194

Страница 196

ГОСТ 27974-88 с. 193

настроить на чтение (£))

кц кц) быв кн конец; i) проц “-разместить ■

(имя файл f. цел повт, лит а, лог чит) пуст: если а = ”х” то до повт вперед (О кц инее а = "у" то до повт цк назад (f) кц инее а = ”Г то до повт цк нов строчка (f) ка инее a = *’р” то до повт цк нов страница (f) кц инее а " ”к" то уст номер литеры (f. повт) инее а ■ "q" то до повт ЦК

если чит

то лит с; проверить позицию (f); ввести литеру (f, с);

(с Ф пробел I

(-» (испр ошибка литеры из f) (f, с :■ пробел) I не определено); настроить на чтение (£)) иначе проверить позицию (О; вывести литеру (f, пробел)

все;

кц

все;

О проц ^-выполнить грзфор = (имя файл f, трафор трафор, лог чит) пуст: начало формат прф;

(1 : вегр (в из трафор)] подвставка пв; (подготовить вставку (в из трафор, пв), прф :« прф из трафор);

(чит I ввести вставку (f, пв)

I вывести вставку (f,пв)); имя цел укфор ■ укфор из f; имя под» I ] кадр алеф * f из формата из f; цел m а вегр алеф. п * вегр (F из прф);

[1 : m ♦ п] кадре; с 11 : т) :=алеф;

с [т + 1 : т ♦ n] :■ F из прф;

алеф :»с; оук из алеф (т ♦ 1] :■ укфор;

укфор :■ т + I; ути из алеф [укфор] :• 1;

счет из алеф (укфор] :« 1;

для i от m +1 до ш ♦ п

Страница 197

С.194 ГОСТ 27974-88

для j до eei p н из алеф [i]

ЦК

вмб (н из алеф [i]) [j ] в (пакет пак):

(н из алеф [i] [J ] :■ пакет (в ! из пак. повт из пак, удк из пак + т,в 2 из пак) быв кц KU

конец;

k) прои ^-присоединить формат =

(имя файл f, формат формат) пуст:

начало формат из f :« с вновь созданное имя. которое начинает именовать выдачу фактического-описателя-формата и область действия которого равна области действия значения, выдаваемого посредством 'формат' с :■ формат;

укфор из f : = глоб цел := 1; утн из (F из формат из f) [1] := 1; счет из (F из формат из О (1J := 1; оук из (F из формат из О 111 :• О конец;

10.3.5.1. Форматный вывод, а) прои ф вывод =

(имя файл f, ( ) об (выводимое, формат) х) пуст: если открыт из f то для к до вегр х цк выб настроить на запись (f);

настроить на литерное (О; х [к) в

(формат формат): присоединить формат (f, формат), (выводимое выв): начало цел j ;= 0 шаблон шаблон. [ ] провывод у = стройвывод выв; пока (j +:= 1) < вегр у цк лог не конч := ложь; взять след шаблон (f, ложь, шаблон); настроить на запись (f);

[1 : вегр (в из шаблон) J подвставка подвст; выб граф из шаблон в (трафарет трафарет): начало цел повт, ук t азатель t рам it ок rt :■ 1;

[1 : вегр (рамки из трафарет) ) подрамка подрамки;

196

Страница 198

ГОСТ 27974-88 С-195

(подготовить рамки (рамки из трафарет, полрамки), подготовить вставку (в из шаблон, подвсг)); строк S;

оп ? = (строк s) лог:

ji истина, если следующий маркер есть один из элементов V, а иначе ложь ^ если украм > вегр подрамки то ложь

иначе подрамка пр = подрамки [украм]; повт :■ повт из пр; если литера в строке

(марк из пр. лог цел, s) то украм 1; истина иначе ложь все все;

оп ? » (лит с) лог: ?строк (с); проц цел трафарет ■

(имя лог образец знака) цел:

(цел 1 := 0;

пока ? "zuv" цк (повт >011+:= повт) кц; образец знака ? и+ пока ? "zd”

цк (повт>011+:» повт) кц; 1);

<    проц ред актировать (к Д цел = (Д цел i) пуст:

(лог образец знака;

цел 1 :■ цел трафарет (образец знака); строк t ■ предст целого (абс i, 1); если литера в строке (литера ошибки лок цел, t) V 1 = 0 V ”» образец знака A i < Д 0 то не конч :■ истина иначе t прип s;

(1 - верг t) X ”0" прип в;

(образец знака I (1<Д0 I **—” 1”+’*) прип s) все) >;

<    проп ред Д веш = (Д веш в) пуст:

(цел b :* 0. а := 0,

пор :■ 0. Д веш у :=* абс в, лог знак 1, строк точка = b := цел трафарет (знак 1);

(?"."!» •= цел трафарет (лок лог);

точка := " .**); если ? ме” то Д нормализовать (у, Ь, а, пор); ред цел (пор);

197

Страница 199

С. 196 ГОСТ 27974-88

**10** прип S все;

строк t = преаст рационального

(у, b + а ♦ (а Ф О III 0),а); если литера в строке

(литера ошибки, лок цел, t) V а + Ь = О V знак I Л г < Д О то не конч := исгина иначе t [:b] ♦ точка ♦ t [b + 2:]прип s;

(b + а (а *= О 111 0) - вегр t) X110” прип s; (знак 1 I (в < Д О I **—”1 "*") прип () все) >;

<    прои реп Д компл = (Д компл дк) пуст: пока ?**i” цк украм +:■ I кц;

редД вещ (мчдк);

”1” прип s; украм :■ 1; рел Д веш (вч лк)) >:

<    проц реа Д бит =

(Д бит лб, цел основание) пуст:

(Д цел п := абс дб; ? "г”; цел 1 := цел трафарет (лок лог); пока литеру в цифру (С (п мод У основание)) прип s;

п +:■ У основание; п Ф Д О цк пропуск кц; если вегр s < I

то (1 - вегр s) X "О” прип s иначе не конч :» истина все) >.

проц счет И чик J1! лит Ц ер • цел;

(цел 1 :■ 0;

пока ? “а” цк (повт >0 I 1 *:• повт) ки; 1); выб тип из трафаре1 в Ь целое |t

(у 0) I

<    (Д цел i) : рсд Д цел (i) >

I не конч := истина),

fi вещественное п

(у 0)1

<    (Д вещ в): рел Д вещ (в) >,

<    (Д цел ц) : рел Д веш (ц) >.

1 не конч :я истина),

t логическое ii

(у 01 I

(лог b): s ;*= (Ь 1да! нет)

1не конч :■ исгина), комплексное £

«98

Страница 200

ГОСТ 27974 -88 G197

(у Ш I

<    (Д компл дк): ред Д компл (дк) >.

<    (Д веш дв): реа Д веш (вд) >,

<    (Д цел да): ред Д веш (да) >

I не конч :■ истина),

t строковое ft

(у 011

(лит с): (счет лит 31 I s :» cl не конч :■ истина),

([ J.THTt):

(счет лит = вегр t - нкгр t ♦ 1

Id]

I не конч :» истина)

I не конч :■ истина) либо 1*1 битовое t

(У U1 I

< (Д бит дб): ред Д бит (дб. тип из трафарет - 4) > I не конч :*» истина) быв; если не конч

то ред строку (f, s, подрамки) все конец, •

(травыб выбор): начало

1'1 : вегр (в из выбор)] подвставка пв; подготовить вставку (в из выбор, пв); вывести вставку (f, пв); цел 1 = выб тип из выбор в |6 логическое |к

(у Ь) •

(лог b): (bill 2)

I не конч :• истина; пропуск),

Л целое t

(У 01 I

(цел i): i

I не коич :а истина; пропуск) -быв; если “* не конч то

если 1 > вегр (стр из выбор) VI < О

то не конч :■ истина

иначе

199

Страница 201

C.I98 ГОСТ 27974-88

[I ; всгр ((cip из выбор) [I])) подвставка иве: полготовить вставку ((стр из выбор) [I], пве); вывсс1И вставку (f, пве)

вес

все;

подюювить вставку (в из шаблон, полвст) конец.

(трафор трафор): начало

выполнить трафор (f .трафор, ложь); для i до всгр подвст ик полвст [i] * (0, ” ") ки; j I коней.

(трабссф 1рабесф): начало    -    .

(I : вегр (в из трабссф)) подвставка пв:

I ) прои цел спец = спей из трабесф: чел п - вегр спец; (1 : п] цел s:

(подготовить вставку (в из трабссф, пв),

(подготовить вставку (в из шаблон,подвст), s := (n I спец |1|, (спец [1],спец (2J),

(спец [1], спец [2).спец [3]) I ( ) )); вывести вставку (f, пв); если п ■ 0 то вывод (f, у [»)) иначе

число yj =

(у Ш ' < (Д иел »>:»>.< (Д *еш в): в >

I не конч :3 истина; пропуск); если "-не конч то выб п в

вывод (f, целое (yj, s (1))). вывод (f, фикс (yj, s [l],s(2])). вывод (f.iuiae (yj, s[l). s[2J. s(3J)) быв все все

конец,

(пуст):

О 1;

подготовить вставку (в из шаблон, подвст)) быв;

если не конч

то настроить на запись (О;

С (испрошибка значения из f) (f) I вывод (f, у [j]); не определено)

200

Страница 202

гост 27974-S8 С. 199

все:

вывести вставку (f, подвст)

KU конец быв ки

иначе не определено все:

ироц (имя файл.

( J об (выводимое, формат)) nyci put f * ф вывод: ироц ^-ред it актировав й строку ■

(имя файл f, строк s. [ ] полрамка пр) пуст: начало лог попав, п й ода в л г* н ф ули к := истина, выв it еден t эн

й ак П :* ложь, еше раз. цел j 0. знак: проц копия ■ (лиг с) пуст:

(~> подав I проверить позицию (f): вывести литеру (f. с)): для к до вегр пр)

ик подрамка прк = пр |к): подай := подав из прк: вывести вставку (f. пи из прк): до повт из прк цк еше раз :» и<Пнна. пока еше раз    "    ;

цк j+:■ I: сше раз :* ложь: • ' лиг sj ■ s (j), маркер = марк из прк: если маркер «’’d" то копия ( sj): пн :* истина инее маркер ""г” то (sj = ”0” I копия ((пн II sj))

I : sj = I ciue раз :* истина I пн :=ложь: копия (sj)) инее маркер «"u” V маркер *”v” то (sj ■’Ч” I знак :• 1; еше раз ;= истина I : sj ■ "—” I знак := 2; еше раз :в истина I :sj -"О" I копия ((пн I ,#i~ I sj))

I (~> выв зн

копня ((знак I (маркер «"u” I ”+”1 V)fw«”)); вывзн := истина); к