УДК 6«l.3.06:0M 3^54
Грунт 1185
ГОСУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР
ЯЗЫК ПРОГРАММИРОВАНИЯ
Алгол 6$ расширенный
ГОСТ
27975-88
ОКСТУ 4 00
Programming Language ALGOL 68, extended
Дата введения 01.07.90
Настоящий стандарт распространяется на язык программирования Алгол 68 расширенный*, его варианты, а также варианты языка программирования .Алгол 68, вводящие дополнительно к определению языка программирования Алгол 68 средства обеспечения модульности программ и раздельной трансляции программ, и устанавливает требования:
к программе на языке программирования Алгол 68 расширенный, представленной на машинном носителе или в комплекте программной документации;
к реализациям языка программирования Алгол 68 расширенный н его вариантов, используемым при создании или эксплуатации программных средств, в части выполнения программ на языке Алгол 68 расширенный.
Стандарт не распространяется на варианты языка Алгол 68 или языка .Алгол 68 расширенный н программы на языке Алгол 68 расширенный, составленные в учебных или исследовательских целях.
Вариантом языка Алгол 68 расширенный является определенный конкретной реализацией язык, сохраняющий основные конструкции языка Алгол 68 расширенный, в описании которого имеется ссылка на настоящий стандарт и четко перечисляются отличия определяемою языка от языка, определенного настоящим стандартом.
• Историческая справка о языке Алгол 68 расширенном, приведена ■ приложении 1.
Иннине официальное Перепечатка воспрпшсиа
245
С. 2 ГОСТ 2Т975 88
Требования к машинному представлению программы прицелены в приложении 2.
I. ЯЗЫК И МЕТАЯЗЫК
Вее прагматические замечания соответствуют ГОСТ 27974.
1.1.Метод описания
1-1.1- Введение соответствует ГОСТ 27974.
1.1.2. Прагматика соответствует ГОСТ 27974.
1.1.3. Синтаксис строгого языка соответствует ГОСТ 27974.
1.1.4. Семантика
Определение семантики соответствует ГОСТ 27974.
1.1.4.1. Гинсрпонятня. обозначение и сложение соответствуют ГОСТ 27974.
1.1.4.2. Ларапонятия.
Гиперправила a, b, d соответствуют ГОСТ 27974.
с) В правиле Ь) „опускаемые гиперпонятня" следующие: „ОФОРМЛЕННОЕ" • „НОМЕР” • ..ЛОКАЛИЗУЮЩИЙ” • „ПРИМЕНЯЮЩИЙ" - .ЛЮБОЙ" • „ПРИВОДИМО" •
„ЗНАЧЕНИЕ” • „для ЗНАЧЕНИЯ" • „выдающее ИМЯ ПРОВИДА'’
• „для метки” - .для процедуры” • „вида ПРОВИД”
• „свидом ПРОЦЕДУРА" - .л СРЕДЕ" • „.'ПАРЫ" • „с’ОПИСАНИЯМИ 7МЕТКАМИ" ■ „через ОПИСАНИЯ ''МЕТКИ" * „определяющее СЛОЙ" • ..ОБОЗНАЧЕНИЕ” • „как ИМЯ ПРОВИДА" • „без ’ОПИСАНИЙ” - „передающий 7СВЯЗИ” - „открывающим’СВЯЗИ".
1.1.4.3. Неопределенности соответствую! ГОСТ 27974.
1.1.4.4. Восстанавливающие действия:
Для некоторых случаев, где говорится, что исполнение не определено £1.1.4-3 з. Ь} , заданы восстанавливающие действия. Это значит, что должно выполняться такое восстанавливающее действие, если только реализатор не предусмотрел более подходящего решения для данном ситуации. Однако реализатор должен сохранить для программиста возможность потребовать, чтобы выполняемым действием было в точности действие, указанное здесь.
{Обычно восстанавливающее действие включает в себя возбуждение соответствующей ситуации.}
Ь) Восстанавливающее действие состоит в вызове некоторой процедуры, возможно, со значениями {параметров} - Эта процедура задается при помощи представления некоторого использующего-идек тификаторэ, выдающего згу процедуру в окружении соба венного-вступления.
1.2-Общие метаправила
1.2.1. Метаправила для видов соответствуют ГОСТ 27974.
1.2.2. Метаправила, связанные с фразами и приведением
А) ЗАКРЫТОЕ: : замкнутое; совместное;
параллельное; ВЫБИРАЮЩЕЕ {34А}; циклическое;
подключающее.
246
ГОСТ 2 7975-8К С. 3
Метаправила В. С соответствуют ГОСТ 27974.
1.23- Мегаправила, связанные со средами
Метаправила, Л, С. D, F, С. Н, Г, J . К соответствуют ГОСТ 2 7974, В> СЛОЙ :: новые ’ОПИСАНИЯ ’МЕТКИ ПОДКЛЮЧЕНИЯ.
Е) ОПИСАНИЕ : : СЛОВО {942А} для ВИДА:
ИНФИКС £942F} для приоритета ПРИОРИТЕТ;
ИНДИКАНТ 49420 для ЗНАЧЕНИЯ НОМЕР:
ИНФИКС C942FT для ДВУХМЕСТНОЙ.
ПРЕФИКС {942КТдля ОДНОМЕСТНОЙ:
МОДУЛЬ: СЛОВО для СИТУ АЦИИ с видом ПРОЦЕДУРА.
L) ’’МОДУЛИ : : МОДУЛИ; ПУСТО
М) МОДУЛИ : : МОДУЛЬ; ’МОДУЛИ МОДУЛЬ
N) МОДУЛЬ : ИНДИКАНТ для СВЯЗЕЙ с модулями
О>’СВЯЗИ 'СВЯЗИ; ПУСТО.
Р) !СВЯЗИ : СВЯЗЬ; 'СВЯЗИ СВЯЗЬ.
ОУ СВЯЗЬ: : КЛЮЧдля открытия’ОПИСАНИЙ {м} Ч1ОДКЛЮЧЕНИН R) КЛЮЧ : : НИ.
S) ’ПОДКЛЮЧЕНИЯ : : ПЮДКЛЮЧЕНИЯ; ПУСТО.
Г) ПОДКЛЮЧЕНИЯ : ПОДКЛЮЧЕНИЕ: ПОДКЛЮЧЕНИЯ ПОДК ЛЮЧЕНИЕ.
U> ПОДКЛЮЧЕНИЕ : : КЛЮЧ для запуска.
V> СИТУАЦИЯ : : ситуация; реакция
1.3. Общие гиперправила соответствуют ГОС1 27974.
2. ВЫЧИСЛИТЕЛЬ И ПРОГРАММА
2.J - Т г р м и и о л •> г и я
2 Е1. Объекты
Определение объекта и пратмагическое замечание соответствуют ГОСТ 27974.
2 J.t .1 Значения, участки, окружения и сиены
Гиперправила и. с. d «хпвектнуют ГОСТ27974.
Ь) Всякий ..участок” <сси.в11утренний<*бьекг.к<>тс.»рН1|}с»китп*К1-кует каким-то '’ОПИСАНИЯМ ’МЕТКАМ ПОДКЛЮЧЕНИЯМ' (17’ С, 1} ..Незанятый участок" эго участок, тын которою ’’ОПИСАНИЯ ’МЕТКИ ’ПОДКЛЮЧЕНИЯ' естi.' ПУСТО'
{Каждое ОБОЗНАЧЕНИЕ дтя ПРИЗНАКА' (4.S.I. F. G). Заложенное в данные '?ОПИСАНИЯ ЗМЕГКИ ’ПОДКЛЮЧЕНИЯ'. cooiHeiciвуег определяющему -ОЬОЗНАЧЕНИЕ-нидикатору-иылзюшему-ПРИЗНАК (■ .е. какому-нибудь идентификатору, обозначению-операции или мпннклтору-иида >. описанному в. конструкте, исполнение которого вызнало создание данною участка. Указанна 'ОБОЗНАЧЕНИЕ для ПРИЗНАКА' может ..полыми, досаул" к какому-то значению или сцене ..внутри" эких? у частя C-L2.cE
Образом участка может служить ряд ячеек памяти, в которые пометены эти доступные объекты.}
2.1.1.2. Виды определены в ГОСТ 27974.
24?
С. 4 ГОСТ 27975-88
2.1.1.3. Области действия.
Прагматические замечания и гиперправило а) соответствуют ГОСТ 27974.
Ь) Каждое окружение имеет одну определенную „область действия”. ■(Область действия каждого окружения никогда не бывает „старше" (2.1.2.f) области действия того окружения, из которого оно составлено (2.1.1.Ге).}
2-1 -2- Соотношения
Гиперправила а. Ь, с. □, е. f, g соответствуют ГОСТ 27974.
Fi) „Реагировать” есть соотношение между значением {процедурой} и сценой {определением-ситуации }, которое может быть справедливым ..внутри” определенного участка. Данное соотношение становится справедливым после исполнении определения-реакции.
i) Окружение может быть „.связано” с другим окружением {со старшей областью действия} „посредством" некоторой сцены {определения-ситуации}. Это соотношение может быть справедливым для некоторого окружения, созданного в процессе исполнения вызова-ситуации.
2.1 3. Значения определены в ГОСТ 27974.
2.1.4. Действия
2.1.4.1. Исполнение соответствует ГОСТ 27974.
2.1 4.2. Последовательные н совместные действия соответствуют ГОСТ 27974.
2.1.4.3. Запуск, завершение и прекращение
Правила з, b, с, d, е. f. g и прагматическое замечание соо-гветшвуют ГОСТ 27974.
h) Всякое действие может „прерваться” событием, {например, „переполнением”}, не определяемым семантикой настоящего стандарта, но вызванным вычислителем, если его возможности {2.2.2.Ь} нс позволяют обеспечить удовлетворительное исполнение. Когда действие прерывается, прерываются; все его поддействия и, возможно, его надденствия. {Возобновятся ли эти действия после прерывания, будут ли запущены другие действия или же окончи! ся исполнение данной программы^ настоящим стандартом оставлено нс определенным. Для некоторых событий определены восстанавливающие действия (1.1.4.4.) .}
i) Действие может прерваться, если вычислитель обнаруживает, что время (место в памяти), выделенное для исполнения программы, близко к исчерпанию. В гаком случае восстанавливающим действием служит вызов процедуры восстановление после исчерпания времени {10.2 5.р} (восстановление после исчерпания памяти { 10.2.5.q}). {Предполагается, что остающееся количество времени (памяти) будет достаточным, чтобы восстанавливающее действие обеспечило аккуратное завершение или же добыло дополнительные ресурсы.}.
2-1.5. Сокращения определены в ГОСТ 27974.
2.2. Программа соответствует ГОСТ27974,
244
ГОСТ 2 7975-88 С. 5
3. ПРЕДЛОЖЕНИЯ
Вес прагматические замечания соответствуют ГОСТ 27974.
3.0!. Синтаксис
Гиперправнла a. b, с. d, е соотстветствуют ГОСТ 27974.
Г) • блок с СРЕДЕ: определяющее СЛОЙ последовательное предложение ПРИВОДИМОЕ В СРЕДЕ <32а};
состав ВЫБИРАЮЩЕГО предложения
ОФОРМЛЕННЫЙ ПРИВОДИМЫЙ в СРЕДЕ Г34b};
вариант выбирающий по ПРЕДСТАВИТЕЛЮ ПРИВОДИМЫЙ в СРЕДЕ <34i};
ОФОРМЛЕННЫЙ цикл с ОПИСАНИЕМ в СРЕДЕ {35е};
ОФОРМЛЕННЫЙ подчиненный условию цикл в СРЕДЕ {35f}; текст процедуры в СРЕДЕ выдающий ПРОЦЕДУРУ -(541а, Ь}, определяющий СЛОЙ текст модуля в СРЕДЕ передающий
’СВЯЗИ {49с. };
модульный кортеж с ’ОПИСАНИЯМИ без ’ОПИСАНИЙ! в СРЕДЕ с СЛОЕМ 1 с СЛ0ЕМ2 {42d};
подключающее предложение ПРИВОДИМОЕ в СРЕДЕ {36а}.
3 0.2-Семантика соответствует ГОСТ 27974.
3.3. Замкнутые предложения определены в ГОСТ 27974.
3.2. Пос лел о в a i ел ь н ые предложения
3-2.1 Синтаксис
Гиперправнла a. b. с. d. с. f, g. h соответствуют ГОСТ 27974.
i) • определяющее предложение:
определяющее СЛОЙ последовательное
предложение ПРИВОДИМОЕ и СРЕДЕ <32*1;
определяющее СЛОЙ выясняющее
предложение выдающее ВИД в СРЕДЕ {34с};
определяющий СЛОЙ текст модуля в СРЕДЕ
передающий !СВЯЗИ {49с, •};
определяющее СЛОЙ подключение в СРЕДЕ передающее 2СВЯЗИ <36а,-}.
3.2.2. Семантика
а) Выдачей носледовательного-предложсния в окружении Е является выдача исполнения его кортежа или любого кортежа, исполняемого „вместо него" <5.4.4.2}, в окружения, „устанавливаемом" <Ь} вокруг Е согласно этому поаледовательному-нредложемию; требуется, чтобы по области действия зга выдача нс была младше данного Е, причемвосстшавлив-аюшим действием служит вызов процедуры восстановление после ошибки области действия <10.2.5.п}.
249
С. 6 ГОСТ 27975-88
Ь) Окружение Е. „устанавливаемое”
• па окружении? £1, возможно нс обусловленному, {которое определяет er-о область действия,}
• вокруг окружения Е2, {определяющегоего состав,}
• согласно определи юшему-навые- ?ГЪ\РЫ-ПСНЯТИЮ С, возможно отсутствующему, {которое задает его участок,?
• со значениями V,.....Vn, возможно отсутствующими, {которые возможно будут приписаны,} определяется следующим образом:
• если Е1 не обусловлено, то пусть Е1 будет Е2:
• Е младше EI по области действия и составлено из Е2 и нового участка, соответствующего '?ПАРАМ', если С присутствует, а иначе соответствующего ' ПУСТО';
Случай А : С есть о-прсдсляюшее-предложение:
Дтя каждого составляющего определения-вида М этого С, если они вообще есть.
• сиена, составленная из
{,) фактического-описагсля этого М и
(ii) окружения. необходимого для {7.2.2.с} этого фак гичке ко го-опи-сателя в Е, приписывается индикат ору-вида этого М в Е;
Для каждого составляющего определения метки L этого С, если они вообще есть.
• сиена, составленная из
О) кортежа, для которого L - прямой наследник, и
(ii) окружения Е, приписывается идентификатору-мегк и этого L в Е, Для каждого составляющего определения-ситуации X этого С, если они вообще есть.
• сцена,составленная из
(t) X н
(ii)окружения Е, приписывается идентификатору-ситуации этого X в Е;
Если каждая 'ПАРА', заложенная в ° ПАРЫ', есть ИНФИКС для БИНАРНОГО' или'СЛОВО для метки' или 'СЛОВО для ситуации с видом ПРОЦЕДУРА',
го Е называется „нелокализутошим” {см. 5.2-3.2-Ы;
Случай В : Сесть заданне-аргументов, заглавие-пикла или спецификация:
Для i = 1.....п. где п - число ОПИСАНИЙ’,заложенных!»'’’ПАРЫ', • V, приписывается {4S.2.a} s-му составляющему on ределяюще-му-идентификатору этого С в Е, сети они вообще есть, а иначе {в случав невидимого заглавия-цикла} некоторому определяющему-бук ву-алеф-идентификлтору-в ыддкнцему-цеяое;
Если С служит заглавием-Дикла или спецификацией, го Е является нелокализующим.
250
ГОСТ 2 7975-38 С. 7
{ В остальных случаях, I. е. когда С отсутствует:
• Е является локализующим (см. 5.2.3.2.Ь), но дальнейшее не определено.}
с) Выдача W всякого кортежа С определяется следующим образом:
Если С содержит прямую наследную основу, за которой не г знака-продол жат ь, то
• XV — выдача этой основы; а иначе
• исполняется описание нян основа этого С» если они вообще есть;
■ W - выдача кортежа этого <.
■ССм. также 5.4-4.2- Случай Л.}
3.3. Сов мест ныв и параллельные преало жени я
3.3.1. Синтаксис соответствует ГОСТ 27974.
3-3.2- Семантика
а) Гипериравило соответствует ГОСТ 27974.
Ь) Выдача W совместното-прсдложения-выдаюшего-СОСТАВНОЕ С определяется ел едутощим образом:
Если прямой наследник из С есть вакуум, то {'СОСТАВНОЕ' есть 'МАССИВ из ВИДА',} каждая граничная пара в паспорте выдачи W равна (1,0) {, и имеется один скрытым элемент, значение которого не существенно}-, ина-че
• пусть V......Vm будут {совместными}выдачами составляющих основ из С;
Случай А: 'СОСТАВНОЕ' есть 'структура содержащая ’ПОЛЯ в себе':
• Vj, . . - , V,n, взятые в их порядке, служат полями W;
Случай В: 'СОСТАВНОЕ' есть век тор из ВИДА!’:
• W состоит из
(i) паспорта ((I, т)),
(ii) V......Vm;
Для i = В, ... , m
’ Vj i— элемент, выбираемым по индексу (i) в W;
Случай С: СОСТАВНОЕ есть вектор МАССИВОВ из ВИЛА 2' I
• требуется, чтобы паспорта значений V, , -. . , VTO были идентичны-,
• пусть паспортом {лапримср.} Vt будет ((L>,U)), ... , CLn>un));
• W состоит из
(i) паспорта ((1, m), (L>,U|), ... , (Larun));
(si) элементов этих V].....Vm;
Для i = 1, ... , m
• элементом, выбираемым no индексу (i, i>. . . a in) в * будет элемент, выбираемый по (ij, . - • , in) в Vj,
Если не все паспорта значении V,» . . . , Vm идентичны, восстанавливающим действием является следующее;
пусть U есть некоторым массив вида, специфицируемого описателем [ ] массив {10.2.3.1.а.} с паспортом ((1,ш)) и такой, что для i =
251
С 8 ГОСТ 279 75 Sb
= I.....т. элементом. выбираемым iro индексу (i) в V, является некоторый массив е паспортом, идеи витым паспорту V;:
• вызывается процедура восстановление после ошибки записи массива { 10-2.5.к} со значениями £ параметров} U и п {.где п есть ЧИСЛО пар в паспорте Vj}.
3-4. Выбирающие предложения определены в ГОСТ 27974.
3-5. Циклические предложения определены в ГОСТ 27974
3-6. Подключающие предложения
3.6.1. Синтксис
з) подключающее предложение ПРИВОДИМОЕ в ('РЕДЕ- £5D, 551а. А341И, Л349а}:
определяющее СЛОИ подключение в СРЕДЕ передающее
ПУСТО £ЬХ
ЗАКРЫТОЕ предложение в СРЕДЕ с СЛОЕМ ПРИВОДИМОЕ £а, 31э. 3.3а, с, d. с. 34а, 35а.->.
Ь) определяющее новые ’’ОПИСАНИЯ ’ПОДКЛЮЧЕНИЯ подключение в СРЕДЕ передающее ?СВЯЗИ Та, 49с}г знак подключить {94<1К открывающий ’СВЯЗИ групповой вызов модулей в СРЕДЕ перс -дающий ’СВЯЗИ {с}, если ’ОПИСАНИЯ ! ПОДКЛЮЧ ЕН И Я открываются СВЯЗЯМИ Се, f> и и СРЕДУ проникают ’ПОДКЛЮЧЕНИЯ из ПОДКЛЮЧЕНИЙ то.
с) открывающий !СВЯЗИ групповой вызов модулей н СРЕДЕ передающий ’СВЯЗИ £Ь.с>:
открывающий ’СВЯЗИ вызов модуля в СРЕДЕ передающий ’СВЯЗИ £d.-k
если (’СВЯЗИ) есть <?СВЯЗИ1 2СВЯЗИ2) и (!СВЯЗИ> есть 0СВЯЗИ1 ’СВЯЗИ’).
открывающий ГСВЯЗИ1 вызов модуля в СРЕДЕ передающий ’СВЯЗИ I £d.}.
знак а также <940.
открывающий ’СВЯЗИ2 групповой вызов модулей в СРЕДЕ передающий ?СВЯЗИ2 £с>.
d) открывающий ’СВЯЗИ вызов модуля в СРЕДЕ передающий ’СВЯЗИ Тс}:
если (’СВЯЗИ) есть (ПУСТО), использующий ИНДИКАНТ индикатор модуля в СРЕДЕ выдающий ’СВЯЗИ с модулями £4КЬ};
если (’СВЯЗИ) есть (.’СВЯЗИ), злак отк рыюе {94 d}.
испсль-зуюший ИНДИКА НТ индикатор модуля в СРЕДЕ выдающий ’СВЯЗИ с модулями £48Ь).
252
I <Xf 2 79 75-88 C. 9
e) ЕСЛИ ’ОПИСАНИЯ! ’ОПИСАНИЯ’ 'ПОЖИОЧНПИЯГ подключения:
открываются
КЛЮЧОМ для открытия ’ОПИСАНИЙI 'ПОДКЛЮЧЕНИЙ I ?СВЯЗЯМИЗ
КЛЮЧОМ для открытия ’ОПИС АН ИЙ I 'ПОДКЛЮЧЕНИЙ I
ТВЯЗЯМИ4 <Ъ. c.f}:
ЕСЛИ ’ОНИС АНИ ЯI ’ОПИСАНИЯ’ ^ПОДКЛЮЧЕНИЯ!!
?ПОДКЛЮЧЕНИЯ’
открываются
КЛЮЧОМ для открытия ’ОПИСАНИЙ! ПОДКЛЮЧЕНИЙ!
’СВЯЗЯМИ) 7СВЯЗЯМИ4 {с.и
ОНЛИ ’ОПИСАНИЯ! ’ОПИСАНИЯ? ПОДКЛЮЧЕНИЯ!
? ПОДКЛЮЧЕНИЯ’
о тк рына ютея
КЛЮЧОМ ДЛЯ открытия ’ОПИСАНИЙ! 'ПОДКЛЮЧЕНИЙ!
ХВЯЗЯМИ2 <Ь.^О:
ЕСЛИ «ПИСАНИЯ? ’ПОДКЛЮЧЕНИЯ: открываются
?СВЯЗЯМИ2 и ’ОПИСАНИЯ! не зависят от .’ОПИСАНИЙ’ £713, Ь. с}.
g) ЕСЛИ ПУСТО открывается ПУСТО Че. О: ЕСЛИ истина.
h) ЕСЛИ в СРЕДУ проникают ’ПОДКЛЮЧЕНИЯ! нт ?
ПОДКЛЮЧЕНИЙ ПОДКЛЮЧЕНИЯ ЧЬ}:
сети неверно, что ПОДКЛЮЧЕНИЕ идентифицировано и
СРЕДЕ {72а},
ЕСЛИ (’ПОДКЛЮЧЕНИЯЛ есть (-’ПОДКЛЮЧЕНИЯ’ ПОДКЛЮЧЕНИЕ) н в СРЕДУ <с> ПОДКЛЮЧЕНИЕМ проникают ’ПОДКЛЮЧЕНИЯ’ из ’ПОДКЛЮЧЕНИЙ {h.i,-}; если ПОДКЛЮЧЕНИЕ идентифицировано в СРЕДЕ {72а}.
ЕСЛИ в СРЕДУ проникают ’ПОДКЛЮЧЕНИЯ! из ?
ПОДКЛЮЧЕНИЙ {h. з,-.}.
i> ЕСЛИ в СРЕДУ проникает ПУСТО из ПУСТО {!»}: ЕСЛИ истина.
{ Примеры:
а) иодкл а,Ь (ввод (Г, а); неч (а))
b) пи лк л а, Ь
с) а. Ь
d} а отк р Ь}
{В правиле В КЛЮЧИ .гим запуска , заложенные н 'ПОДКЛЮЧЕНИЯ/, представляют те модули, запуск которых может чотрс Соваться при любом вызове-мо лудя, использующий индикатор-модуля которого идентифицирует конкретный оиределаюший'икдикзгор-моду.тя. в го время, как подобные гилерпонязия. заложенные в ’ПОДКЛЮЧЕНИЯ', представляют только тс модули, которые нужно напускать в конкретном контексте, дл«о«таль-
253
С. 10 ГОСТ 279-75 -88
ных же эю уже было исполнено, как можно статически определить по 'СРЕДЕ'. Наличие '^ПОДКЛЮЧЕНИЙ' в средах всех наследных конструктов подключа ющетм-ирелложения гарантирует, что все запушенные к данному моменту модули никогда не будут заново запускаться внутри этих наследников.
Правило f обеспечивает независимость одновременно открываемых описаний, так, например,
модуль as мд oik рвет х дм, Ъ = мдоткрвеш хим;
подкла, Ь (х)
не порождается. Тем не менее, правило е допускает, чтобы данное описание открывалось двумя открытыми подключениями одного и того же модуля. как в
модуль а -мд откр twin к лм:
модуль b = полкл откр а мд веш у дм.
с =подкл откр а мд веш z дм;
поды л b с (х + у + z)
где определения-модуля и для b и для с открывают х посредством откр а з своих составляющих подключениях }
3.6.2. Семантика:
а) полк лючзющее-предложение-ПРИ ВОДИМОЕ -в СРЕДЕ N в окружении
Е исполняется следующим образом:
Если, согласно ’СРЕДЕ’, существует „первым незапущенный" ЧЬ? модуль М из подключения R этого N в Е, то
• пусть М состоит из оиределяющсго-1<овыс-?ПАРЫ-ПОДКЛМ)ЧЕ11ИЕ-текстэ молуля Т <вместе с необходимым окружением};
- М запускается <с} в Е, развертывая новое окружение Е4 -[внутри которого участок 'ПОДКЛЮЧЕНИЕ' подключает результат запуска М};
• пусть Y - это выдача Ча} в Е4 подключаюшсго-предложении-ПРИВО-ДИМОГО-вСРЕДЕ- {с} -ПОДКЛЮЧЕНИЕМ, подобного NC.hkoto-ром относительно М известно, что он уже запушен?;
• {М отключается, г. е,} кортеж составляющего заключения нз Т, если такой вообще есть, исполняется в Е4;
• выдача N В Е есть Y;
• требуется, чтобы Y по области действия было-не младше Е;
в противном случае
• пусть Е2 — это окружение, устанавливаемое вокруг и наравне с Е в соответствии cR ; участок этого Е2 соответствует передаваемым свойствам модулей, подключаемых R};
• £2 „дополняется" 4J} ^значениями, передаваемыми составляющими вызова ми-модулеи} из R в Е;
• выдатз N в Весть выдача ЗАКРЫТОГО-предпож-ения этого Nb Е2;
Ь) „Первый незапущенный” согласно некоторой 'СРЕДЕ* модуль из подключения R в окружении Ь определяется следующим образом;
Если существует некоторый составляющий открывающий-ХВЯЗИ-
254
ГОСТ 27975 -И С. II
КЛ^Ч-для огкрьпия-?СВЯЗЕЙ-ПОДКЛЮЧЕНИЕ-вызов молуля С из R» такой, что выполняется предикат если неверно что ПОДКЛЮЧЕНИЕ идентифицировано в СРЕДЕ,' н который текстуально является первым таким вызовом модуля, то
• пусть выдача исполь-зукиисго-нндихатора-модуля этого С в Е есть {еще не запущенный)- модуль М, состоящий из текста-модуля Г и окружения Е1 {необходимого (7.2 2.с) для Т}; Если Т содержит подключение S
и если согласно 'СРЕДЕ' существует первый незапущеммый модуль М I кз S в EI,
то МI есть первый .незапущенный модуль из R;
иначе М есть первый незэпушекный модуль из R:
иначе не имеется никакого первого незапущенного модуля из R.
{ ВыборС среди вызовов-модулей из R зависит только от 'СРЕДЫ' и не зависит от Е- Из этого следует, что такой выбор всегда можно осуществить во время трансляции Е требуется только дня того, чтобы получить правильное окружение, необходимое для М.}
с) Модуль, состоящий из определяющего-новые-?ПАРЫ-ПОДКЛ10ЧЕ-ff ИГ-текста-модуля 7 и окружения El {. необходимого для Т}, запуск зет -см в окружении Е следующим образом:
Если Т содержит {уже запущенное} подключение S то
• пусть Е2 есть окружение, устанавливаемое вокруг Е1, наравне с Е» со-гласно S;
• участок этого Е2 .дополняется” {d} {значениями, передаваемыми наследными выэовами-модулей,} из S в Е;
иначе, пусть Е2 есть Ei;
• пусть ЕЗ есть окружение, устанавливаемое вокруг Е2 и. если Е — это „окружение расположения модуля”, то наравне с Е, а иначе по Е, согласно Т { ; участок этого ЕЗ соответствует всем свойствам (передаваемым или нет), описанным в Т};
• ПОДКЛЮЧЕНИЕ' получает доступ к модулю, состоящему из Ти ЕЗ внутри участка этого ЕЗ { , гак что внутри самого Т будет видно, что Т уже запушен};
• в ЕЗ исполняется: составляющее модульное-вступление из Т;
• пусть Е4 есть окружение, называемое „окружением расположения модуля”, устанавливаемое вокруг Е. наравне с ЕЗ, согласно некоторому определяюшему-новое-ПаДКЛЮЧЕНИВ-ПОНЯТИЮ;
• ПОДКЛЮЧЕНИЕ’ получает доступ к модулю, состоящему из Т и ЕЗ внутри участка этою Е4;
• запуск М называется „развертывающим” окружение Е4-.
{Все окружения, создаваемые в процессе запуска иезапущенмых модулей (Ь) из подключения некоторого подключаю)него-предложения N. имеют одну и ту же область действия, младшую, чем у окружения, в котором будем исполняться N, но старшую, чем у любого окружения, создаваемого в процессе исполнения ЗАКРЫТОГО-предложения этого N.}
255
с. 12 ГОСГ 2?9?5-88
d) Участок L „дополняется" из подключения R в окружении к следующим образам
Для каждого наследного использующего•индмкагора.-мод^^^^ ХВЯЗИ-омюаулями этого R.
Лдя каждою 'КЛЮЧА для открытия ’ПАР', заложенного {1.1.4.1с} в 'СВЯЗИ'.
• пусть модуль, „подключаемый" {е} 'КЛЮЧОМ для запуска внутри Е -{. ОН будет находиться в некотором окружении расположения модуля (с) ,} есть {уже запущенный} модуль, состоящий из текста-модуля Т и окружения ЕЗ {. в которо м до этого было исполнено его модульное-вступление}:
Для каждого значения или едены, подключаемых внутри участка этого ЕЗ посредством некоторой ПАРЫ’.
Если эта ПАРА' зало-жена в 'ПАРЫ' {, 'ПАРА* должна быть передаваемой}.
го 'ПАРА' получает доступ к этому значению или сцене (если она cure не имеет такого доступа) также внутри L
е) Значение или сцена, „подключаемые" 'ПАРОЙ' внутри окружения Е состоящего из участка L и окружения Екесть значение или сцена, доступная через 'ПАРУ' внутри L <2.1-2.С.}. если L соответствует ’?ПАРАМ'. в которые заложена {1.1.4.1.с.} эта ‘’ПАРА’, а иначе значение или сцена, доступная через 'ПАРУ’ внутри Е1.
4. ОПИСАНИЯ, ОПИСАТЕЛИ И ИНДИКАТОРЫ
Все прагматические замечания соответствуют ГОСТ 27974-
4.1 Описания
4.1.1 Синтаксис
А) ОБЪЕКТ : : вид: приоритет; тождество-для ПРОВИДА; переменная как имя ПРОВИДА; операция как ПРОВИД; ПАРАМ ЕТР; поле вида ВИЛ среди ПОЛЕЙ; модуль; Ситуация с видом ПРОЦЕДУРА; реакция.
{ПРОБИЛ: : процедура; ВИД.}
Гиперпранила a, b, с, d соответствуют ГОСТ 27974.
е) описание с ?ОПИ( АЛИЯМИ без ^ОПИСАНИЙ! в среде {49е};
если (’ОПИСАНИЯ беа ’ОПИСАНИЙ!) если (ПУСТО без 'ОПИСАНИЙ 1),
описание ОБЪЕКТОВ через 'ОПИСАНИЯ! в СРЕДЕ {42а, 43а. 44а, е. 45а. 49а.-};
если (’ОПИСАНИЯ без ’ОПИСАНИЙ!) есть ('ОПИСАНИЯ без ПУСТО)
знак открытое {944},
описание ОБЪЕКТОВ через 'ОПИСАНИЯ в СРЕДЕ {42а, 43а. 44а. е. 45а. 49а.-};
если (’ОПИСАНИЯ без’ОПИСАНИЙ!) есть
(’ОПИСАНИЯ без 'ОПИСАНИЙ! 7ОПИСАНИЯ2),
256
ГОСТ 27975-88 С. 13
описание ОБЪЕКТОВ через [ОПИСАНИЯ! и СРЕДЕ {42а. 43а. 44а. е. 45а, 49а,-}.
знак а так же {94 О,
описание с '’ОПИСАНИЯМИ -без '.’ОПИСАНИЙ? в СРЕДЕ Се};
если (’ОПИСАНИЯ без ?ОЛИ€ЛНИЙ!) есть
(’ОПИСАНИЯ ?ОПИСАНИЯЗ без ’ОПИСАНИЙ!).
знак открытое <940,
описание ОБЪЕКТОВ через [ОПИСАНИЯ в СРЕДЕ <42а, 43а, 44а, е, 45а. 49а,- }.
знак а также {94fR
описание с ’ОПИСАНИЯМИ! без ’ОПИСАНИЙ] в СРЕДЕ {е}.
{Модули могут запускаться подключающими-предложениями.}
4.1.2. Семантика соответствует ГОСТ 27974.
4.2. Описания видов соответствуют ГОСТ 27974.
4.3. Описания приоритетов соответствуют ГОСТ 27974.
4.4. Описания идентификаторов соответствуют ГОСТ 27974.
4.5. Описания операций соответствуют ГОСТ 27974
4.6. Описатели определены в ГОСТ 27974.
4.7. Соотношения между видами определены в ГОСТ 27974.
4.8. Индикаторы и указатели полей
4.8.1. Синтаксис
.X) ИНДИКАТОР : ; идентификатор; индикатор вида;
обозначение операции; индикатор модуля.
Метаправила В, С. О соответствуют ГОСТ 27974.
Е) ПАРА:: ОПИСАНИЕ; МЕТКА; ПОЛЕ; ПОДКЛЮЧЕНИЕ.
{ПАРА : . ОБОЗНАЧЕНИЕ для ПРИЗНАКА.}
F) ПРИЗНАК : : ВИД; ЗНАЧЕНИЕ НОМЕР; БИНАРНОЕ; метка; выборка ВИДА; 'СВЯЗИ с модулями; запуск; СИТУАЦИЯ с видом ПРОЦЕДУРА-
G) ОБОЗНАЧЕНИЕ: : СЛОВО; ИНДИКАИТ; ИНФИКС; ПРЕФИКС; КЛЮЧ
Гиперправила a, h, с, d, е. f соответствуют ГОСТ 27974.
4.8.2. Семантика определена ГОСТ 27974.
4.9. Описании модулей
4.9.1. Синтаксис
а) описание модулей через 'МОДУЛИ в СРЕДЕ! {41а, е>:
злак модуль {94 d}.
групповое определение модулей через ’МОДУЛИ в СРЕДЫ {4|Ь.с}
Ь) определение модуля через ИНДИКАИТ доя ’СВЯЗЕЙ СВЯЗИ с модулями в СРЕДЕ! <41с}:
если (СВЯЗЬ) есть (КЛЮЧ для открытия ЮПИСАНИЙ ’ПОДКЛЮЧЕНИЙ {и} КЛЮЧ для запуска)
и (ИНДИКАИТ) сеть (выделенное СЛОВО).
если (СРЕДА 1) есть (ПОНЯТИЕ! КЛЮЧ для спуска 7ПОНЯТИЕ2),
9430!
257
С. 14 ГОСТ 279Т5-Л8
если неверно-что (ПОНЯТИЕ! ’ПОНЯТИЕ?) содержит (КЛЮЧ для запуска),
определяющий ИНДИКАНТ индикатор модуля-в СРЕДЕ) выдающий ’СВЯЗИ СВЯЗЬ с модулями {48а},
знак определяется как <94dX
определяющий СЛОЙ текст модуля в СРЕДЕ-1 передающий ’СВЯЗИСВЯЗЬ {с,-}.
с) определяющий новые’ОПИСАНИЯ) ’ОПИСАНИЯ ПОДКЛЮЧЕНИЕ текст модуля в СРЕДИ передающий ’СВЯЗИ КЛЮЧ для открытия ’ОПИСАНИИ 7ПОДКЛЮЧЕНИЙ ПОДКЛЮЧЕНИЯ <Ь}:
если (’ПОДКЛЮЧЕНИЯ) есть (ПУСТО) и (’СВЯЗИ) есть (ПУСТО).
знак начало модуля ОФОРМЛЕННЫЙ £94dX
модульный кортеж с ’ОПИСАНИЯМИ без 7ОПИСАНИЙ1
в СРЕДЕ 1 с новым Спустим СЛОЕМ)
с новыми ’ОПИСАНИЯМИ) ’ОПИСАНИЯМИ ПОДКЛЮЧЕНИЕМ {d),
знак конец модуля ОФОРМЛЕННЫЙ {94 d);
определяющее СЛОЙ подключение в СРЕДЕ)
передающее ’СВЯЗИ {36b),
знак начало мод ул я ОФОРМЛЕННЫЙ £94dX
модульный кортеж с ’ОПИСАНИЯМИ без ’ОПИСАНИЙ] в СРЕДЕ с СЛОЕМ с новыми ’ОПИСАНИЯМИ!
’ОПИСАНИЯМИ ПОДКЛЮЧЕНИЕМ <dX
знак конец модули ОФОРМЛЕННЫЙ {94 dX
если (СЛОЙ) есть (новые 7ОПИСАНИЯ2 ’ПОДКЛЮЧЕНИЯ).
d) модульный кортеже ’ОПИСАНИЯМИ без ’ОПИСАНИЙ! в СРЕДЕЗ {сХ
модульное вступление с '.’'ОПИСАНИЯМИ без ’ОПИСАНИЙ! в СРЕДЕЗ {eh
возможное модульное заключение в СРЕДЕЗ { f).
е) модульное вступление с 7ОПИСАНИЯМИ1 без ’ОПИСАНИЙ2 в СРЕДЕЗ <d. еХ
основа в СРЕДЕЗ сильно выдающая пустое значение £32 dX
знак продолжать {94 fX
модульное вступление с 7ОПИСАНИЯМИ1 без ?ОПИСАНИЙ2 в СРЕДЕЗ {еХ
если (’ОПИСАНИЯ I 5ез ’ОПИСАНИЙ’) есть
(’ОПИСАНИЯ? 7ЮПИСАНИЯ4 без ’ОПИСАНИЙ* ’ОПИСАНИЙ*).
описание с’ОПИСАНИЯМИЗ без ’ОПИСАНИЙ $ в СРЕДЕ {4)с}, злак продолжать {94 Г},
модульное вступление с ’ОПИСАНИЯ МИ4 без’ОПИСАНИЙ б в СРЕДЕЗ {еХ
258
ГОСТ 27375-88 С. 15
если (’ОПИСАНИЯ! без 7ОПИСАНИЙ2) есть (ПУСТО) без (ПУСТО).
•основа в СРЕДЕЗ сильно выдающая iivctoc значение {32d};
описание с ’ОПИСАНИЯМИ] без ’ОПИСАНИЙ 2 в СРЕДЕЗ <41 е}.
f) модульное заключение в СРЕДЕ <d}:
знак сброс модуля ОФОРМЛЕННЫЙ {94d}.
кортеж с ПУСТО сильно выдающий пустое значение в СРЕДЕЗ <32Ь>.
g) • текст модуля:
определяющий СЛОЙ текст модуля в СРЕДЕ передающий 'СВЯЗИ {с}.
{Примеры:
а) модуль» =мд строк s; чит (s);
откр с трок т^флил” 4 s, откр веща дм, Ь~в©дкл а мд открфайл Г;
открыть (f, t, стандкамал ввода);
сброс закрыть {О ДМ.
Ь) а = мд строк s; чит (s);
откр строк t = "файл” + s, опер веш а дм, b = подкл а мдоткр файл f;
открыть (f, t, стандканал ввода);
Сброс закрыть (0 дм.
с) мд строк s: чит (s);
откр строк t = "файл1* + s, откр веш а дм;
подкл а мд открфайл f;
открыть (f, t, ста ндк ан ал ввода);
сброс закрыть (0 дм.
d) строк s; чит ($) : открстрок t =”фзйл” + s, откр веща;
откр файл f; открыть (f. t, стандканал ввода);
сброс закрыть (f)
е) строк s; чит (в); откр строк t ^файл" + s,открвеш а;
откр файл f: открыть (f. t. стандкамал ввода).
f) сброс закрыть (I).}.
{Правило b гарантирует, что с каждым гекстом-модуля, подключаемым в любом заданном месте программы, связывается единственный КЛЮЧ Эдо используется для того, чтобы обеспечить возможность идентификации (7.2.1 а) 'КЛЮЧА для запуска1 в средах всех наследных конструктов. любого подключа юшего-прещюжения или текста-модуля, которые запускают этот тек «-модуля.
Вообще говоря, определяюший-СЛОЙ-гекст-модуля-псрсдаюшкй-!СВЯЗИ Т делает 'СЛОЙ' видимым внутри самого Т и делает свойства, открываемые ^СВЯЗЯМИ* .видимыми всюду, где подключается Т. 'СЛОЙ' включает в себя как '/ОПИСАНИЯ', соответствующие его открытым описаниям (например, t и а в первом тексте-модуля из примера с и '/ОПИСАНИЯ Г, соответствующие его скрытым описаниям (напримера в
9*
259
(.16 Г<Х7’79?5-8К
лом же примерен ик и 'ПОДКЛЮЧЕНИЕ', связывающее Т с единственным сЧ1ОП1СКгн\«он(им ему КЛЮЧОМ' и означающее, что вданной среде теперь известноv налички запуска этого Г.
'!( ВЯЗИ' всегда о i к рыла ни '’ОПИСАНИЯ ?ПОТКЛЮЧЕНИЯ ПОДКЛЮЧЕНИЕ' (но не 'ТОПЖАНИЯГ). где ^ПОДКЛЮЧЕНИЯ' означают запуск любых других модулей, подключаемых Т. если их вызовы-модулей ину 1 ри Т содержа I знак о ik ры гое }
4.92 Семам тика
а) .Модуль” ~ это сцена (2 11 Id}, состоящая из гексти-модуля вместе с окружением {2.1.1.1 с}.
Ь) Описание-модулей D исполняется следующим образом:
• совместно исполняются составляющие тексты-модулей этого D: Шла каждого cdcmb.diwuicio определенною дуля Di hjD.
• выдача <с> текс га-модуля этого D1 приписывается {4.8.2.а} опре-яел я юшему-индикатору-модул я этого Di.
с) Выдача текста-модуля Т в окружения Е эго модуль, состоящий из О) Тн
(ii) окружения, необходимого для { ’.2 2 с} Т в Е.
d) Модул ьнос-встулл сине С в окружении Е исполняется следующим образом:
• » Е исполняется его основа ил и описание;
Если сю прямым наследником является другое молульнос-встудле-ине D. то D исполняется в Е
{; в противном случае исполнение С завершено}.
4.10. Ситуации и реакции
{Ситуация зло такое состояние, обнаруживаемое реализацией или программой пользователя, при котором требуется действие, зависящее от текущего окружения. Это действие представляет собой вызов некоторой процедуры. Определение-ситуации вводит новый тип ситуации и задает вид процедуры, которую нужно вызывать для этой ситуации Определение-реакции залает конкретную процедуру, которая должна использоваться для згой ситуации на время жизни текущего окружения, исключая производные окружения, которые могут задавать свои процедуры дня той же ситуации Определи юн тй-ипеитификаюр-реакцим некоторого определения-реакции рассматривается как истюльзующнйяшентификазор-ситуэции. который должен идентифицировать опреДеляющин-идентификатор-ситуации из соответствующего определения-ситуации. Использующих-идентификаторов-реак цин не существует. }
4.10.1. Синтаксис
а) -описание ситуаций, с видом ПРОЦЕДУРА через 'ОПИСАНИЯ в ( РЕЛЕ- {41 а}:
знак СИТУАЦИЯ {IMF} . групповое определение ситуаций с видом ПРОЦЕДУРА через 'ОПИСАНИЯ в СРЕДЕ {4 1 Ь,с} .
в) определение ситуации с видом ПРОЦЕДУРА через СЛОВО для ситуации с видом ПРОЦЕДУРА в СРЕДЕ \4 I с} : определяющий СЛОВО
260
ГОСТ 2 7975-88 С. 17
идентификатор в СРЕДЬ выдающим ситуацию с видом ПРОЦЕДУРА £4 За].
с) описание реакций через [ОПИСАНИЯ в СРЕДЕ (41 а}:
знак РЕАКЦИЯ $ 94 О , групповое определение реакций через ’ОПИСАНИЯ в СРЕДЕ <4 I t>. с}.
d) определение реакции через СЛОВО для реакции с видом ПРОЦЕДУРА в СРЕДЕ {41с}:
если СЛОВО для ситуации с видом ПРОЦЕДУРА идентифицирована в среде <7 2а}, определяющий СЛОВО идентификатор и СРЕДЕ выдающий реакцию С вид-ом ПРОЦЕДУРА {48а}. знак двоеточие <94f}, источник пи Да ПРОЦЕДУРА в СРЕДЕ £5 21<) .
{Примеры:
а) ситуация {вещ) пуп недопустимый аргумент
Ь) (веш) чует недопустимый аргумент с)прнсит недопустимый аргумент: (вещх) пуст: финиш ^недопустимый аргумент: (веш х) пуст: финиш}
4 10.2 Семантика
а) исполнение описания-ситуации {не требует действий, не выдает значения и тем самым} завершено.
Ь) описание-реакций D в окружении Е исполняется следующим образом:
• оовмесию исполняются составляющие источники из D в Е; для каждого составляющего определения-реакции D) из D
• пусть V есть выдача источника из DI :
• пусть X есть выдача используюшего-идентификагюра-ситуации. подобного определяющем у-идентификатору-реакции из D1 в Е;
• V начинает реагировать на X внутри участка из Е.
5. ОСНОВЫ
Все прагматические замечания соответствуют ГОСТ 27974.
5.1. Синтаксис
А) ОСНОВА {J2d}: : приведенное присваивание {521 а}; приведенное отношение одноименности { 522 а }; приведенный текст процедуры {541 а. Ь}; переход <544а}: пропуск {552а}; ТРЕТИЧНОЕ <В}; формальная заготовка;
виртуальная заготовка.
Метаправила В. С соответствуют ГОСТ 27974.
D) ПЕРВИЧНОЕ {С 532а, 543а} : : приведенная вырезка {53 2а}; приведенный вызов {551а}; приведенный вызов ситуации {545а};
приведенное изображаемое <80а}; приведенное ядро <55Uh приведенный текст формата {А341а}; приведенный использующий СЛОВО идентификатор {48 Ь};
26!
с.18 ГОСТ 27975 -88
З АКРЫТОЕ предложение {313.33а, с. d, с.34а, 35а>.
Гмпсрправллс а соответствуй! Г<КТ 27974.
5.2. Основы, связанные с именами
5.2-1. Присваивания.
5.2.1.3. Синтаксис определен в ГОСТ 27974.
5.2.1.2. Семантика.
Гиперправило а соответствует ГОСТ 27974.
Ь) значение W ..присваивается” имени N. видом которого является некоторое 'ИМЯ ВИДА', следующим образом:
Требуется, чтобы
• N не было псевдоименем и
■ W по области действия яе было младше N;
Если N есть пссвдо«мя, то восстанавливающим действием служит вы-зов процедуры восстановление после ошибки псевдонмсни <10.2.5.1};
Если W по области действия младше N, го восстанавливающим действием служит вызов процедуры восстановление после ошибки области действия {10.2.5.тп>;
Случай А: 'ВИД' есть ’структура содержащая ’ПОЛЯ в себе’:
Для каждого 'СЛОВА , выбирающего поле в W,
• это поле присваивается подымем»!, выбираемому по 'СЛОВУ ' в N;
Случай В: 'ВИД есть 'МАССИВ из ВИДА Г:
• пусть V — {старое! значение, именуемое N;
• требуется, чтобы паспорта W и V были идентичны;
Для каждого индекса I, выбирающего элемент в W.
• этот элемент присваивается нодымени, выбираемому no I в N;
Если дескрипторы W и V не идентичны, восстанавливающим действием является следующее:
• пусть п есть чисто пар в паспорте W;
• пусть 5 есть некоторое целое число, такое, что 1 < i < л и пары с номером i в пасло-piox W и V не совпадают;
• вызывается процедура восстановление после ошибки присваивания {]0.2.5.Ь} со значениями {параметров}- N, W, n. i;
Случая С: 'ВИД' есть 'подвижный МАССИВ из ВИДА1':
- пусть V — -(старое} значение, именуемое N;
■ N начинает именовать массив, составленный из
< i) паспорта значения W,
(iQ вариантов {4.4 2.с} некоторого {, возможно скрытого.} элемента значения V;
- N снабжается полыменэми {2.1.3.1 .g>;
Для каждого индекса I, выбирающего элемент в W,
- этот элемент присваивается поды.мени, выбираемому по 1 в N;
Остальные случаи {, например, если 'ВИД1 есть 'ПРОСТОЕ' мчи некоторый 'ПРЕДСТАВИТЕЛЬ'}:
■ Nначинает именовать {2.1.3.2а}-W.
5-2-2. Отношения одноименности определены в ГОСТ 27974,
2W
ГОСТ 27975 - 88 С.19
5.2.3- Генераторы определены в ГОСТ 27974.
5.2.4. Псевдоимена соответствуют ГОСТ 27974.
5.3. Основы, связанные с составными значения-м и
5.3.1. Выборки
5-3-1.1. Синтаксис соответствует ГОСТ 27974.
5.3.1.2. Семантика.
Выда>й W выборки S определяется следующим образом:
- пусть V будет выдачей ВТОРИЧНОГО выборки S:
- требуется, чтобы V {. если оно имя.}- не было псевдомменем. причем восстанавливающим действием служит вызов процедуры восстановление после ошибки псев доимени { 10.25-11',
- W - значение, выбираемое в {2.1.3.3а,е, 2.1.3.4 к>, или ими. генерируемое из <2.1.3.4.1} V по указателю-поля этого- S.
5.3.2. Вырезки
5.3.2.1. Синтаксис соогветствует ГОСТ 2 7974.
S.3.2.2. Семантика.
а) выдала W вырезки S определяется посредством следующих шагов: Шаг I:
• пусть V и (lt , . .. , In) - {совместные} выдачи ПЕРВИЧНОГО вырезки S и индексатора <Ы из S:
• требуется, чтобы V {, если око ими.} не было псевдом менем. восстанавливающим действием служит вызов процедуры восстановление после ошибки нсевдоименм {10.2.5.Ip.
• пусть ((Т|, S| ), ... , (rn, sn)} — паспорт выдачи V или значения, именуемого V;
Шаг 2: для 1 = 1, ... , п
случай А: h - целое число:
• требуется, чтобы п < ^ < S|;
случай В: if - тройка (1, и. Г):
• пусть L будет г,, если I отсутствует, и 1 в противном случае;
• пусть U будет Sj, если и отсутствует, и и в противном случае;
• требуется, чтобы п< L и U<s,;
• !| заменяется на (L, Ur Г).
Восстанавливающее действие для этого шага состоит в -следующем:
• пусть i и b - некоторые числа, такие, что I < i < п к либо случай А1 : 1| - целое чисто. Ij < rj ил и I, > $, и b - Г , либо случай В1 : lj -тройка (1. и, Г), возможно, измененная на предыдущих шагах,
I не отсутствует, 1 < г и b = I, либо случай В2: lj - громка (l.u,l')1 возможно, измененная на предыдущих шагах,
и ие отсутствует, u > Sj и Ъ " и;
- пусть R есть процедура восстановление после ошибки границы имени {10 2.5.j}, если V имя. и про цедура восстановление после ошибки границы {10.2.5.1} в противном случае:
- пусть Ь — выдача вызова со значениями {параметров! V. n, i и Ь.
263
С» ГОСТ 27975--8*
• для сяушя AI : || заменяется ла Ь';
• для случая Bl : J из I, заменяется на Ь';
• для случая В2: и из I, заменяется на Ь‘:
• шаг 2 выполняется сначала..
Шаг 3: для t = 1. ... , п, если It - тройка (I. и. Г),
• пусть D будет 0. если 1'отсутствует, и ) Г в противном случае: {D — зто число, которое следует вычесть из 1. дли того чтобы получить сдвинутую нижнюю границу: У
• Г заменяется нз D.
Шаг 4: W — значение, выбираемое в {2.1 3.4.a.g, i}, или ими .генерируемое из {2-k.3.4.j} V по (Гь .. . , 1П).
Ь) Гнперлрзвмло соответствует ГОСТ 27974.
5 4. Основы, связанные с процедурами
5.4.1. Тексты процедур соответствуют ГОСТ 27974.
5.4.2. Формулы соответствуют ГОСТ 27974.
5.4.3. Вызовы определены в ГОСТ 27974.
5.4.4. Переходы определены в ГОСТ27974.
5.4.5. вызовы ситуации
{Вызов-ситуации служит для тосо, чтобы возбудить ситуацию н таким образом вызвать процедуру, назначенную для реагирования на эту ситуацию в текущем окружении. Вызов-ситуации может обеспечивать параметры для этой процедуры. Процедура реакции ищется, начиная с текущего окружения, по всем окружениям со старшими областями действия, исключая тот случай, когда во время исполнения некоторого вызова-ситуации вновь возбуждается та же саман ситуация. В последнем случае внутренний в ыэов-ситуации не использует процедуру реакции, найденную для внешнего вызова-ситуации. и поиск процедуры реакции продолжается с окружения, область действия которого является следующей старшей после области действия окружения с участком, содержащим первую процедуру реакции.. В некоторых языках программирования подобный процесс называется распространением ситуации.}
5 4.5.1. Синтаксис.
а) вызов ситуации в СРЕДЕ выдающий ЗНАЧЕНИЕ {5D}: возможный знак возбудил. {94 £}, использующий СЛОВО идентификатор в СРЕДЕ выдающий ситуацию с видом процедура 7ПДРАМЕТРИЗО-ВАННАЯ вырабатывающая ЗНАЧЕНИЕ С48-Ь>, параметризация ’ПАРАМЕТРИЗОВАННАЯ в СРЕДЕ {Ь,с}.
Ь) параметризация с ’ПАРАМЕТРАМИ н СРЕДЕ {а>: упакованные кратким фактические ’ ПАРАМЕТРЫ в СРЕДЕ {543b,с}.
с) параметризация в СРЕДЕ {а}: ПУСТО.
{Примеры:
а) возбуд недопустимый аргумент (х) }
5.45.2. Семантика-
а) выдача W вызова-си туи дин Y в окружении Е он рслсляется следующим образом:
264
ГОСТ 27975 -88 с.21
• пуст*. X есть выдача иаюльзуюшего-идснтмфи казора-ситуации из ¥ в Е;
• пусть Ни F~ это, соответственно, процедура и окружение реакции <Ь} для X в Е;
пусть EI — новое £ локализуют ее. см. 3.2.2.2.Ь} окружение, устанавливаемое вокруг Е; EI называется связанным с F посредством X,
• пусть V3, ... , Vn будут {совместными} выдачами составляющих фактических параметров этого У.если они вообще есть, в Е1;
• W есть выдача .вызова" {5.4.3.2.b} Н в Е1, возможно, со значениями {параметров} V, .... , Vn;
• требуется, чтобы W по области действия не была младше Е. причем восстанавливающим действием служит вызов процедуры восстановление жиле ошибки облает действия {10.2-5 .nl.
Ь) процедура реакции Н и-окружение реакции F для сцены X в окружении Е определяются следующим образом.
• требуется, чтобы Е по области действия не было младше окружения из X, причем восстаналнвзющим действием является вызов процедуры восстановление после обшей ситуации { 10.2-5.01;
• если существует значение R, реагирующее на X внутри участка из Е. го И есть R и F есть Е;
• иначе
■ пусть Е I есть отсчетное окружение {с} для X в Е;
• пусть Е2 есть окружение, по которому {3.2.2.6} установлено окружение Б;
• Н и F — эго процедура и окружение реакции Для X в Е2.
с) отсчетное окружениеF ала сиены X в окружении Е определяется следующим обрээо м:
• если Е связано посредством X с другим окружении Е], го F есть EL:
• иначе F есть Е.
5.S. Основы, связанные со значениями любого вида, соответствуют ГОСТ 27974.
5.6. 3 а г о т о в ки
5 61. Синтаксис
А) ЯЗЫК : : алгол шестьдесят восемь.
К вышеприведенному метаправилу могут быть добавлены дополнительные гиперпонятим {например, „фортран”}.
В) АЛГОЛ 68 : : алгол шестьдесят восемь.
а) виртуальная заготовка в СРЕДЕ сильно выдающая ЗНАЧЕНИЕ {5А}
символ виртуальная среда, замкнутое предложение в СРЕДЕ сильно выдающее ЗНАЧЕНИЕ {31а}.
Ь) формальная заготовка в СРЕДЕ сильно выдающая ЗНАЧЕНИЕ
{5А>:
знак форьйльНАЯ среда {94 dk
индикатор Я ЗЫКА выдающий ЗНАЧЕНИЕ { е. f. •},
265
С.22 ГОСТ 27975-48
индикатор заготовки Cd}.
с) фактическая заготовка в СРЕДЕ выдающая ЗНАЧЕНИЕ {Аба}: ЗАКРЫТОЕ предложение в СРЕДЕ сильно выдающее ЗНАЧЕНИЕ {31а,33а,с, 34а,3$а,-, 36а,-}.
d) индикатор заготовки {Ь}
изображение литерного {814а};
изображение вектора из литерных {83а}.
е) индикатор АЛГОЛ 68 выдающий ЗНАЧЕНИЕ {Ь}: ПУСТО.
f) для каждого дополнительного терминального мета по рожден и я „ЯЗЫКА” должны быть добавлены гиперправила для гиперпонятий формы .индикатор ЯЗЫКА выдающий ЗНАЧЕНИЕ”; каждое из таких правил содержит ровно одну альтернативу, которая должна бьпь отличимым знаком выделенное СЛОВО.
{Примеры;
Ь) среда"abc”
с) подкл а, b (х: ■ 1; у: = 2: печ (х + у))
d) ” а ” *»abc”}
{Поскольку для символа-виртуальная-среда не задано никакого представления, пользователь не может сам создавать виртуалъные-заготовки, однако задан механизм (10.6.2л) для тюстроения их из формальных- и фзкти-Ческих-за готовок.}
{Выдачей виртуальной-заготовки является, вследствие предысполие-ния (2.1.4 lx). выдача ее эамкнугого-преддожения. Для формальных- или факта ческих-заготопок нс задано никакой семантики, поскольку их исполнение никогда не требуется.}
6- ПРИВЕДЕНИЕ
Все прагматические замечания соответствуют ГОСТ 27974.
6.1. Приведенные
6-1.1. Синтаксис
Метаправила А, В, С. D, Е, G соответствуют ГОСТ 27974.
F) РАСКРЫВАЕМОЕ : г выборка в СРЕДЕ: вырезка в СРЕДЕ;
вызов в СРЕДЕ; вызов ситуации в СРЕДЕ; текст процедуры в СРЕДЕ;
АРНАЯ формула и СРЕДЕ;
использующий СЛОВО идентификатор в СРЕДЕ.
Гиперправила a, b, с, d, е, С. g, h соответствуют ГОСТ 27974.
6 2 Разыменование
6.2.1. Спитаксмс соответствует ГОСТ 27974.
6-2.2. Семантика
Выдача! W ФОРМЫ-выдающей-ВИД-иослс-резымснотзания F определяется следующим образом
• пусть {имя}К - выдача ФОРМЫ-после-РАСКРЫТИЯ F;
• требуется, чгтобы N, не было псевдоимснсм. примем носста-
2 <>е
ГОСТ ’7 975 -84» С.2 3
мавливающим действием служит вызов процедуры восстановление после ошибки нсевдонмсни { 10.2.5.1};
• W — значение, именуемое этим N .
6.3. Распроцедуривание соответствует ГОСТ >79-74.
6.4. Объединение соответствует ГОСТ 27974.
6.5. Обобщение соответствует ГОСТ 27974.
6.6. Векторизация соответствует ГОСТ 27974.
6-7. Опустошение соответствует ГОСТ 27974.
7. ВИДЫ И СРЕДЫ
Все прагматические замечания соответствуют ГОСТ 27974.
7.Е.Независимость свойств
7.1.1. Синтаксис
Метаправила А,В соответствуют ГОСТ 27974.
С) ЕСЛИ ОБОЗНАЧЕНИЕ! для ПРИЗНАКА! не зависит от ОБОЗНАЧЕНИЯ для ПРИЗНАКА? {а, 48а, с, 72а}:
если неверно что (ОБОЗНАЧЕНИЕ!) есть (ОБОЗНАЧЕНИЕ:), ЕСЛИ истина;
если (ОБОЗНАЧЕНИЕ!) есть (ОБОЗНАЧЕНИЕ:) и (ОБОЗНАЧЕНИЕ!) есть (АФФИКС),
ЕСЛИ ПРИЗНАК! не зависит от ПРИЗНАКА! {Л}-;
если (ОБОЗНАЧЕНИЕ!) есть (ОБОЗНАЧЕНИЕ.!) и (ОБОЗНАЧЕНИЕ!) есть (СЛОВО),
если (ПРИЗНАК!) есть (СИТУАЦИЯ) с видом: ПРОЦЕДУРА!) и (ПРИЗНАК!) есть (СИТУАЦИЯ’с видом ПРОЦЕДУРА!),
ЕСЛИ (СИТУАЦИЯ! СИТУАЦИЯ!) есть (ситуация реакция) или (СИТУАЦИЯ! СИТУАЦИЯ2) есть (РЕАКЦИЯ ситуация).
Гипсрправилз з, b. с, d. с, f. е, h, i, j, k, I, m, г», соответствуют ГОСТ 27974.
7.2. И де ит и ф и к а ци я в средах
7.2.1. Синтаксис
Гилсрправила а, b соответствуют ГОСТ 27974.
с) ЕСЛИ ОБОЗНАЧЕНИЕ для ПРИЗНАКА! находится
в ОБОЗНАЧЕНИИ для ПРИЗНАКА! Га. b. 48d}:
если (ПРИЗНАК!) есть (метка) млн (ПРИЗНАК!) есть (БИНАРНОЕ) или (ПРИЗНАК!) есть (выборка ВИЛА), или (ПРИЗНАК!) есть (!СВЯЗИ с модулями) или (ПРИЗНАК!) есть (запуск),
ЕСЛИ (ПРИЗНАК!) есть (ПРИЗНАК?);
если (ПРИЗНАК!) есть (ЗНАЧЕНИЕ! ’НОМЕР) и (ПРИЗНАК?) есть (ЗНАЧЕНМЕ2 ?НОМЕР),
ЕСЛИ ЗНАЧЕНИЕ! экв-ивалентно ЗНАЧЕНИЮ! {73а};
если (ПРИЗНАК!) есть (СИТУАЦИЯ с видом ПРОЦЕДУРА!) и (ПРИЗНАК!) есть (СИТУАЦИЯ с видом ПРОЦЕДУРА!).
ЕСЛИ ПРОЦЕДУРА! эквивалента ПРОЦЕДУРЕ! <73зУ
267
<.24 ГОСТ 27975-«8
7.2.2. Семан тика
Гиперпраинла a.d сооптеювуют ГОСТ 279-74.
Ь) Определяющий блок а СРЕДЕ {а} каждого используютею-ОБОО-НАЦЕНИЕ-индикатора-выдающсго-ПРИЗНАК II {по необходимости? содержит либо определяющий-ОБОЗНАЧЕНИЕ-индикатор-в-СРЕДЬ-с-СЛОЕМ-выдаюший-ПРИЗНАК 12, либо один или {возможно-} несколько нсполь-зуютцих-индикаторов-модулей 13, являющихся прямыми наследниками о!крывающик-!СВЯЗИ-выэовов-модулей-в-СРЕЛЕ. в !СВЯЗИ' которых заложено- ОБОЗНАЧЕНИЕ для ПРИЗНАКА'. В- этом случае говорится, что I] идентифицирует это 12 или каждое из этих 13.
с) Окружение Е, необходимое для" конструкта С в окружении Е1. определяется следящим образом:
Если EI — первичное окружение (2-2-2 а).
то Еесгь Е1;
иначе пусть Е| будет составлено из участка L. соотвстсгвуилисто каким-то ’’ПАРАМ', и другого окружения Е2;
Если С содержит любой кспользукиник-ОБОЗ! 1АЧЕНИЕ-индикатор выдающий-ПРИЗНАК.
• нс идентифицирующий {Ь} никакого опрсдсл яющсто-инликатора. содержащегося в С,
• не являющийся прямым наследным индикатором-вила для формаль-лого-ияи виртуальмого-описатсля и
• «кой, что предикат если ОБОЗНАЧЕНИЕ для ПРИЗНАКА нашш-ея
в ?ПАРАХ’ <7.2. l .b} выполняется, или если С содержит виртуальную-заготовку.
го Ессть EI;
иначе {L не необходимо для С и} Е — окружение, необходимое для С в Е2.
7.3. Эквивалентность видов соответствует ГОСТ 27974.
7.4. Правильность построения соответствует ГОСТ 27974.
8. ИЗОБРАЖЕНИЯ
Изображения определены в ГОСТ 27974.
9.ЗНАКИ и символы
Все прагматические замечания соответствуют ГОСТ 27974
9 1. Знаки соответствуют ГОСТ 27974.
9-2. Примечания и прагматы соответствуют ГОСТ 27974.
9 3. Представления соответствуют ГОСТ 27974.
9.4. Эталонный язык
Гиперправила a, b. с. d соответствуют ГОСТ 27974.
268
I OCT 279'5-в.»c.25
УА.\. Представления символов.
Списки символом a. b. с, е. g. h tool ьепт вукн ГОСТ 27974 <i) Символы для описани й
СИМВОЛ | предствление | |
■символ определяется как | ||
{42b. 43b.44c.4Sc} | = | |
символ длинное {К 10а. 82а} | long | ДЛИН |
символ короткое -{810.1.82b} | short | кор |
■символ имя {46с} | ref | имя имени |
символ локальный {523а, Ь} | loc | лок |
символ глобальный {523а. Ы | heap | глоб |
символ структура {46d} | struct | ст мру кт |
символ подвижное {46g} | Пек | ПС 'ЛИ |
символ процедура {44b. 4йо} | proc | проц |
символ объединение {46s} | union | об |
символ операция {4$а> | op | on |
символ приоритет {43а} | prio | при» |
символ вид {42а} | mode | вид |
символ модуль {49а} | module | модуль |
символ подключить {36Ь1 | access | лодкл |
символ начало модуля выделенный <49с} символ начало модуля стиля 1 | def | мл |
символ конец модуля выделенный {49с} символ конец модуля стиля J | fed | дм |
си мвол открытое {36d, 4)с} | pub | откр |
символ сброс модуля {49f} | posrlude | сброс |
символ формал ьная среда {56b} | nest | среда |
символ сегмент {А. Ъ, а, с} | egg. | сегмент |
f) Синтаксические символы | ||
символ | предствленив | |
символ начало выделенный {133d} | beqin | |
символ конец выделенный { 133d} символ начало краткий | end | |
{133d, A348b,A34Ab} символ конец краткий | ( | |
{133d, A348b, А34АЬ} символ начало стиля 1 {133 d} | > | начало |
символ конец стиля I { 133d } | конец | |
символы начало стиля II { 133d } | нач | |
символ конец стиля JI {133d} символ а так же {133с. 33b,f.34h, | кон |
41 a,b 46е, i, g, 1, 532b, 54 le. 543b. A348b.
A34A. c. d}
>6?
С.26 ГОСТ 27915-88
с и мвол продол жа г ь { 3 2 b } > | ||
символ завершить {32b} символ метка {32с} | exit | выход |
символ параллельно {33с} символ открыть {Я 14с} символ закрыть {814с} символ если выделенный {91а} символ то выделенный {91b} символ иначе если выделенный {91с} символ иначе выделенный {9 Id} символ все выделенный {91с} символ выбрать выделенный {91а } символ в выделенный {91b} символ либо выбрать выделенный {91с} символ либо выделенный <91d} символ конец выбора выделенный {91с} символ если кратким {91а} символ то краткий {91b} символ иначе если краткий {91с} символ иначе краткий {91 d} символ все краткий {91с} символ выбрать краткий: {91а} символ в краткий {91b} символ либо выбрать краткий {91с} символ либо краткий {9Id} символ конец выбора краткий {91е} символ если стиля I <91а} символ то стили ] <91Ь} символ иначе если стиля 11 {91с} символ иначе стиля I {93 d} символ все стиля I {91е} символ выбрать стиля {91а} символ в стиля: 1 {91b} символ либо выбрать стиля 1 {91 с} символ либо стиля В {91 d} символ xo-нец выбора стиля 1 {91 е} символ двоеточие {34-j.k} символ открыть индексы краткий {]33е} символ закрыть индексы краткий {133е} символ открыть индексы стиля I {133е} символ закрыть индексы стиля 1 {133е } символ вплоть до {46j, k, 1, 5321'} | рат ( ) if then elif else fi case in ou sc out esac ( 1 1: 1 ) ( 1 1: 1 ) i ]. ( ) | nap если: TO инее иначе все вы б в ливыб либо быв |
символ с {532g} | @ at | с |
символ есть {5 22 Ь} | :=: is | есть |
270
ГОСТ 2797*-83 с.27
символ не есть {522b} :^: | :/® : | isnt | несть |
символ мил {524а} о | nil | НИЛ | |
символ из {531 а} символ признак процедуры {$41а.Ь} | of | из | |
символ на выделенный {544 Ь} символ на краткий { 544b} | goto | на | |
символ идя выделенный { 544 b} | go | ||
символ пропуск {552а} | skip | пропуск | скип |
символ форматор {А341а} | $ | Ф | |
символ ситуация | except ion | ситуация | |
символ реакция | on | присиг | |
символ возбудить | raise | возбул | |
9 4.2. Символы прочих обозначений соответствуют ГОСТ 27974. |
10. СТАНДАРТНАЯ ЯЗЫКОВАЯ ОБСТАНОВКА
Прагматическое замечание соответствует ГОСТ 27974.
10-1.Тексты программ
Все прагматические замечания соответствуют ГОСТ 27974.
10.1.1. Синтаксис
А) ВНЕШНЕЕ : : стандартное: библиотечное; системное: собственное; личное.
Метаправило В и гиперправила a, b, с, d, е, р h, i еиоппчутют ГОС! 27-974.
Г) задача пользователя в СР-ЕДЕ1 {d}:
собственное вступление с «ПИСАНИЯМИ в СРЕЛЕ2 {ск личное вступление с ’МОДУЛЯМИ я СРЕЛЕ2 Сек.
УПАКОВКА собствснпо-лро граммы вСРЕДЕ2 {g}.
знак продолжать {94 f}.
собственномаключенис н СУЕДЕ2 {i}.
если (СРЕДА!) есть (СРЕДАI с новыми «ПИСАНИЯМИ ’МОДУЛЯМИ {и} СТОПОМ)
10.1-2. Соогвегст^ие языковой обстановке
Определения, а, Ь, с. d. е соответствуют ГОСТ 27974
f) Если явно не оговорено Противное {10.6.2.а)-. го каждое составляющее личное-вступление всех текстов-программ есть ПУСТО.
J 0.1.3. Способ описания стандартной языковой обстановки соответствует ГОСТ 27974.
102- Стандартное вступление
Все прагматические замечания лннвсКГнуюг ГОСТ 27974.
10-2.1. Запросы к обстановке
Описания a. b. с, d, е. f. g. h. i. j, k . I. m. n. o. p. q, r. s. t,u соответствуют ГОСТ 27974.
271
С И ГОСТ 279 75-88
v) проц, Д цел переполнение включено =лог:
С ИСТИНэ, если при возникновении ситуации, для которой в качеств восстанавливающего действия задан вызов процедуры Л дел восстановление после переполнения fl 0.2.3.13}, реализация действительно выполняет такое действие; ложь в противном случае с;
проц лог L mt overflow enabled = Д цел переполнение включено .
героц Л веш переполнение включено “лог:
с истина, если при возникновении ситуации, для которой в качестве, восстанавливающего действия задан вызов процедуры Д веш восстановление после переполнения fl 0 2 3.13) , реализация действительно выполняет такое действие: ложь в противном случае с ;
проц дог L real overflow enabled = Л веш переполнение включено;
проц Д веш потеря значимости включена -Лог:
с истина, если при возникновении ситуации, для которой в качестве восстанавливающего действия задан вызов процедуры Д веш восстановление после потери значимости <10.2.3.13}, реализация действительно выполняет такое действие: ложь в- противном случае с;
проц лог L real underflow enabled = Д вещ потеря значимости включена;
проц Д цел ошибка аргумента включена “лог:
с истина, если при возникновении ситуации, для которой в качестве восстанавливающею действия задай! вызов процедуры Д цел восстановление после ошибки аргумента < 1'0.2.3.13}. реализация действительно выполняет такое действие: ложь в противном случае с;
проц лог L int argument error enabled ■ Д цел ошибка аргумента включена: проц Л вешошибка аргумента включена =лог:
с истина, если при возникновении ситуации, для которой в качестве восстанавливающего действия задан вызов процедуры Д веш восстановление после ошибки аргумента <10.2.3.13}. реализация действительно выполняет такое действие; ложь а противном случае с;
проц лог L real argument error enabled = Д вещ ошибка аргумента включена;
w) проц ошибка присваивания включена =лог:
с истина, если при возникновении ситуации, для которой и качестве восстанавливающего действия задан вызов процедуры восстановление после ошибки присвамвшшя<5.2.1.2.bJ, реализация действительно выполняет такое действие: ложь в противном случае с;
проц лог assignment error enabled = ошибка присваивания включена;
npou ошибка границы включена "лог:
с истина, если при возникновении ситуации, для которой в качестве восстанавливающего действия задан вызов процедуры восстановление после ошибки границы <5.3.2 2 а}. реализация действительно выполняет такое действие; ложь в противном случае с;
проц лог bound error enabled = ошибка границы включена;
проц ошибка записи массива включена =лог:
с истина, если при возникновении ситуации, для которой в качестве восстанавливающего действия задан вызов процедуры восстановление после
272
ГОСТ 27975-88 G 29
ошибки записи массива {3.3.2.Ь}. реализация действительно выполняет таксе действие: ложь в противном случае с;
проц лог row display error enabled = ошибка записи массива включена;
проц ошибка псевдоимени включена =лог:
с истина, если при возникновении ситуации, для которой в качестве восстанавливающего действия задай вызов процедуры восстановление после ■ошибки пссвдоимени {5 2 !.2.Ь. 5.3.12.5.3.2.2 л. 6.2.2}. реали запив действительно выполняет такое действие;
ложь в противном случае с;
проц лог nil error enabled = ошибка пссвдоимени включена;
проц ошибка области действия включена = лог:
с котика, если при возникновении ситуации, для которой в качестве восстанавливающего действия задан вызов процедуры восстановления после ошибки области действия {3.2.2.а. 5.2.1 2.Ь; 5 43.2 Ь}. реализация действительно выполняет такое действие; ложь в противном случае с;
проц лог scope error enabled = ошибка области действия включена;
проц тупик включен -лог;
■с истина, если при возникновении ситуации, для которой в качестве восстанавливающего действия задан вызов процедуры восстановление .после тупика {10.2.4 d}. реализация действительно выполняет такое действие; ложь в противном случае с;
проц лог deadlock enabled = тупик включен;
проц исчерпание времени включено =лог:
с истина, если при возникновении ситуации, для которой в качестве восстанавливающего действия задан вызов процедуры восстановление после исчерпания времени <2.1.4.3.iK реализация действительно выполняет такое действие; ложь в противном случа с;
проц лог time eshaustion enabled = исчерпание времени включено.
проц исчерпание памяти включено =л or:
с истина, если при возникновении ситуации, для которой в качестве восстанавливающего действия задан вызов процедуры восстановление посте исчерпания памяти {2.1.4J.il, реализация действительно выполняет такое действие; ложь в противном случае с;
проц лог space exhaustion enabled ■ исчерпание памяти включено:
10.2.2. Стандартные виды соответствуют ГОСТ 27974.
I 0.2.3, Стандартные обозначения операций и функции 10-2.3.0- Стандартные приоритеты определены в ГОСТ 27974 10 2 3 1. Массивы и связанные с ними операции соответствуют ГОСТ 27974.
10.2.3.2. Операции лад логическими операндами определены в ГОСТ 27974.
10.2.3.3. Операции над целыми операндами определены в ГОСТ
27974,
с. 30 ГОСТ 27975-88
10.2 3.4. Операции над вещественными операнда ми определены в ГОСТ 27974.
10.2.3.5. Операции над арифметическими операндами определены в ГОСТ 27974.
10.2.3.6. Операции над литерными операндами определены в ГОСТ 27974
10.2.3.7. Операции над комплексными операндами определены в ГОСТ 27974.
10.2.3.8. Битовые и связанные с ними операции соответствуют ГОСТ 27974
10.2.3.9. Слотовые и связанные с ними операции соответствуют ГОСТ 27974.
10.2.3.10. Строковые и связанные с ними операции соответствуют ГОСТ 27974.
10.2.3.11:. Операции, соединенные с присваиваниями, соответствуют ГОСТ 27974.
10.2.3.12. Стандартные математические константы и функции соответствуют ГОСТ 2 7974.
10.2.313. Восстанавливающие действия для стандартных операций и функций.
Для случаев, когда операции и функции из и 10.2.3 не дают осмысленного результата, определяются восстанавливающие действия в виде вызовов процедур из 10.2.5-g.
Процедура Д цел восстановление после переполнения (Д веш восстановление после переполнения) вызывайся при неудаче, если ожидается, что аналогичное вычисление могло Бы быть успешным в другой реализации с большим значением Д макс цел (Д макс вещ) .
Процедура Д восстановление после потери значимости вызывается при неудаче, вызванной гем, что результат вида Д нет арифметической >лерацин с ненулевыми значениями операндов не может быть представим в форме, позволяющей определить, равен ли он нулю.
Процедура Д цел восстановление после ошибки аргумента (Д веш вос-лановление после ошибки аргумента) вызывается при неудаче со значе-тием {параметра}- х вида Д цел (Д вещ). Если .это значение было исполь-ювано в качестве значения фактического параметра или операнда и неу-сача связана с тем, что для этого значения результат не определен математически.
10.2.4. Операции синхронизации
Описания а, Ь, с, е соответствуют ГОСТ 27974.
d) он -К вниз, down ^ = (сема эдегер) пуст:
начало имя цел дейкстра ^F из эдсгер;
тюка прагм начало несовместимой части прагм
если дсйкстра > I то дейкстра - : e I; ложь иначе с пусть Р будет таким процессом, что исполнение данного псевдопримечания {16.1.3 Шаг 7} есть наследное действие этого Р. ко никакого другого процесса, наследного дли Р; данный процесс Р приостанавливается {2.1 4.3.ГК
ГОСТ 27975-88 С.Э1
«СДИ BW процессы, наследные для ообсгвснно-ирограммы, приостановлены таким образом и ни один из них не возобновлен, то- последующее исполнение не определено, а восстанавливающее действие определяется как вызов процедуры восстановление после туника { 10.2.5.п} с выдачей эдсгер’ {в качестве злачения параметра}с; истина
все
прагм конец несовместимой части прагм цк пропуск кц
конец;
10-2-5. Стандартные ситуации и восстанавливающие действия а} ситуация л уст Л цел переполнение.
пуст Д веш переполнение,
пуст Д потеря значимости,
ситуация (Д цел) дуст Д цел ошибка аргумента, ситуация (Д веш) пуст Д вещ ошибка аргумента;
ситуация пусг L int overflow,
пуст L real -overflow,
пуст L underflow,
ситуация (Дцел) пуст L argument error.
ситуация (Двсш) uycrLreal argument error;
присит L int overflow: пуст: возбуд Д цел переполнение, L real overflow: пуст: возбуд Л вещ переполнение. L underflow: пуст: возбуд Д потеря значимости, L int argument error:
(Д цел а) пуст: возбуд Д цел ошибка аргумента (а).
L real argument error:
(Д веш а) пуст: возбуд Д веш ошибка аргумента (а);
Ь) ситуация (цел) пуст ошибка присваивания, ситуация (цел, имя дел) пуст ошибка границы, ситуация пустошибка записи массива, пустошибка псевдоимени.
. пуст ошибка области действия.
ситуация (сема) пуст тупик, ситуация пуст общая ситуация; ситуация (цел) пуст assignment error, ситуация (цел. имя цел) пусг bound error, ситуация пуст row display error.
пуст nil error,
пуст scope error, ситуация (сема) пуст deadlock, ситуация пуст general except ion;
275
С.32 ГОСТ 27975 -58
присяг assignment error:
(«ел а) шуст: возбуд ошибка присваивания (а),
bound error: (цел а. имя цел Ъ) nver: возбуд ошибка граниты (а. М .
row display error: пуст: возбуд ошибка записи массива.
nil error: пуст: возбулошибка п-севлоимени.
scope -error: пускнозбуу ошибка области действия.
deadlock: (сема s| пуст: возбуд тупик (s).
general exception: пуст: возбудобитая ситуация:
{Ситуация-общая ситуация возбуждается, если не найдена процедура реакции .тля некоторой возбужденной ситуации }
с) ситуация пуст исчерпание времени.
пуст исчерпание памяти, пуст окончание, пуст ? немедленное окончание: ситуация пуст time exhaustion;-
присит time exhaus tion: пуст: возбуд исчерпание времени :
ситуация пуст space exhaustion;
присяг space exhaustion: пуст: возбуд исчерпание памяти;
ситуация пуст termination:
присяг termination: шуст: возбуд окончание;
{Ситуация окончание возбуждается в случаях неисправимых ошибок дня того, чтобы дап программисту возможность обесточить необходимые зя верша тощие действия, определяя реакцию на згу ситуацию в некотором окружении. Однако предполагается, что исполнение этой реакция закончится тем, что то же самое исключение будет возбуждено вновь, чтобы обеспечить завершающие действия в старших окружениях }
d) вид* имя массива = с фактический-описатель, специфицирующий вид. объединенный из <2.1.3.6.з> достаточного набора видов, каждый из которых начинается с имя массива' или имя подвижного массива* с;
е) ситуация массив образец массива.
массив образец получателя.
ситуация | J массив список образцов массива.
ситуация (имя массива) лог вырезано из,
ситуация цел размерность.
ситуация ло-г это- имя;
ситуация массив row specimen.
массив -destination specimen.
ситуация [ ) массив row specimen list, ситуация (имя массива) лог issliceof. ситуация цел dimension,
ситуация лог is name;
276
ГОСТ 27975-88 С. И
присит row specimen: массив: возбуд образец массива, destination specimen, массив: во збул образец получателя, row specimen list: [ J массив: возбуд список образцов- массива, is slice of: (имя массива а) лог: возбул вырезано из (а), dimension: цел: возбуя размерность.
is name: лог: возбуд это имя;
(Эти ситуации используются в некоторых процедурах восстановления для други х ситуаций.}
f) проц закончить кпуст:
(с некоторое системное действие, помогающее илентифицироии» текущее окружение с:
возбуд окончите:
возбуд немедленное окончание):
проц пуст terminate закончит*.:
g) ирон *-Д цел восстановление после переполнения =пуст:
(возбудД цел переполнение; закончить.),
®-Д Лщ восстановление после переполнения =nyci:
(возбул Л веш переполнение: закончить),
“- Л восстановление после потери значимости «пуст: (•озбудД потеря значимости; закончить).
5-Д цел восстановление после ошибки аргумента = пуст: (возбуя Д цел ошибка аргумента: закончить).
*- Д веш. восстановление после ошибки аргумента ® пусг: (возбуя Д веш ошибка аргумента; закончить);
h) проц ^восстановление после ошибки присваивания = (имямассивз получатель, массив источник, цел n. i) пуст:
(приситобразец получателя:массив:
с некоторый массив, паспорт которого идентичен паспорту значения, именуемого именем, выдаваемым идентификатором получатель’ с.
образец массива.массив:
с некоторый массив. паспорт которого идентичен паспорту значения, выдаваемг-ю идентификатором источник' с,
вырезано из: (имямассива г г), лог: если с имя, выдаваемое идентификатором ‘г г\
не было сгенерировано {2-1.3.4j, 1} из другого имени с
то с истина, если любое подыми имени, выдаваемого идеи -гифитсатором получатель', является тюдыменем имени, выдаваемого идентификатором г г', или же может быть получено из такого лодымени в результате выполнения одной или нескольких последовательных операции выборки по‘СЛОВУ’ <2-13.3.е}: ложь в противном случае с
иначе пропуск все.
217
С. 34 ГОСТ 27975-88
размерность цел: п;
возбуд ошибка присваивания (i);
закончить};
i) проц ^восстановление после ошибки границы =
(массив значение, цел n. i. граница) пуст:
(приситобразец массива: массив:
с некоторый массив, паспорт которого идентичен паспорту значения, выдаваемого идентификатором 'значение' С-
вырезано из: (имямассива гг) лог: пропуск, размерность-: цел: п.
это имя: лог: ложь;
цел b: = граница;
возбуд ошибка границы (i, b);
Ь);
j) проц*восстановление после ошибки границы имени = (имямассмва имя, цел п, а. граница) пуст:
(присит образец массива: массив:
с некоторый массив, паспорт которого идентичен паспорту значения, именуемого именем, выдаваемым идентификатором 'имя' с,
вырезано из: (имямассива тг) лог:
если с имя, выдаваемое идентификатором 'гг', нс было сгенерировано {2.1.3.4. j. I} из другою имени с
то с истина, если любое полымя имени, выдаваемого идентификатором имя', является подыменем имени. выдаваемого идентификатором 'г г’, или же может быть получен» из такого лодымены в результате выполнения одной или нескольких последовательных операций выборки по 'СЛОВУ' <2-1.3.3 .с?;
ложь в противном случае с
иначе пропуск
все.
размерность: цел: п. это имя: пог: истина;
цел Ь: = граница;
возбуд ошибка границы (1. Ь);
Ь);
к) проц* восстановление после ошибки записи массива * ( [ ] массив образец,цел п) пуст:
(присяг список образцов массива: [ J массив: образец, размерность: цел: п;
возбуд ошибка записи массива;
закончить);
278
ГОСТ 27975-88 С. 35
I) проц ^восстановление после ошибки пссвдонменк = пуст: (возбудошибка псевдоимени; закончить);
т) проц*’восстановление после ошибки области действия пусг возбуд-ошибка области действия: закончить);
п) проц ^восстановление после тупика =
Сеема s) пуст: (воэбул тупик (s): закончить):
о) ситуация л or-«-рекурсия обшей ситуации; {см. 10-5Л.11 проц «восстановление после общей ситуации = пуст: если рекурсия обшей ситуации
то возбуд немедленное окончание
иначе присяг рекурсия обшей ситуации : ног: истина: закончить
все:
р) проц «восстановление после исчерпания времени ” пуст: (возбуд исчерпание времени. закончить).
q) проц «восста новление после исчерпания памяти = пуст: (возбуд исчерпание памяти: закончить);
10.3. Описания обмена
Прагматическое замечание соответствует ГОСТ 27974
10- 3.1. Книгу, каналы и файлы
Прагматическое замечание соответствует ГОСТ 27974.
10-3-1-1. Книги и связки определены в ГОСТ 27974.
10.3 1-2 Канады определены в ГОСТ 27974.
10.3 1.3 Файлы.
Прагматические замечания аз. ЬЪ. dd. ее, ff, gg. hh соответствуют ГОСТ 27974.
{сс) Файл включает некоторые „.процедуры обработки события"', вызываемые. когда во время обмена возникают определенные условия. По умолчанию предусматривается, что после открытия файла ли процедуры обработки события вырабатывают ложь, когда они вызываются, но программист может предусмотреть и другие процедуры обработки события. Поскольку соответствующие поля файла не доступны прямо для пользователя.. процедуры обработки события можно изменять с помощью „лроис-дур рсак1щи"й,тп..о. р.ял!. Процедуры обработки со были я всегда чудаки в качестве параметра имя своего файла. Если исполнение процедуры обработки -события прекращается, то вызвавшая ее процедура обмена не может действовать дальше: в противном случае, если она вырабатывает истину, прештолагается.что данное условие было некоторым образом исправлено, и, если возможно, обмен продолжается, но, если процедура реакции вырабатывает ложь, то предпринимается еще одна попытка восстановления путем возбуждения соответствующей ситуации Эго приводит к вызову сите одной процедуры, аналогичной по назначению процедуре реакции, но связанной ■ текущим окружением, а не с данным файлом. Если же и зга процедура ны рабатывш ЛОЖЬ, система продолжает работу, предпринимая действия lt<-умолчанию Процедуры реакции таковы:
С 36 ГОСТ 27^75 -84
• при конце лог файла. Соотиегствующая процедура обработки события вызывается, когда в ходе ввода или в результате вызова установить достигается логический конец соответствующей книги (см. 10.3.1.6-dd).
Пример:
Программист хочет знать количество целых чисел на входной ленте.
Файл лента вводи был отк рыт во внешнем блоке.
Если ом напишет
начато цел п: =0;
при конце пог файла (лента ввода, (имя файл файл) лог: на f);
цк ввод (лента ввода, пок цел ); п * : = 1 кд;
f: кеч (п) конец,
то такое присваивание соответствующему геол» из файла лента ввода нарушит ограничения на области действия, поскольку область действия процедуры (имя файл файл) лог: на f меньше облает действия файла лента ввода. Поэтому ему следует написать
начало цел п: =0; файл вспомог: = лента ввода;
при конце лог файла (вспомог, (имя файл файл) лог: на f);
цк ввод (вспомог, лог цел) ; п + : » 1 кц;
f: печ (п) конец.
• при конце физ файла. Соответствующая процедуре обработки события называется, когда текущий номер страницы данного файла превышает число страниц в соот иегств у няней книге, а обмен пытаются продолжить (см. 10.3. l.6.dd).
• при конце страницы Соответствующая процедура обработки события вызывается, когда текущий номер строчки данною файла превышает число строчек на текущей странице, а обмен пытаются продолжить (см. 10-3.l-6.dd).
• при конце строчки. Соответствующая процедура обработки события вызывается, когда текущий номер литеры данного файла превышает число литер в текущей строчке, а обмен пытаются продолжить (см. IO.3 l.6dd}.
Пример:
Программист хочет, чтобы на начале каждой страницы его файла f автоматически печатался заголовок:
при котте страницы (f, (имя файл файл) лог:
(вывод (файл, (нов страница, "стр." целое (1 + :в 1,0). нов строчка)); истина)
^ предполагается, что i было где-то описано ^)
• при ошибке литеры. Соответствующая процедура обработки события вызывается, когда перекодирование некоторой литеры не было успеш
но
ГОСТ 27975-88 С. 37
ным или когда в ходе ввода читается не ..ожидаемая" (10.3.4.1.11) литера. Эта процедура обработки события вызывается е именем литеры, предлагаемой в качестве замены. Процедура обработки события, задаваемая программистом, может присваивать литеру, отличную от предлагаемой. Если данная процедура обработки события вырабатывает истина, то используется зта предлагаемая литера с возможным ее изменением.
Пример:
Программист хочет читать суммы денег, отперфориронаииые в форме ”$123.45". ’1$23.45м.*л-#3.45”и т д.:
при ошибке литеры (аанц ввод, (имя файл f, имя лит пред) лог:
если пред-’О”
то лиг с; назад (f); ввод (f. с) ;
(с • *'$” 1ввод Cf. пред}; истина I ложь) иначе ложь все);
цел центы; ф хит ((ф Зг". ” dd ф, центы)).
при ошибке значения. Соответствующая процедура обработки события вызывается, когда:
(т) в ходе форматного обмена делается попытка обмена какого-нибудь значения под контролем некоторого „шаблона", с которым оно несовместимо, или когда число „рамок” недостаточно. Если зга процедура вырабатывает истина, го текущие значение и шаблон пропускаются и обмен продолжается; если же процедура вырабатывает ложь, то вызывается нс определено, перед которым при выводе выводится значение при помощи процедуры вывод;
(ii) в ходе ввода оказывается -невозможным преобразовать строку в значение некоторого данного вила (это может случиться, например, при попытке прочитать целое число, большее, чем макс цел (10.2.1л)).
• при конце формата. Соответствующая процедура обработки события вызывается, когда в ходе форматного обмена формат исчерпывается, в го время как еще остается некоторое значение, подлежащее обмену. Если данная процедура вырабатывает истина, то в случае когда она не обеспечила нового формата для этого файла, вызывается нс определено, а иначе повторяется текущий формат.
Описания а. b, с, d, е. f. g, h, i, j. k, 1, m, n, o, p, q, r, s соответствуют ГОСТ 27974;
t) ситуация (имя файл) лог конец лот файла, (имя файл) лог конец физ файла, (имя файл) лог конец страницы, (имя файл) лог конец строчки, (имя файл) лог конец формата, (имяфайл) логошибка значения, ситуация (имя файл, имя лиг) лог ошибка литеры;
281
С. Зв ГОСТ 2 7975 -вЯ
ситуация (имя фай») лог logical file end, (н.мл файл) лог physical file end, (имя файл) лог page end.
(имя файл ) лог line end.
(имя файл) лея format end, (имя файл) лог value error, ситуация (имя файл, имя лиг) йог char error; присяг logical Hie end
(имя файл 0 лог: возбуд конец лог файла (Г), physical file end:
(имя файл f) лог: возбуд конец физ файла (f), page end:
(имя файл 0 лог: возбуд конец страницы (0.
line end:
(имя файл f) лог: возбуд конец строчки (0„ formal end:
(имя файл 0 лог: возбуд конец формата (f) , value error :
(имя файл f) лог: возбуд ошибка значении (0„ char error:
(имя файл f, имя лит с) лог: возбул ошибка литеры (Г, с); и) проц 5-конец лог -файла исправлен = {имя файл О лог:
сан (испр лог файл из f) (0 то истине
иначе возбуд конец лог файла (f) все;
проц5 конец физ файла исправлен = (имя файл f) лог:
если (испр физ файл из Г) (0 то истина
иначе возбуд конец физ файла (0 все:
проц*-конец страницы исправлен = (имя файл f) лог:
если (искр страница из f) (f) то- истина
иначе возбул конец страницы (0
все:
прощ^коиец строчки неправлен —(имя файл f) лог:
соли (нспр строчка из f) (f) го истина
иначе иозбуд коней строчки (1) все;
проц-5 конец формата исправлен - (имя файл 0 лог:
если (испр формат из Г) (f) го истина
иначе возбул конец формата (f) все;
проц «-ошибка значения исправлена - (имя файл f) лог:
если (испр-ошибка значения из f) (0 то истина има*к возбуд мпгибкз значения (f)
все;
2*2
ГОСТ 27975-88 С. 39
проц «-ошибка литеры исправлена = (имя файл f, имя лит 0 лог: если (испр ошибка литеры из f) (f, с). то истина иначе возбуд ошибка ликеры (f,c)
все:
10.3.1.4. Открытие и закрытие файлов соответствуют ГОСТ 27974.
10.3.1.5. Запросы позиции соответствуют ГОСТ 27974.
10.3.1.6. Процедуры расположения.
Прагматические замерший и описания а, b, с, d, h, j, к, соответствуют ГОСТ 27974.
е) проц веерочка хороша = (имя файл Слог чтение) лог:
начало лог не оконч;
пока не оконч: “страница хороша (f, чтение);
строчка окончена (f) д не оконч
цк ( -. конец строчки исправлен (f) Iнастроить (f. чтение); ков строчка (О) кц;
не оконч
коне”;
f) проц «-страница хороша = (имя файл f, лог чтение) лог:
начало лог не оконч;
пока не оконч: =файя хорош (f, чтение) ;
страница окончена (Г) Д ле оконч
цк ( - конец страницы исправлен (f) (настроить (f, чтение); нов страница (f)) кц;
не оконч
коней;
g) проц «-файл хорош * (имя файл f, лог чтение) лог:
начало лог нс оконч: = истина;
пока настроить (f, чтение);
не оконч Д
(чтение лог (файл оконч I физ файл окончен) (f)
цк не оконч: = (чтение I конец лог файла исправлен I конец физ файла исправлен) (Г) кц;
не оконч
конец;
i) проц установить = (имя файл Спел р, 1 с) пуст:
если -п открыт из f V
— возм установка (f) то не определено
иначе лог чтение = (для чтения из f I истина
I : для записи из f I ложа. 1 нс определено;
пропуск);
имя позиция тпоз = тпоз из f.
лпоз = запоя п из книга из f;
позиция раб тпоз = тпоз;
если (тпоз: = (р. ].с)) вне штоз
то тпоз: = ппоз;
(-* конец лог файла неправлен (f) I не определено);
283
С. 40 ГОСТ 27975-^8
настроить (Г. чтение)
инее позиция границы = границы книги (Г);
p<lVp>p и-з границы + I V
I < I V I > i из границы + I V
«<1уе>с из границы ♦ I то тпоз. = раб 1)103: не определено нее
в ее:
проц (имяфайл, цел.до,иел) пуст set = устэновшь;
10 3.2- Значения для обмена соответствуют ГОСТ 27974.
10.3.3- Бесформатный обмен
{При бесформатном обмене элементы „списка данных” обмениваются один за другим через заданный файл. Каждый меменг этого списка данных является либо процедурой расположения, вил которой специфицируется проц (имя файл) пуст (10 3.1 6). либо значением вица, специфицируемого посредством выводимое (при выводе) или вводимое (при вводе). Когда процедура расположения встречается в списке данных, она вызывается с заданным файлом в качестве параметра. Другие значения в списке данных сначала выстраиваются (10.3.2.3), а затем результирующие значения одно за другим обмениваются через заданный файл.
Обычно обмен происходит на текущей позиции, но саги (при выводе) недостаточно места & текущей строчке или (при вводе) на текущей позиции нет читаемого значения, то сначала вызывается процедура конец строчки исправлен (или. где это целесообразно, конец страницы исправлен, конец физ файла исправлен и .и консцлОг файла исправлен) ,з затем, если она вырабатывает ложь, и данной книге ищется следующая „хорошая" позиция литеры, а именно верная позиция литеры в следующей непустой строчке.)
10 3.3 I. Бесформатный вывод.
Прагматические замечания и описание с соответствуют ГОСТ 27974 a) upon вывод = (имя файл Г,
[ ] об (выводимое, пром (имя файл) пуст) х) пуст:
если открыт из f то
для г до вегр х
ЦК &ыб Hici роигь на запись (f); настроить на литерное (П: х [i| в (проц (имя файл) пусть пиф) : пнф (Г), (выводимое выв): начало
| | провыв-ол у = стройны вод выв;
^ проиДпреоб (i разо.вание ^вещ = (Д веш г) строк плав (г. Д разрядное ть вещ ■+ Л разрядность
порядка + 4. Д разрядность веш - 1, Д разрядность порядка т])'>;
для j до вегр у цквыбу [j] в (об (чи ело.< Д комля >) чиском): начало строк s: = выб чиском в
284
ГОСТ 2 7975-88 С. 41
• st (Л пел к): целое (к. Л разрядность цел + I) >,
•/ (Л веш г): Я преоб лею (г) £,
•К (Л komiui w): Д преоб вещ (вч w) ■♦ "-
. * Д преоб вещ (мч ■*) £
быв;
имя имени позициятпод = гпоз из f шея п = вегр s:
пока
след позиция i f);
г (п> с из границы книги (f) 1 не определено):
с из тпоз * (с из т ноз ■* I I п1 п + 1) > с из границы книги (f) * I
ж ( ч конец строчки исправлен (f) I вывод (f. нов строчка));
настроил- на запись (if) кц:
(с из тпоз? I I "4" припь);
для knoaerps цк вывести литеру (С, s [kj) ku
конец ^ вывода чисел rt
(лог Ь): (след позиции (f);
вывести литеру (f, (b I дз '(нет))), (t (Л бит лбит) ;
для к до Д размер бит
ик вывод (f. (Д F из дбиг) |к|) кц ^,
(лит к): (след позиция (f) ; вывести литеру (f, к) )
(| ] лит стр) :
для к от нигр стр до вегр cip
цк след позиция (f)-, вывести литеру
(Гетр [к|) кд
быв кц конец быв- кн
иначе не определено все:
проц (имя файл, ( J об (выводимое, проц (имя файл) пуст)) пуст риг = вывод;
Ь) проц а. вывести литеру = (имя файл f, лит лит) пуст: если открыт из f Л -, строчка окончена (Г) то имя позиция г тюз =т лоз из f, п поз = за пол и из книга из f; настроить на литерное (f); натром г ь на запись (Г);
имя цел р = риз гпоз, 1Г1 из г поз. с’с из т поз;
лм1 к: лот есть: ^ложь; вы® текст из f в
(текст): (к: =лит; есть: = истина),
(политеист):
для i до вегр F из код из f пока. -, есть
285
С. *2 ГОСТ 27975-88
Ик ст (лигвнутр,внеши) табл = (F из код из f) [ij;
(внутр ИЗ табл =ЛИТ IR: =внещн из табл;
есть: = истина)
к и
быв;
если есть го
выб текст из f в
(текст t I) : tl (pj [1] [с] : = k.
(податекст t2): t2 [pj [I] |c]:=k
быв;
c + : =1;
если т «оз вне ппоз то л поз: =тпоз
инее-v возм установка (f) I/
позиция (ризппоз,I из ппоз, I) вне i поз
то п поз: - тпоз;
(сжимаем (f) I
с размер строчки и страницы, содержащей логический размер данной книги» и всех последующих строчек и страниц может увеличиться {например, до размеров,с которыми книга была заведена (10.3.1 4.сс) первоначально, или до размеров, предполагаемых из макс позиция из кан из f} с)
все
иначе к; = "■*■" ;
если -) ошибка литеры йен равлена (Г, к) то не определено; к: =“* ”
все:
проверить позицию (0; вывести литеру (f. к)
все
иначе не определено
вес ^ настройка на запись сохраняется X;
10.3.3.2. Бесформатный ввод
Прагматические замечания аз. hb. сс, dd, ее, ff, gg, соответствуют ГОСТ 27974
{hh) Если вид этого N специфицируется посредством имя строк, то литеры читаются до тех пор,
(i) пока не встретится литера, содержащаяся в строке, присоединенной к данному файлу вызовом процедуры задать сголстроку,
(ii) либо пока не исчерпается текущая строчка, вследствие чего вызывается процедура конец строчки исправлен (или, где это целесообразно. конец страницы исправлен, коней физ файла исправлен или конец лот файла исправлен); если данная процедура обработки события продвигает текущую позицию к хорошей позиции (см. 10.3.3) , го ввод литер возобновляется.
Строка, состоящая из введенных литер, присваивается N (отметим, что если текущая строчка была исчерпана либо текущая позиция была на начале пустой строчки или вне логического файла, то этому N присваивается пустая строка).?
236
ГОСТ 27975 -88 с. 4 3
а> проц ввод = (имя файл f,
( ) об (вводимое, проц (имя файл) пуст) х) пуст:
если открыт ИЗ f, ГО
для i до негр х
цк выб настроить на чтение (f): настроить на литерное (f);
х [>J в
(проц (имя файл ) пуст лиф): пиф (f) ,
(вводимое ив):
начало
(] проввод у =стройввод вв; лиг к; логклусто;
ол? = (строк s) лог:
^ вырабатываем истина» если следующая литера, когда она есть» в текущей строчке содержится в ‘s' (эта литера присваивается ’к ), а иначе ложь /
если к пусто Л (строчка окончена (0V лог файл окончен (f)) то ложь
иначе (кпусто Iввести литеру (f, к});
к пусто: и литера в строке (к. лок цел. $)
все:
on? = (лиг с) лог : ? строк (с);
прис! “8;
оп! = (строк s. лит с) лиг:
^ запрашивает литеру, содержащуюся в s‘; если читается литера, не входящая в 's , вызывается процедура обработки -отбытия, соответствующая ’при ошибке литеры', с предлагаемой литером с’- И
если ( к пусто I проверить позицию (f);
ввести литеру (f, к));
к пусто: = истина;
литера в строке (к. лок дел. s)
го к
иначе лит предл: = с;
если ошибка литеры исправлена (Г. предл) то-
(литера в строке (предл, лок цел, s)
Предл! не определено; с)
иначе не определено; с
все;
настроить на чтение (f)
все;
оп! = (лит s, с) лит: строк (s) !с;
процпроп^уск |( нач |( альных ^ пробелов = пуст:
тюка (к пусто Iслед позиция (f)); ?”♦."
цк пропуск кц;
проц л pan ](у<ж ^ пробелов • пуст:
пока ? "Г” цк пропуск кц;
28?
С. 44 ГОСТ 17975-88
Проц чит / ать 0 циф /ры / ~строк:
(строк t: -"01 23456789" ! "О” ;
пока ? "0123456759” ИК К плюспр к кц; t);
npou чит знак =лит:
(лит t = (прол пробелов: ?” + — " Л1 " + ”);
проп пробелов: t);
проц чит чис X ло /- строк;
(лит t =чит знак; t + чит циф);
процчит вещ/ ественное / = строк: *
(строк С: =чмт знак;
( - 11 плюспр чит циф I к пусто-: ^ ложь);
(?” ч t плюспр".” + чит циф);
(?'"aV"*1 ПШОСПР + читчис); I);
для j до вегр у
цк лог некоим / ено /: = ложь; к пусто: = истина;
выб у [JJ в
< (имя Д цел мда):
(проп нач пробелов;
не конч: = -» строку в Л цел (чит чис, 10, иди)> £.
^ (имя Д вещ иди):
(upon нач пробелов;
не конч: = —.строку в Д вещ (чит вещ, идв) ) ^.
< (имя Д компл ник) :
(проп И9Ч пробелов;
не конч = -.строку в Д вещ (чит нет, ивчидк);
проп пробелов; ?i и 1” ’"Г; не конч: = не конч V
-. строку в Д вещ (чит вещ, имч идк)) ^,
(имя лог ил):
(проп нач пробелов;
ил: = (ла +• нет) • нет = да),
< (имя Д бит идб) :
для i до Д размер бит
цк ввод (f. (ДР из изб) И) кц ^,
(имя лит ил) : (след позиция (f); ввести литеру (Г.ил)).
(имя (| лит имя) : для i от нитр имл до вегр имя цк след позиция (О; ввести литеру (Г. имя [i]) кц;
(имя строк ис):
начало строк t;
тюка проверить позицию (f) ;
если стрс>чка окончена (f) V лог файл окончен (f) го ложь
иначе ввести л .перу (I*. к);
к пусто: =-| литера в строке (к, лок цел, стопе из О все
288
ГОСГ 2797 5-«8 С.45
ик ( плюсстр к кц;
ис: =t конец быв;
(-, к пусто I назад (f));
если нс конч
то ( -, ошибка значения исправлена (f) J не определено); настроил» на чтение (О
все
кц
конец
быв кд
иначе не определено
все:
проц (имя -файл, [ ] об (вводимое, проц (имя файл) пуст)) пуст gel = ввод;
Ь) проц-? ввести литеру = (имя файл f, имя лнт лит) пуст: если открыт из f Д -, строчка окончена (Г) Д -, лог файл окончен (f) то имя позиция тпоз * птоз из f;
настроить на литерное (Г); настроить на чтение (f);
цел р = р нз т поз, I = j иэ тпоз. с = с из т поз;
с из т поз + : = 1;
лит: = выб текст из fa
(текст 11) : 11 [р] [1] [с], (подв текст t 2):
(литк:=т2 (р] [I] (с);
лог есть: =ложь;
для i до вегр F из код из f пока -» есть
цк ст (лит внутр, внеши) табл ■ (F из код 4из Г) [i ] (внеши из табл = k I к : = в нутрь из табл;
есть: ■ истина)
цк;
если есть то к
иначе к: = "к”;
если ошибка литеры исп ра влена (f, к) то к
иначе не определено; ”^"
все;
настроить на чтение (О
все) быв
иначе не определено
все ^ настройка на чтение сохраняется (;
с) проц 3-проверить позицию = (имя файд 0 пуст: начало лог чтение = для чтения из f;
лог не окончено: «истина;
10~ 1361 289
€. 46 FOCI 27975-8»
пока не окончено: =ие окончено Д страница хороша (f, чтение) строчка окончена {0 Д не окончено
цк нс окончено: »= конец строчки исправлен (0 кц конец;
Прагматическое замечание соответствует ГОСТ 27974.
10 3.4. Тексты фор.чага
Прагматическое замечание соответствует ГОСТ 27974.
1 0 3.4.1. Наборы и шаблоны.
I 0-3.4.1.1. Синтаксис.
Прагматическое замечание, метаправила А, В„С, D, Е, F, G, Н. I. J.K.L, М. N, О. Р; гинерправила а.Ъ. с. d. е. f. £.1», i, j.k.i.m.n.o и разъяснения аа. bb.cc.dd, ее. ff. jj, kk. соответствуют ГОСТ 27974.
■Cgg.) Формат может состоять из последовательности шаблонов, каждый кз которых выбирается по очереди посредством взять след шаблон (10.3.5.Ь). В дополнение к этому некоторое множество шаблонов можно сгруппировать вместе и образовать повторяемый „набор” (который сам может содержать подобные наборы) . Когда выбирается последний шаблон набора, снова выбирается сто- первый шаблон и л. д., пока весь этот наборие повторится h раз, где п - целое число, вырабатываемое ею повторителем. Набор можно снабди гь двумя вставками, первая из которых осуществляется перед набором, а вторая - после него.
Формат может также вызывать другие форматы с помощью трафаретов 'форматного' (10.3,4.9.1).
Когда формат исчерпывается, вызывается процедура конец формата исправлен . если она вырабатывает ложь, то данный форма т повторяется, а иначе, если только эта процедура обработки события нс может обеспечить новый формат, вызывается нс определено.
hh) Значение V выводится с помощью шаблона Р следующим образом: Если трафарет Q этого Р есть трафарет ’выбора' или 'бесформатного', то^ выводится с помощью Р (см. 10.3.4.8.1. аа, dd. IO-3.4-l.aa), а иначе V выводится так:
• Р подготавливается.
Если вид этого V „совместим по выводу” с Q то .
• V преобразуется в строку, управляемую (did) этим Q
Если данный вид не сонметим по выводу или если это преобразование не баяло успешным, то
• вызывается процедура ошибка значения исправлена;
• если она вырабатывает ложь. V выводится с помощью процедуры вывод и вызывается не определено’.
з иначе данная строка „редактируется” (jj) с помощью трафарета Q;
290
ГОСТ 27975-88 С. 47
• осуществляется вставка из Р.
ii) Значение вводится в имя N с помощью шаблона Р следующим образом:
Если трафарет 0 лого Р есть трафарег 'выбора' или бесформатного , • то значение вводится в Nc помощью? (см. 10 3.4 8.1 .bb.ee. 10.3 4.10.Lbb);
з иначе
• Р подготавливается;
• ..составляется’' строка, управляемая Q (kk).
Если вид этого N ..совместим по вводу" с Q (см. соответствующий раздел).
► • данная строка преобразуется с помощью Q в подходящее для N значе
ние;
• если эго преобразование было успешным, данное значение при с ваивл* г сзсл N.
Если данный вид нс совместим по вводу или если это преобразование не было успешным,
то
• вызывается процедура ошибка значения исправлена;.
.• если она вырабатывает ложь, вызывается яс определено:
• осуществляется вставка из Р.
11) Элемент множества литер S „ожидается" с предлагаемой литерой С следующим образом:
• читается некоторая литера;
если это одна из ожидаемых литер (г. е. принадлежит множеству S). то она подастся.
а иначе вызывается процедура ошибка литеры исправлена с предлагаемой литерой С; если эта процедура вырабатывает истина, а (возможно, измененная) литера С есть одна из ожидаемых литер, то подается С, а иначе вызывается не определено .}
10.3.4.1.2. Семантика соответствует ГОСТ 27974.
10.3.4.2- Трафареты целого соответствуют ГОСТ 27974.
10-3.4.3. Трафареты вещественного еоотвстствут ГОСТ 27974.
10.3.4.4. Трафареты логического соответствуют ГОСТ 27974.
10.3.4.5. Трафареты комплексного соответствуют ГОСТ 27974.
10.3.4.6. Трафареты ст рокового соогвегслуют ГОСТ 27974.
10.3.4.7. Трафареты битового соответствуют ГОСТ 27974.
10.3.4.8. Трафареты выбора.
1 0.3.4.8.1. Синтаксис.
Гиперправила а. Ь, с соответствуют ГОСТ 27974.
€аа) Значение V выводится с помощью шаблона Р, трафарет которого Обыл выдан траф-аретом-нелого-выборч С, следующим образом.
• подготавливается (10.3.4.1.l.dd) н осуществляется (10.3.4.1.1 се) вставка из Q;
Если вид значения V специфицируется посредством цел, а У>0,иесли число составляющих литералов в упакованном-списке-поясняемых-лм-тералов этого С не меньшв V.
10*
291
с. 48 ГОСТ 27975-88
• подготавливается и осуществляется литерал. выдаваемый V -м из □тих витеритов: а иначе
• вызывается процедура ошибка значения исправлена;
• если она вырабатывав г ложь. V выводится с помощью вывод и вызы-кается не определено;
• подготавливается л осуществляется вставка из Р
bb) Значение вводится в нмя N с помощью шаблоны Р. трафарет которого Q был выдан трафаретсм-целого-выбора С, следующим образом:
• подготавливается и осуществляется вставка из Q;
• по очереди подготавливается и .„отыскивается” (се) каждый. из литералов. выдаваемых составляющими литералам! упаковапного-спискз-пояс-няемых-лмтералов лого С:
Если вид этого N специфицируется посредством имя цел и i-й литерал окажется первым из искомых,
io i присваивается N; а иначе
• вызывается процедура ошибка значения исправлена;
• если она вырабатывает ложь, вызывается нс определено;
• подготавливается и осуществляется вставка из Р
ос) Разъяснение соответствует ГОСТ 27974.
dd) Значение V выводится с помощью шаблона Р, трафарет Qкоторого был выдаЛ трафарстоМ-ЛОгИЧеСкОГО-ВЫбора С. Следующим gJfMMM:
• подготавливается и осуществляется вставка из Q;
Если вид этого V специфицируется посредством лог. ю
• если V - истина (ложь), подготавливается и осуществляется литерал, выдаваемый первым (вторым) составляющим литералом из С;
а иначе
• вызывается процедура ошибка значения исправлена;
• если она вырабатывает ложь, V выводится с помощью выводи вызывается не определено;
• подготавливается ц осуществляется вставка из Р.
ее) Значение вводится в имя N с помощью шаблона Р, трафарет Q которого был выдан трафаретюм-логического-выбора С, следующим образом: • подготавливается и осуществляется вставка из Q:
• по очереди подготавливается и отыскивается каждый из литералов, выдаваемых составляющими литералами из С;
Если вид этого- N специфицируется посредством имя лог и первый (второй) литерал окажется искомым, а иначе
• вызывается процедура ошибка значения исправлена;
• если она вырабатывает ложь, вызывается нс определено;
• по-дгота вливается и осуществляется вставка из P'J
10.3 4.8.2. Семантика соответствует ГОСТ 27974.
292
ГОСТ 2 797 5-8 8 С. 4 9
10.3.4.9. Трафареты форматного соответствуют ГОСТ 27974
10.3.4.10. Трафареты бесформатно! о.
10.3-4-10.1 - Син таксис.
Гинерпранила a. b. с. d соответствуют ГОСТ 27974
{аа) Значение V выводится с помощью шаблона Р, трафарет О которого был выдан графаретом-бесформатного G. следующим образом:
• Р подготавливается;
•■ осуществляется вставка из О;
Если Que параметризован (т е. нс содержит задания-разрядности), то V выводится с помощью вывод;
л иначе, если вид этого V специфицируется посредством Д пел или Д веш,
то
• если 0 содержит один (два, три) параметр (а,ов), V преобразуется в строку с помощью целое (фикс, плав);
• эта строка записывается с помощью вывод;
а иначе
• вызывается процедура ошибка значения исправлена;
• если она вырабатывает ложь, V выводится с помощью вывод и вызывается не определено;
• осуществляется вставка из Р.
ЬЬ) Разъяснение соответствует ГОСТ 27974.
10-3 4.10-2 Семантика соответствует ГОСТ 27974.
10 3.5. Форматный обмен
Описания а. с. d. е. f. g. j. k соответсгвуют ГОСТ 27974.
Ь) проц i взять след X ующим X шаблон = (имя файл f. лог чит X ать X-имя шаблон шаблон) пуст:
начало
лот-есть шаблон: ’’ложь. формато-кончен: "ложь;
пока -. есть шаблон
цк если ук Xазатель X фор рг мата X из t = 0, то
если формат окончен
го нс о пределено
инее — конец формата исправлен (f)
то имя цел (укфориз 0 : =1;
ути из (F из формат из 0 |l|: с I;
•счет мз (F из формат из 0 (1 ] : « I;
иначе формат окончен : = истина
все
иначе
имя цел ухфор =укфор из f;
имя подв [ 3 кадр алеф = F из формат из f;
выб (н из алеф (укфор]) (ути из алеф [укфор]] в (пакет пак):
((1 : негр (в I из лак) | подвегавка пв;
оуккзалсф (удк из пак ]:= укфор; укфор: = пропуск;
(подготовить вставку (в 1 из пак. пв, счет из алеф [удк из пак] : = понт из пак);
293
с. 50 ГОСТ 17975-88
(алеф:*: F из формат из fl нс определено):
(чит I ввести вставку (f. пф, вывести вставку (f.ne):
ути из алеф [удк из пак) : =
(счет из алеф [удкизпак| >0Ю
(есть шаблон: =истина; шаблон: = (пустое. ( ));
вегр н из алеф [уде из пак]) :
укфор: = улк из пак),
(шаблон шабл): (есть шаблон : = истина; шаблон: шаблон = шабл)
быв:
пока
(укфор А О 1утн из алеф | укфор) = вегр н из глеф [укфор] ложь)
цк если (счет из алеф (укфор) - : = I) < О, то
если (укфор:'оук из алеф (укфор)) ^ О то вставка лобав =
выб (н из алеф [укфор]) [ути из алеф [укфор]] .
(пакет пак):
(оу к из алеф [уде из пак]: я О; в 2 из пак),
(шаблон шабл):
выб граф из шабл в
(трафор граф):
(цел к: = укфор;
пока оук из алеф [k] ^ укфор ЦК k* : = I кц; алеф: =алеф {: k — I];
виз иыбл) быв быв;,
цел пт = вегр в из шаблон, л “вегр добав;
[I: m +п] ст (проц цел повт. об (строк.лит) стр)с;
с (1: т]: =в из шаблон; с (ni + 1: m ^ п] : = добав;
в из шаблон: «с все
иначе утн из алеф [укфор]: =0 все кц;
(укфор / О I ути из алеф [укфор] + : “ 1) все кц конец;
h) проц ^ввести вставку = (имя файл f. [ ] подставка пв) яусг: начало настроить на чтение (f) ;
ат я к до вегр пв цк
выб стр из пв (к] в
(лит а) : разместить (f, понт из пв [к] .а. истина),
294
ГОСТ 27975-МС.Я
(строк s>: (лит с;
до повт из пв (к] «к для i до всгр s цк проверить позицию (0; ввести литеру (СО;
М » {’1 , ,
(—«ошибка литеры исправлена (f, c; = s (i ] ) Iне определено): настроить на ■пение (0 ) кц кц) быв кц конец;
а) проц £ разместить = (имя файл f, цел повт, лит а, лог чит) пуст): еслна = ”х‘“то до повт цк вперед (0 кц инее а = ’’у"’то до повт цк назад (f) кц инее а = ”]*чо до повт цк нов строчка (0 ки инее а = ”р”то до повт цк нов страница (0 кц инее а с"^’ то уст номер литеры (f, повт) инее а * ”q” то до повт
ЦК если чит то лит с; проверить позицию (0; ввести литеру (f. с) ;
(с / пробел I
("* ошибка литеры исправлена (f, с: “пробел) 1меопределено); настроить, на чтение (0) иначе проверить позицию (0; вывести литеру (f, пробел) все
кц все;
10-35.1. Форматный вывод.
а) проц Ф вывод = (имя файл f, ( ] об (выводимое, формат)х) пуст: если открыт из f то для к до вегрх цк выб настроить на запись (0 ; настроить на литерное (0;
х (к] в
(формат формат): присоединить формат (f,формат), (выводимое выв): ’ »
начало цел): =0
шаблон шаблон, ( ] провывод у стройны вод в ыв;
пока 0 +; = I) ^ ветру цк лаг не коня: =ложь;
взять след шаблон (f, ложь, шаблон);
С. 52 ГОСТ 27975 -88
настроить на запись (f) ;
|Г: негр (в из шаблон)] подвставка подвох; выб граф из шаблон в (трафарет трафарет):
начало цел поит, ук |( азатель ^ рам д ок ?<: = 1;
|1: вегр (рамки из трафарет) ] подрамка подрамки;
( подготовить, рамки (рамкииз трафарет, подрамки), подготовить вставку (в из шаблон, подвеет) );
строк з: on? = (строк s) лог:
/ истина, если сл едущий маркер есть один из элементов 's', а иначе ложь g
если украм > вегр (юд рамк и го ложь
иначе подрамка пр = подрамки [украм];
повт: =повт из пр;
если литера в строке (марк из пр, док цел, s), то украм + : ■ 1; истина иначе ложь
все вое; оп? = (лит с) лог; ?сгрок (с); проц цел трафарет = (имя лог образец знака) цел:
(цел 1: =0;
пока ? "zuv” цк (повт > О II * : -повт) кц; образец знака: =? '*•+ — ”;
пока ? ”zd” цк (повт >0 II + : = повт) кц; 1) ;
^ проц ред |1 активность ^ Д цел = (Д цел i) пуст: (лог образец знака;
цел 1: =цел трафарет (образец знака) ;
строк t = пре л ст целого (абс i. 1>;
если литера в строке (литераошибки лок цел. t) V
I = О V —••образец знак а Д i < Д О то не комч: “истина иначе t прип s;
(1- вегр t) X ”0" прип з;
(образец знака l(i < ДОI ”—” I 'Ч”)припз) все) >;
^ проц ред Д веш = (Д веш в) пуст:.
(цел Ь: =0, а. =0, пор: =0,Дзету: =абс в, лог знак 1, строк точка =« » ।
Ь: “цел трафарет (знак I};
(? "” ।а: = пел трафарет (лок лог); точка: = ”. ”); если ? Че ”
296
ГОСТ 27975-88 С. 5 3
то Д нормализовать (у, Ь,а. пор) ;
ред цел (лор);
”ю~прип s
все;
строк ( = предст рационального (у, b + а ♦ (а/0 1 1 10) ,а);
если литера в строке (литера ошибки. лок цел, t) V
а ^ Ь'^У^Энак 1 /) г<Д0
то нс конч: «истина
иначе t (:b] ♦ точка ♦ t [Ь + 2:] прип s;
(b * а + (а / 0 11 10) - вегр () х ”0” п рил s;
(знак I I (в < Д О I и-” I ’Ч” j прип s)
все) Л;
-£ про» ред Д ко мня = (Д компл лк) пуст:
пока ? ’7 i.” цк украм + :" 1 к»: ред Д вещ (мч дк);
"1“прии$; укрвм: = I; редЛвеш (вчдк))^:
«г проц ред Д бит = (Д биг дб- цел основание) пуст:
( Д цел п: = абс дб; 3 '’г” ;
цел L: - цел т рафарет (лок лог) ;
пока литеру в цифру (С (п мод У основание)) прип s;
и -г : = У основание; п / Д 0
цк пропуск кц;
сели вегр s< 1
то (I- вегр s) Х"0” прип s
иначе ле конч:-истина
все) >,
проц счет о чик 0 лит 0 ер й = иел:
(цел h =0;
пока ? ”«" цк (повт >011+ : 0 = поят) кц; 1);
выб тип из трафарет в
0 целое tf
(у DI 1
< (Д пел i): рея Д цел (i) >
Sue конч: =истина),
0 вещественное F
(У 1)1 1
4. (Д вещ в) : ред Д вещ (в) >.
< (Д цел и) : ред Д веш (ц) >,
1не конч: = истина) .
0 логическое 0
(у 01 ।
(ЛОГ b) : s: = (Ь |дд1нет)
(не конч: = истин а),
Й комплексное 0
(у 01 ।
<(Д комля дк); редДкомпл (дк) ^,
< (Двешдв): редДвсш (дв) ^,
297
С. 54 ГОСТ 2 7975-88
£ (Д цел дц) : ред Д всш (дц) /-
Iнекоим: чест^на),
/ строковоей
(у Ы ‘
(лит с): (счет лит =1 I s: =сI не конч:: = истина).
(I ) лит t):
(счет лит = вето t — нигр 4 + I
Is: =t [clj
<не конч: = истина)'
1не конч : = истина)
либо
И битовое и
(у 01 ।
$(Д бит дб): рея Д бит (дб. тип из т рфарет-4) />
1нс конч: - истина)
быв:
если . нс конч
то рея строку (f, s, подрамки)
все конец, (травыб выбор): начало
(I: вегр (в из выбор) ] лодвставка дв;
подготовить вставку (в из выбор, пв);
вывести вставку (f. ив) :
цел I =
выб тип из выбор в
^логическое ft
(у bl 1
(лог b) : (b I 1 12)
I нс конч: "истина; пропуск)» я целое jj
(У “Ь1 1
(цел i) : I
1нс коич: = истина: пропуск) быв;
если . ire конч то
если 1> вегр (стр из выбор) V КО то нс конч: - истина
иначе
[ 1: вегр ((стр из выбор) [1]) 1 иодвегэвка пне; подготовить вставку ((стр из выбор) (1], лвс); вывести вставку (f. иве)
все
все;
2ЧЯ
ГОСТ 27975-88 СЛ#
подготовить «ставку (в из шаблон, подвох) конец.
(трафор трафор):
начало
выполнить трафор ((. трафор. ложь):
оля i ДО вегр подаст цк подвей |ij: ' (0, ” ”) ки;
j - : = 1
конец,
(трабесф трабесф):
начало
11: негр (в из трабесф)] подвставка пв:
I ] ирон дел спец =спеи из трабесф:
цел п = вегр спец: ]1 : л] цел s:
(подготовить вставку (в изтрабесф, пв),
(подготовить вставку (в из шаблон, поався),
s: = <п 1спец [I |, (спец [1|. сиеп |2]).
(cneu (Ij.cneu (11.спец |3| > , ( } )):
вывести вставку (f. пв):
■если n = 0 то вывод (f, у ] j|)
иначе
число yj =
(у 011 ^ (Я исл а) : i > . < (Д ве ш в): в >
hie конч: = истина: пропуск): если—* не коня 10 выб л в
оывод (Г. целое (yj. s |l] )),
вывод (f. фикс (yj . s ] 1 ]. S [2]>).
вывод (С, плав (yj, s |1| .я [2]. s [3| )) быв
все
все конец, (пуст):
(j - : ' I:
подготовил, вставку (в из шаблон, подаст))
быв;
если нс конч
то настроить на запись (Е):
(^ошибка значения неправлена (Е) * вывод <f, у (j] Н
нс опре делено)
все;
вывести вставку (f, падает)
кц
конец
быв кц
иначе не определено
все;
проц (имя файл, ] ] об (выводимое, формат)) пуст put Г = ф вывод-.
299
С. 56 ГОСТ 27915 - as
Ь) Описание соответствует ГОСТ 27974.
10 3.5.2. Форматный ввод,
а) проиф ввод = (имя файл f. I ] об (вводимое, формат) х) пуст: если открыт ИЗ f то для к до вегр х
цк выб настроить на чтение (D ;
настроить на литерное (О: х (kJ в
(формат формат): присоединить формат (f. формат), (вводимое в в): начало пел j:®0;
шаблон шаблон, ( ] про-ввод у-стройввод нв;
пока (j * : = I) < вегр у
цк лот не конч: ’•ложь;
взять след шаблон (f, истина, шаблон);
настроить на чтение (f);
(I: вегр (в из шаблон) J подвставка подв-ст; выб граф из шаблон в
( трафарет трафарет): начато
[ 1: вегр (рамки из трафарет) ] подрамка подрамки;
(подготовить рамки (рамки из трафарет, полрамки), подготовить вставку (в из шаблон, подвставка)) ;
строк s;
цел основание ■
(тип из трафарет>6 I тип из трафарет -4 ИО);
оост строку (Г, $„ подрамки, основание);
выб тип из трафарет в
J целое й
Су UJ >
< (имя Д цел иди):
не конч: = “’строку в Д цел (s. 10. иди) >
1не конч: «истина) ,
Й вещественное й
(у Ш ।
< (имя Д вещ ядв) :
не кони. = -г строку в Я всш (s, hub) >
Рис конч: с истина), й логическое й
(У Lil * (имя лог ил) : ил: ■ s ■ да
I не конч: = истина),
Й комплексное й
(у 01 *
< (имя Д компл идк):
(цел i, логЬ 1, Ь2; литера в строке (”!”,>,&);
b 1: «строку в Л вещ (в [: i- 1). ивч из как);
Ь2: «строку в Л вещ (s [ i + 1:]. имч из.ндк);
зоо
ГОСТ 27975-88 С. 57
не конч: = -■ (Ы Л V2)) >
1ие конч; = истина),
^строковое d
(У Ы ■
(имя лит со):
(вегрз- 1 lcc:=$ [I] Iне конч: =истмна).
(имя J J лиг имя) :
(вегр имя —ннгр ныл + l=Bcrps I НМЛ (с IJi^S
1не конч: «истина),
(имя строк нс) : их: = s
1не конч: = истина) либо
^ битовые й
(у Ы ’
< (имя Д бит идб) :
если Д «сл i; строку в Д цел (s, основание, i)
го идб: =бин i
иначе не конч: =истина
в«>
1не конч: "истина)
быв
конец,
(травыб выбор);
начало
[1: вегр (в из выбор)] подвставка пв;
подготовить вставку (в из выбор, пв);
ввести вставку (f, пв);
цел с =с из Т1юэ из f, лит kk;
цел к: =0, лог есть:-ложь;
пока к < вегр (стр из выбор) Д-» есть
цк к + : = 1;
[!:юегр ((стр из выбор) [к]) ] подвставка не;
лог лог: = истина;
подготовить вставку ((«рИЗ выбор) [к], Пв)', строк s;
для i до вегр пв
цк з плюспр
(стр из пв [i] I (строк ss) : se) х повт
из пв (а]
цк;
для jj др вегр s
люка лог: «лог Л -• строчка окончена (f)
Л —т лог файл окончен (f)
цк ввести литеру (f, к к) ; лог: =кк =s (jj] ku;
(-1 (есть:=лог) I уст номер литеры (f. с))
301
С. 5-8 ГОСТ 27975-ад
кц; если т есть то нс конч: = истина иначе
в ыб тип из выбор в fl логическое й
(у Ы ।
(имя цел b): b: = k = I
I не конч: = метина).
Й целое й
(у Ь) ।
(имя цел i): i: «к I не конч: «истина) быв все;
подготовить вставку (в из шаблон, подаст) конец,
(трафор трафор):
начало выполнить, трафор (f, трафор, истина);
для з до вегр поле ст цк попвет (i): = (0, ” ”) кц;
j - : = 1 конец, (трабесф трабесф): ([I; вегр (в М3 трабесф)] подвставкя п$; (подготовитьвставку (в из трабесф, пв), подготовить в ставку {в излюблен, подаст));
ввести вставку (f.пв);
ввод (f.y Ц] )),
(шуст):
(j—»: = 1; подготовить вставку (в из шаблон, подаст))
быв;
если нс конч
то настроить-на чтение (О;
(-»ошибка значения неправлена (f) I
ис определено) все;
ввести вставку (Г, поддет) кц конец быв кц иначе не определено все;
проц (имя файл, [ | об (вводимое.формат)) муст get f *ф ввод;
Ь) проц-4-сост И явить yi строку = {имя файл f.
имя строк s, ( ] подрамка пр, цел основание) пуст: начало
лог подав, п й одавляемые й н й ули fl: = истина, есть знак : “ложь, 302
ГОСТ 27975-88 С. 59
есть пробел: =ложь, нет знака: =ложь,
цел ук dазагель Ц зн d ака ц: = I, повт;
прио! =8;
оп! ■ (строк з, лит с) лиг:
d запрашивает некоторую литеру, содержащуюся в. s'; если читаемая литера не входят a 's', то вызывается процедура обработки события, соответствующая при ошибке литеры, с предлагаемым 's' d если лит к; проверить позицию (0; ввести литеру (f, к) литера в строке (к,лок цел, s)
то
иначе лит предо: " с;
если ошибка литеры исправлена (f, предо) то (литера в строке (предо, док цел, s) I предя I не определено; с)
иначе не определено; с
все;
настроить на чтение (f)
все;
оп! = (лит s, с) лит: строк (s) ! с;
[ J лит хор цифры = ”Ol2 34S6789abcdef ( основание ];
s: = ”♦'’■;
доя к до вегр пр
цк подрамка прк-пр [к] ; подав: =подав из при;
ввести вставку (f, пв из при) ;
до повт из прк
цк лит маркер = ма рк из прк;
сети маркер = ”d" то S плюспр
(подав I ”0" 1 хор цифры’"o’*); пн: = истина
инее маркер =”z” го s плюспр
(подав 1м0” (лит с = ((пн I "х” Iм”) ■+ хор цифры) ! ”0";
(с г "л»* I п и: = ложь); с)
мисс марк ер — “u” V маркер-“'* + ” ju
если есть знак
ю пн: = ложь; s плюспр (”0123456789”! ’’0”)
иначе лит с= (”+ • ” + (маркер = "u” I ”/' I >■ - )) ! ’>" I
(с = ”+” Vc = "_•• I есть знак г = истина; s 1укэи]:ес)
все
инее маркер = ”v” V маркер = **—”■ то
если есть знак
то пн: = ложь; s плюспр (“0123456789"!"0")
инее лит с; «сть пробел
то С:=*+- .0123456789”! "+”:
(<=’*+” V с= ”-” Iесть знак: “ истина; s (укзн]:=с
1с:^= "j.” Inn: = ложь; есть знак: = истина;
е пльостр с)
иначе с: ="+ - . “ ’ ’Ч";
(с = ”+” V с = ”-” I есть знак: = истина; s (укзн):=с
303
С. «О ГОСТ 27*75-88
I есть пробел: = истина) все инее маркер = ”." то а плюспр (подав I ”. ” I’*. ” I ”. ”) мисс маркер в ”с" то s плюспр (подав Ivr’wV”! ”10"; »)«”); есть знак: «ложь; пн: = истина;
s плюспр’Ч*’; укзн:=мгр$ инее маркер = ”i” то
s плюспр (подав 1”1 ” I ”11" ’ ”1 ”. ”);
есть знак: = ложь; пн: = истина;
s плюспр'’*”; укзн: ” ветре
инее маркер " "Ь” то
s плюспр (да + нет) ! нет; нет знака: = истина мисс маркер =”а” то s плюспр
(подав I ” . ” I лит с; проверить позицию (0; вывести литеру (С с);
с);’
нет знака: • истина
инее маркер = ”г” то пропуск вес
кц
кц.;
если нет знака то s = 8 (2:] все к онси;
103-6. Двоичный обмен соответствует ГОСТ 27974.
10 4. Системное иступление и список задач соответствуют ГОСТ 27974.
10,5. С о б ствеи иые вступления и заключения
10 5.1. Собственные вступления
Описания a, b, с, d, е, f, g, h, i, -соответствуют ГОСТ 27974.
j) присит окончание: пуст: стоп;
к) присит немедленное окончание: пуст: стоп;
1) присит рекурсия общей ситуация: лог: ложь;
пт) присит конец лог файла: (имя файл 0 лог: ложь, конец физ файла : (имя файл 0 лог: ложь, конец страницы: (имя файл Г) лог: ложь, конец строчки: (имя файл 0 лог: ложь, конец формата: (имя файл 0 лог: ложь, ошибка значения: (имя файл 0 лог: ложь, ошибка литеры (имя файл f имя лит с) лог; ложь;
10.5.2. Собственные заключения определены в ГОСТ 27974.
10.6. Сегменты
10.6.1. Синтаксис
а) вставляемый сегмент на АЛГОЛЕ 63
в СРЕДЕ с новыми ’'МОДУЛЯМИ выдающий ЗНАЧЕНИЕ {А7а): злак сегмент {94 d} ,
304
ГОСТ 2 7975-88 С. 61
индикатор заготовки {56d}
знак определяется как {94dJ,
фактическая заготовка в СРЕДЕ с новыми 'МОДУЛЯМИ выдающая ЗНАЧЕНИЕ [56с/ .
Ь) Для каждого дополнительного [5.6.1.AJ герминального, метапорождения „ЯЗЫКА” следует добавить дополнительные гиперправила, для гиперпонятий формы „вставляемый сегмент на ЯЗЫКЕ в СРЕДЕ с новыми 7МОДУЛЯМИ выдающий ЗНАЧЕНИЕ”. Должен быть о пределен механизм £с помощью стандарта, определяющего этот другой язык / , посредством которого все такие вст^вляемые-сегменты-на ЯЗЫКЕ могут быть преобразованы во всгавляемые-сегменты-на АЛГОЛЕ 68 £ с тем же самым смыслом /.
с) сегмент определяющий модули через 'МОДУЛИ
в СРЕДЕ с новыми ’МОДУЛЯМИ! МОДУЛЯМИ (Д7а }:
знак сегмент (94dJ ,
индикатор заготовки [56d] .
знак определяется как { 944} ,
описание модулей через МОДУЛИ
в СРЕДЕ с новыми ’МОДУЛЯМИ 1 ’МОДУЛЯМИ [49а ]. если ’МОДУЛИ нс охвачены СРЕДОЙ (ej.
d) сегмент для вступления задающий {МОДУЛИ
а новом СЛОЕ! с новыми {ОПИСАНИЯМИ ’МОДУЛЯМИ!
{МОДУЛЯМИ £ н } СТОПОМ {A7aJ:
описание модулей через ’МОДУЛИ в ново м СЛОЕ!
с новыми {ОПИСАНИЯМИ ’МОДУЛЯМИ! 'МОДУЛЯМИ
[и ) СТОПОМ [ 49а} .
если {МОДУЛИ не охвачены новым СЛОЕМ! f е J .
с) ЕСЛИ ’МОДУЛИ МОДУЛЬ не охвачены СРЕДОЙ £ c.d} :
ЕСЛИ ’МОДУЛИ нс охвачены СРЕДОЙ £сЛ } и МОДУЛЬ не зависит от ’ПАР [ 71а, Ь, с } .
если в 7ПАРАХ собраны свойства из СРЕДЫ f g, h} .
о ЕСЛИ ПУСТО не охвачено СРЕДОЙ £е J : ЕСЛИ истина.
g) ЕСЛИ в ’ПАРАХ! 7ПАРАХ2 собраны свойства
из СРЕДЫ с новыми ТИАРАМИ! fe,g) :
ЕСЛИ в ’ПАРАХ 1 собраны свойства нз СРЕДЫ f g. h) ,
h) ЕСЛИ в ПУСТО собраны свойства из нового ПУСТО [е, g ):
ЕСЛИ истина.
«)• сегмент в СРЕДЕ с новыми 7ПАРАМИ :
вставляемый сегмент на ЯЗЫКЕ
в СРЕДЕ с новыми 7ПАРАМИ выдающий ЗНАЧЕНИЕ [a, b] ;
сегментопределяющий модули через {МОДУЛИ
в СРЕДЕ с новыми ТИАРАМИ £ с ) ", собственно-программа в СРЕДЕ с новыми ’ПАРАМИ /Alg} ; сегмент для вступления задающий {МОДУЛИ
в СРЕД Е с новыми ’НАРАМИ £d £.
j) "символ буква: символ БУКВА [94aj .
3tS
С. 62 ГОСТ 27975-ЯН
к) • символ цифра символ ЦИФРА {94bj .
{ Примеры:
а) сегмент ’a b с" и лодки a, b (х: * 1; у = 2; неч (х ♦ у))
с> сегмент "л Ь с” —модуль а — мд откр веш X дм
d) модуль Ь = мд откр вещ g дм
Эти три примера могли бы представить собой согласованный набор сегментов (10.6 2л), будучи объединены с собственно-программой
начало среда ”а b с” конец J
( В вышеприведенном правиле а МОДУЛИ', заложенные в ’^МОДУЛИ’, определяются всеми сегмснтами-определякниими-модули, которые должны вставляться вместе с данным вставляемым-сегментом. В правилах с и d требуется только, чтобы в Г?МОДУЛИГ были заложены 'МОДУЛИ' для всех тех модулей, которые на’самом деле доступны изнутри данною сегмента. Нижеследующая семантика определена только в тех случаях, когда для набора совместно вставляемых сегментов, все 'МОДУЛИ', заложенные в различные ’’МОДУЛИ L', заложены и в '’’МОДУЛИ'}
10.6 2 Семангика
(Сегменты - это компоненты для раздельной трансляции Необходимо определить смысл набора сегментов. Это-осуществляется преобразованием набора в эквивалентную собственно-прОграмму. Необходимо, конем-ж», чтобы сегменты в наборе были согласованы другсдрутом. Ровно один сегмент в наборе должен быть собственно-программой }
а) Смысл собсгвеино-программы Р в контексте набора Т других при соединяемых сегментов {. не являющихся собсгвенно-программами.) определяется следующим образом:
• Личное встугиениеч>?МОДУЛЯМИ UP из задачи-пользователя ИТ. ни.-, ледником которой является Р( 1.1 Ге и 10.11 f J .должно быть составлено следующим образом
Для каждого сегменга-длячстуЛПения-в-мовом-СЛОЕ1-с-новыми-!ОПИ-СДНИЯМИЛМаПУПЯМИ1. f im} СТОПОМ М если такояое именем в Г
• UP содержит составляющее опис-анис-модулей-в-новом-СЛОЕ I -с новыми-’ОПИСАНИЯМИ-7МОДУЛЯМИ- { и.} СТОНОМ, подобное описи-нию-модулей из М, £ в ’’МОДУЛИ' должны быть заложены все МОДУЛИ'^ заложенные во все такие и только так не'’МОДУЛИ 1 которые синтаксически корректны по отношению к лнчному-встушш-пию из UT;}
• UP не содержи! никаких иных составляющих описанин-оиЪЕК 1ОВ и его единственная составляющая ос нова состоит из пропуска f 5.5 2.1 .a J ; Если 'Г содержит какие-либо вставляемые сегменты-на-ЯЗЫКЕ. где- ‘ЯЗЫК не есть 'АЛГОЛ68',
то эти сегменты преобразуются { 10.6.1b) во всгавляемые-сегменты-на-АЛГОЛЕ68 £ с тем же самым смыслом };
Пока в UT остаются какие-либо формальныс-заготовки.
• пусть Н есть такая формалышя-зэготовкз-в-СРЕЛЕ-вьр ыюшая-
ЗПЛЧЕНИЕ. и пусть 1 ссгь шщикаюр-авлоювки;
л
ГОСТ 27975 -8» €.6 3
• если I подобен какому-либо такому I, который уже рассматривался, то смысл Р нс определ яем;
• Н замещается {в ЦТ} виртуальной-заготовкой-в-СРЕЛЕ-выдаюшей-ЗНАЧЕНИЕ, ©ост апл люшее пмлспоЬателккое-предложенне-в-СТСДЕ S которой составляется следующим образом:
Для каждою сетментаопределяюшего-модуля-в-СРЕЛЕ-с-новымм ?М0ДУЛЯМИ1 М. если таковой имеется, в Т. индикатор-заготовки которою ..соот вектвует” ( b } I.
• S содержит составляющее олисанис-модулск-в-СРЕЛЕ-с-тювыми-"’МОДУЛЯМИ, «сдобное описанию-модулей из М;
{ в’’МОДУЛИ’должны быть заложены все ’МОДУЛИ’, залаженные во все такие и только гакнс'?МОДУЛИГ, которые синтаксические корректны по отношению к S;}
• S не содержит никаких иных составляющих описаний-ОБЪЕКТОЙ. и его единственная составляющая основа состоит из составляющею ЗАКРЫТОЕО-предложения из i единственного } вставляемого-сег-монта-на-АЛГОЛЕ 68 в СРЕДЕ с новыми ’МОДУЛЯМИ выдающего ЗНАЧЕНИЕ из Т. индикатор-заготовки которого соответствует 1:
Если в- Т остались какие-либо сегменты, которые не были включены в UT,
то смысл Р не определен ;
иначе [ в- LIT не содержится никаких формальных-за готовок, и поэтому J смысл Р таков, каким он определен в другом месте { Mie} семантикой стандарта
Ь) Если {текстуально i первый составляющий элемент-строки из индикатора-заготовки I состоит из некоторого символа-букнз. и всякий другой составляющий злеменс-строки. если таковой имеется, состоит из некоторого символа-буква или некоторого символа-иифра. то I ..соответствует'’ любому другому индикатору-заготовки, которому он подобен f: мначг r-го голтнетгтпир другим мидикятлрнмляглтпвок (подобным ему или нет) здесь не определяется, однако, оно может определяться .местными соглашениями реализации, учитывающими особенности местной операционной языковой обстановки.}
{ Стандартная языковая обстановка расширяется включением личного-вступления для каждой собствеинопрогроммы. в которую пользователь может вставить свои собственным сегменты-для-аступления.}
приложение i
Справочное
ИСТОРИЧЕСКАЯ СПРАВКА
,.Пересмотренное сообщение об алгоритмическом языке Алгол 68". осриималь-но принятое в 1974 г в качестве окончитепьиоги определяющего документа дан языка
JOT
С. 64 ГОСТ 27975—MS
Алгол 68. не подлежали изменениям, mo разните программирования показало необходимость включения я язык дополнительных средств, обеспечивающих:
раздельную трансляцию фрагментов программ;
модульное программирование:
обработку исключительных ситуаций.
Выли выдвинуты многочисленные предложения по реализации этих средств и некоторые из них реализованы.
В 197? г. были опубликованы предложения Ч Линдси и X. Боома по модулям и -раздельной трзмсляики „А Modules and Separate Compilation facility for ALGOL 68".
Предложения были одобрены рабочей группой 2 1 (РГ2 h Международной федерации оо обработке информации (ИФИП) и, во избежание чрезмерного распространения диалектов, рекомендованы дли преимущественного испопвловлиил и реализациям. вводящих подобные средств*. Настоящий стащи pi включает предложения Ч. Линдси н X. Боома в переводе В 11 Броля.
Предложений по обработке исключительных ситуаций, имеющих такай же статус, как упомянутые выше, а настоящее время нс существует. В связи с этим работал группа по алгоригм ячеек ому языку Алгол 68 (РГ А68) научио-гехмиче-с-кой комиссии по системам математического обеспечения при Г КВТ АН СССР решила разработать оригинальный вариант этих средств. Механизм обработки исключительных ситуаций был предложен Г.С. Нейтиным. Это предложение обсуждалось на заседаниях РГ A6S. было одобрено и вошло в настоящий стандарт. От имени РГ 2.1 ИФИЛ это предложение рассматривал Ч. Линдси, сделавший ряд полезных замечаний.
ПРИЛОЖЕНИЕ 2
Обязательное
ТРЕБОВАНИЯ К МАШИННОМУ ПРЕДСТАВЛЕНИЮ ПРОГРАММЫ
1. Определения
1.1.А ветра кт мая литера - это одна из следующих 152 литер.
буквы латинского алфавита:
А. В. С, !>. В. F.O.H.S, J.K.L.M.M.O. P,Q,R.S,T, U, V.W.X. V, E,«,U,v.U.e, f, «. h, i. j. k, 1. m, n. o. p, q. r. s, t, u. v, w. x. у г.
буквы русского алфавита
А. Б. В. Г. Д. Е. Е. Ж. 3. И. Й. К. Л. М. Н. О. П. Р. С. Т, У. Ф. X. U. Ч. Ш. ЩЪ. Ы. Ь.
Э. Ю, Я. а, б. в. г. д. е, К ж. з. и. й. к, л. и, я. о. в. р.с. г, у, ф, х, ц. ч, ш, ш. к и, ъ. э. ю. я цифры:
0. 1.2. 3.4. 5. 6. 7. 8. 9
прочие литеры'
пробел "МЯЧ) •+,-./:; <« > Ф I I _ I
Представленные программы ня Алголе 68 определяют как разделенную на строчки последовательность абстрактных литер.
, 1.2. Конкретная литера - эта некоторая литера, имеющаяся на уст-
ройствс ввода-вывода Каждая такая литера составлена из множества знаков и кодов ■ соответствии с местными соглваисммями.
1-3. Разделитель - это особенность пкюгрвфодого набора (подраздел 9.4.01. качало или конец текста программы, или любая дострактиая литера, отличная от буквы, цифры или знака подчеркивания. Слюна и выделенные слова ограничивают ся разделителями.
308
ГОСТ 27975-88 С. 65
t 4. Две строчки литер соприкасаются, есл и между ними нет нигер или псо бенностей типографского набор». Гели оди» hi строк литер следует за или предшеству е т другой, то < ши также гоярикасаютея
1.$.Выделе и ное слое»» кто:
любое представление составленное из выделенных букв или цифр я лапонном млеке (подраздел 9.4) (т с. еимнслы-вылслешюс-СЛОВО и преаставлення, скаши-ыые в п. 5.4.1 как выделенные»:
символ, препегавленмый выделенным словом;
литеры, записывающие иыпелеимсте слоне способом. сие|скфмцирс>нанмым и пил-разделе 3.4. настоящего приложения
1-6- С л о в о - гг<» симжиьСЛОВО (подпункт 9.4.2.2.и), например. - ..колен фай.та” - ато слано.
1.7. Слог - непустая 1инлсиинагельн<хль букв н инфу (слово „коней файла", использованное так. как ин 5.4.1 настоящего приложения, состоит издвух слогов)
.. 2. Представление конструктив алгол* 68
2 I. Для каждой абстрактной литеры реализация: должна предусматривать одлу нли несколько конкретных литер, отличающихся от конкретных литер для других «ветром шик литер.
Если предусмотрено несколько конкретных нигер «например, для ..I" и ..I " и ,. ! "1, то оии должны эквивалентно обрабазывятьсм всюду, кроме как и строках и при распсчатЛ программ, где каждая представляет саму себя.
2 2. В каждом алфавите соответствующие прут пруту прописные и строчные буквы эквивалентны, за исключением ситуаций, предусмотренных в подразделе 3.1 и п. 3.5 2 настоящего приложения
2-3. Конструкт в языке представления получается заменой символов на их пред-ставлспня Представление для каждою символ* uai-гся в (ертчинах абстрактных литер. Кодирование конструктов в яшме представления для машинкой обработки осуществляется заменой каждой абстрактной литеры ия «кутнет стеующую ей конкретную литеру и вставкой особенностей типографского набора (I ам. ■ не это разрешено».
В некоторых реализациях отдельные конкретные литеры могут не иметь представления на устройствах вещи-вывода. В таких случаях реапкмиия должна обеспечить дополнительное представление соответсгвуаоимх им абстрактных литер (нэп ример. в виде комбинаций конкретных питср. доступный и* этих устройствах» При чтпм. и «кныеютя, nxoiyr-K.wree ряспгиреиж* списка ээрезеряиронаннмх слов mi подпункта 3.4 1-3 лонного приложения, а также васденяе альтх-рнагивных обозначений из разд. 10 и расширение списка представлений символов из п 9+1 настоящего стандарте альтернативными представлениями, использующими только доступные конкретные литеры.
Чтобы перенос программ сводился только к простой транслитерации, реализация должна «грел у сматривать способ представления программ в виде, не использухшкм подобных местных соглашений, и преобразонм1ие программ к такому виду.
3. Отдел ьиые представлении
31 Элементы строки
3.1.1. Множество элсментов-строки «подпункт 8-1.4 1.W - это множество абстрактных литер без кавычки и апострофа, НО С символом образ-кавычки и символом образ-апострофа Значение каждой абстрактной литеры есть сам* литера. Соответствующие друг другу прописные и строчные буквы имеют различные естественные зна-чемим Гимшъп-лЛрл-ьжайычии записывают пяумЯ соприкасающимися кавычками ИСТО естественным значением является кавычка Симвоцобраз-япострофа записывают двумя соприкасающимися апострофами него естественным значением является апостроф (один апостроф может иапольлояат|.ся в реализациях как регистровая литера).
3-39
С. 66 ГОСТ 27975-Кб
Последов нс л то егь управляющих литр, отсутствующих ил устройстве ввопа-ны-иода, или «ни такая литере в Hao&jxuKKtiHX-crpoKM может быть представлена следующим образом
сим во п-элюст роф.
симвог^отирып..
символ-обраюв-управляюших-литер,
символ закрыть
Образы литер в списке могут задаваться целыми десятичными числами, а также их обозначениями в русской или латинской нотации гео ГОСТ 27465 и должны раэле' ля । аки запятыми.
3 1.2. Догаолмитепмтая особенность оонярафского набора — ..разрыв строки" -предусмотрена! дли использования только ину зри изображений-строк и изображений пятерных и записывается как кавычка с нислсдующимн одной иля более особенностями типографского набора, отличными от разрыва СТ роки. С последующей еще одной кавычкой
Когда изображен нее троки должно быть размешено в исходном тексте программы из нескольких строчках, разрыв строки позволяет указывать количество пробелов я копие одной строчка и однозначно-определяет положение продолжения изображения чтр<»ки и* следующей строчке.
3.2. Эя смеиты прагма гоп
3 2 I Ппепсло»ап.‘лы<оегью.:шим«><с»а ПОЯСНЕНИЯ ОФОРМЛЕННЫХ In. 9.2.1.0 „может служит, любая irounwoeu тел ьнтяъ литер (нс обязательно абстрактных), в которую нс входит последовательность (вместе с раздепигепимм). ярсяставлякшмит сим симнол-ПОЖ ПЕНИЕ ОФОРМЛЕННЫЙ (т. к последним завершается прагмы). В рса-цитации нотможны. однако, аалыкАшнс ограничения на nocnrnoiurenwmcn. литер, до «густимых впрагмагах (но только не в примечаниях).
3 2 2 Предусмотрены шесть стандартных эдеменкю-пратылтой: ('ГРАНИЦА (PAGO. ТЧК (POINT). HP (UPPER). РЕЗ (RESl. ЗАПОМНИТЬ (PUSH). ВОССТАНОВИТЬ cPOPi (В скобках английские эквиваленты улсмси«ов-прлгматонI Эти элементы должны распознаваться хотя бы п их минимальной фирме:
Символ-прымиг-ОФОРМЛЬН НЫЙ.
элемент.
Символ-прагмзЮФОРМЛЕНПЫЙ
Каждый из псреимслеииых элементов-оршматов записывается как псклслоп лень-кист ь бук», которым могут предшествовать или за которыми могут следовать особенности типографского набора. (Во всех выделяющих режимах символ-прагма» может Быта. Записан как „ПРАГМ” с последующим раздел»Ген ем) .
3.2.3 Новая страница
3.2.3.1 При распечатке некоторого конструкта в конкретных литерах с ПОМЮШЫО процесс-ора Алгола 68 ттрзгмат, содержащий элемент прагмам СТРАНИЦА (PAGE) указывает, что строчку, следующую- за строчкой, содержащей Замыкающий символ-прэгмат. печатают С начала ноной страницы. (Прагмэт СТРАНИЦА нс является, одни-ко.Особенностью типе гра<|ккого набора).
3.2.4 'Загугмимаюгсрежима выделения
3 2.41 Пригмат, содержащий элементятрагматз ЗАПОМНИТЬ (PUSH), указывает. что значение действующего и данном меп-с прагмата. определяющего режим выделения (подраздел 3.4 настоящего приложения), запоминается для последу мшеч> восстановления
3.2.4 2. Прагмат. содержащий /лемент-прагмэга ВОССТАНОВИТЬ (ГОР). свизы нашей с послслним из прагматон. содержащих элемент-прагма 13 ЗАПОМНИТЬ, еще не связанным с другим прапматом. содержащим элемент-прагмата ВОССТАНОВИТЬ Ссели тако» есть), и иоссшнэяливвет действие того из прагмагив. задающих режим иы лелепня. который дей<-г*о»ал перса этим прагма том.
3 3. Особенности типографского набора
3 3 1 Особенностями типографского набора являются пробел, новая строчки и разрыв строки. Новая-строчка может бытьодноЯ конкретной яигерой инн физическим
3)0
ГОСТ 2797S-86 С 67
явлением, подобным кони» записи Разрыв строки используют только в мктб^аже-НИЯХ-СТрОКИ.
3 4. Слона и выделенный слова
3.4.1. Представление слов и выделенных слов определяют „режим выделения *. Сушсовует три режима выделения, выделенке точкиЯ. выделение приписными буйка-ми, резервирование слов.
Новым режим вводится прагматом. содержащим один из элсментов-прагматз ТЧК (POINT). BP TUPPER). РЕЗ (RES) и начинает действовать сразу же после замыкающего символа-лрагмаг Режим не деЯстжусг на ..оформление*'представления «так. в режимах ВР и РЕЗ „ПРАГМ” соответствует „ПРАГМ”). Приводимые ниже правила требуют наличия рсзлелитспя в некоторой позиции В качестве разделителей можно использовать особенности типографского набора. Сложа различаются только тогда, когда различны кан катена пин их подслов, например, „конец файла”, мижег быть записан также как „конец файла”
3.4.U. В режиме выделения точкой (ТЧК) выделенные С л о и з предо--«являются следующим образом.
выделенные слова начинаются с точки ( . ). за которая следуют слоги, содержа тис па порядку абстрактные буквы и цифры, соответствующие выделенным буквам и цифрам слова:
слоги должны разделяться литерами подчеркивания, ио не особенностями гипог-рафского набора;
за выделенным словом лонжей следовать разделитель.
В режиме выделения точкой ело в а представляют следующим образом:
слово составляется из последовательности одного или более слогов, разислешных нулем или более особенностей типографскою набора:
choi составляется из соответствующих, расположенных по порядку, абстрак тных букв и цифр и мо^ст завершаться литерой подчеркиваиня.
сели слог не завершается .титсрой подчеркивания, го посте него должен следовать
разделитель.
3.4 1.2 В режиме пыпелсаитл прописными буквами (BPI слана и вымеленные слова иредсгааляют как в режиме ТЧК. но только с использованием дополнительных правил-
в выделенных снопах не дллжнобььть смещении прописных и строчных букв: точка может быть опушена перед выделенным словом нт прописных букв, если ему предшествует разделитель, отличный от точки, строчная буква или цифра, не ян-плоптвясв „приписной цифрой”. „Прописная цифра” - Это шифра, которой Предшествует «прописная буква или прописная цифра;
за вылелсыным словом из прописных букв нс обл загс.лыю ставить разлепи гель, если за ним следует строчная бу км;
прописные буквы могут быть использованы только в тьмдепенных словах и в качестве элсмснта-основнсим-иаборз (подпункт 8 I 4 1.с).
3 4 1.3 В режиме резервирования слов (РЕЗ) слова и выделенные слова представ ляют к ак в режиме ТЧК, ко с использованием до-полни-тельных правая:
точка может опускаться перед зарезервированными словами (заданными в П 94 1 как представления ДЯЯ символов языка), составленными из букв русского алфавита
БИТ БЫВ В ВЕШ ВИЛ ВОЗБУД ВСЕ ВЫБ ВЫХОД ГЛОБ ДЛИН ДЛЯ ДМ ДО ЕСЛИ ЕСТЬ ИЗ ИМЕНИ ИМЯ ИНАЧЕ ИНЕС ИСТИНА КАНАЛ КОМОД КОН КОНЕЦ КОР КЦ ЛИБО лишь лит лог ложь ЛОК МД МОДУЛЬ НА НАМ НАЧАЛО НЕСТЬ НИЛ ОБ он от ОТКГ ПАР под в подкл ПОКА ПРАГМ ПРИМ ВРИО ПРИСИТ ПРОПУСК ПРОЦ ПУСТ ПУСТОЕ с СБРОС СЕМА сегмент СИТУАЦИЯ скип СЛОГ СРЕДА СТ СТРУИТ ТО -Ь ФАЙЛ ФОРМАТ ЦЕЛ ЦК ЧЕРЕЗ ШАГ
311
С. 68 ГОСТ 2 7975 -88
и букв ;»п<иского алфавита
ACCESS AT BEGIN BITS BOOL BY BYJES CASE CHANNEL CHAR CO COMMENT COMPL DEF DO EGG ELIF ELSE EMPTY END E$AC ECCAPT1ON ЕХП FALSE FED FI FILE FLEX FOR FORMAT FROM GO GOTO HEAP IF IN INT IS ISNT LOC LONG MODE NEST NIL OD OF ON OF OISE OUT PAR POSTLUDE PR PRAGMA! PRIO PROC PUB KAISE REAL REF SEMA SHORT SKIP STRING STRUCT THEN TO TRUE UNION VOID WHILE
если мм предшествует разделитель, отличный от точки;
со слогом должен сопри касаться знак подчерк ивами я, если буквы и цифры этого слова соответствуют, в том же порядке, буквам и цифрам некоторого зарезервированного слова-
3 5. С о с т а в н ы с представления
3-5.1. Некоторые представления, приведенные в п. 9 4.1, составленные из последовательности двух или более литер, вс являющихся буквами С ”. ■:,:■.!:,: =:. : /.- :), являются последовательностями- абстрактных литер, соответствующих этим символам.
3-5.2. Представление любого символа-ПОНЯТИЕ1-псрсд-ПОНЯТИЕМ2 является представлением для символа-ПОНЯТНЕ 1, за которым следует представление для символз-1Ю11ЯТИЕ2, (символы-ПОПЯ ГИЕ1-гаеред-ПОНЯТИЕМ2 являются составными обо значения ми операций. упомянутыми в подпунктах 9.4.2.2.4. с).
36. Другие представления
3.6.1. Любой: символ:, пролег явление которого в подразделе 9 4 соответствует а-бстракгиоЯ галере, представляется этой литерой Симаоп-иэ дссятъ-в-стспсми, символ-плюс-я-ма. к симпол-крапкое-примечание ж имеют представлений.
4. Обмен
4.1. Представления объектов для обмена должны использовать только абстрактные литеры <с тем. чтобы ввод можно было подготавливать, а вывод интерпретировать без ссылки на конкретную реализацию). Запросы к обеганопке зависят от абстрактных литер следующим образом:
да „ Т ” латинская или .. Д" русская;
нет „ F " патимская или „ Н " русская;
литера ошибки ., •
пробел „
4 2. вместо абстрактных литер для символа -на десять »-степени и для символа-плюс-н-на необходимо мспольэоийтъ литеры „ Е" / латинская J или „ Е " f русская ) и '„ I ” { латинская ) или "И" ( русская) .
Соответствующие друг другу прописные и строчные буквы эквиваленты, когда они входят при обмене в представ пение любого значения, отличного от значений видов ..литерный” и „вектор из литерных".
4.3. Строковые значения, облученные в результате обмена и оперший ПРЕД (REPR). могу г содержать лит еры. которые не соответствуют абстрактным лите рам
312
ГОСТ 27975-88 С. 69
ИНФОРМАЦИОННЫЕ ДАННЫЕ
I. ИСПОЛНИТЕЛИ
В.Ц Морозов, д-р техн, наук; Г.С. Цейгин, д-р физ.-мат. наук; А.Ф. Pap; А.Н.Терехов,канд физ -мат. наук; Ч.Линден; О.Е. Климом;
Н.Б. Скачков; В.В. Броды В.Б. Яковлев; И.Б. Гиндыш; Э.В. Олсньс-ва; Д.Ю. Жуков; Ю.И. Карпов; ФЛ. Кабалима; ОК. Александрова;.
Е.Г. Г розная
2. УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Постановлением Государсг-веяного комитета СССР по стандартам от 21.12.88 V 4380
3. Срок проверки - 1996 г., периодичность проверки - 5 лет.
4. ВВЕДЕН ВПЕРВЫЕ
5. ССЫЛОЧНЫЕ НОРМАТИВНО-ТЕХНИЧЕСКИЕ ДОКУМЕНТЫ
Обозначение МТД. на который дана ссылка | Номер пункта, пр-кло жеи-ия |
ГОСТ 27465-37 ГОСТ 27974 8Н | Приложение 2 (п. 3.1.1) 1, 1.1.1 -1.1.4.1.1.4 1- 1.1.4.3.1.2.1.1.23.1.3,2.1.1,2,1.1.1- 2.1Л.312Л.а,2.1;ЗЛ1Ж1-11.4.Э.Х1.5.2.гМ-0.1.3.ОД^^ 3 1,3.2.J.4.4.1.1.3.3.1,3.3 2,3.4,3 5,4.1.2.4.2-4.7.4 8.1.4.8.2. 5ЛЛ,3.2:1.1;5.2.|.де-2.2-$ЛДД3.1ЛД3.2Л.5.Э.2.2:5.4.1- 54.4,5.5.6,6 1.1,6.2:1,6.3-6.7,7,7.1.1.Т2Л.7.2.2.7.3,? .4,8,9, 9.1.-9.4.9.». 1,9.4.2^10,10.1,10.1.1.10 1.2.10 1 3.1 и 2.10.2.2. I0.1.3.O'- 10-3.3.12, 10.1.4, 30.3. 10,3.1, 10.3.1.1. 30.3.1.2, 10.3.1.3-10 3.1.6,10.3.2,10.3.3.1,10.3. 3,2.10.3 4.10.3.4.1.1, 10.3.4.1. Х1Ю.ЗХ.2-10.Э.'4.7,Ю.З.+.8Л.10.3.4,8.2.10.3.4.9, 10.3.4.10.1, 10.3.4.10.2, 10.3.S. 10.3.5 1. 10.3.6, 10.4, 1O.S.I, 10.5.2 |
313
СОДЕРЖАН И Е
ГОСТ 279 74-88
1. Я лык иметаязык .......... 4
1.1. Метод описания...................................... 4
1.1.1. Введение.....................................■-- 4
1.1.2. Прагматика ....................................... 5
1.1.3. Синтаксис строгого языка ............................. 6
1.1.4. Семантика ........................................ 14
В. 2. Общие метаправила ................................... 18
1.2.1. Метаправила для видов ................................ |8
В. 2.2. Метаправила, снизанные с фразами и приведением............... 19
1.2.3. Метаправила, связанные Со средами ....................- - ■ 19
1.2. Обшнс тяперправила............................... . 19
1.3.1. Синтаксис общих предикатов............................ 19
1 3.2 Выполнимости предикатов .............................. 20
Е.3.3. Синтаксис общих конструкций ........................... 21
2. Вычислитель и программа .................................. 22
2-1. Терминология....................................... 22
2 1.1 Объекты ........-................................ 22
2.1 2. Соотношения ................................... ■ - 25
2.13. Значения......................................... 26
2-14. Действия...................... .. .'.............. 33
2.1.5. Со крашения ....................................... 35
2.2 Программа .......................................... 37
2 2 I.Синтаксис ........................................ 37
2-2.2. Семантика ........................................ 37
3. Предложения ........................................ 38
3.0.1 Синтаксис ............................-........... 38
3.0.2 Семантика ........................................ 39
3.1. Замкнутее предложения ................................ 39
3.1.1 Синтаксис ........................................ 39
3-2 Последовятелытыс предложения............................ 40
32.1 Синтаксис ........................................ 40
3-2 2 Семантика ........................................ 42
3-3. Совместные и параллельные предложения ..................... 43
3.3.1 Синтаксис ............................-........... 43
3.3.2. Семантика........................................ 45
3 4 Выбирающие предложения.............................. 45
3 4 1. Синтаксис ........................................ 47
3.4 2 Семантика ............................-........... 50
3.5 Циклические лрелложенкя . ............................. 50
3.5 1 Синтаксис ............................- ..... .... 51
3.5 2. Семантика ........................................ 52
4. Описания, описатели и индикаторы...............-........... 54
4.1. Описания . .............................-........... 54
4.1.1. Синтаксис ........................................ 54
4.1.2. Семантика .................... --■ • 55
4.2 Описании аннон..................................... 55
4.2-1. Синтаксис ........................................ 55
4.2.4. Семантика............................. . . 55
4.3 Описания приоритетов . ................................. 56
4.3.1. Синтаксис ........... ......................... 56
314
4.3 2. Семантика ............................. ..... .. 56
■4 4. Описания иаешифи кагоров .................. 56
4 4 |. Синтаксис............................... 5 7
4.4.2. Семантика ..................... ............ 5 8
4.5 Описания операций................................. 5 9
4 5 1 Синтаксис ........................... ....... 5 9
•*,5-2. Семан!ина ................................ >9
4.6 Описатели ......................................• 59
4 6 I. Синтаксис .................................. 60
4.6.2. Семантика.............. 62
4 7. Соотношения мемуту иидами............ 64
4.7.1. Синтаксис ............. 6-4
4 .8 Индикаторы и указателя полей ...... ................. 6-5
4.8.1. Синтаксис ................................... 65
, 4 8 2 Семантика .............. 66
5. Основы............ '........... 67
5-3. Синтаксис...................................... 67
* 5.^ Оскзвы. связанные с именами........................... 68
5.2.1. Присваивания ... ........................ 68
5 2 2. Отношения одноименности........................... 69
5.23. Генераторы ....... ............................... 70
S-3-4- Пск-олоимжа . .......... ... 71
5.3. Основы, связанные-с составными значениями . .................. ?1
5-31. Выборки .......... 7|
5-3.2. Вырезки ...................... 72
5-4. Основы, связанные с процедурами...... 75
5 4.). Тексты процедур ..................,...... 75
5-4.2. Формулы....... -......... 77
5-43. Вызовы '...................... 78
5-4.4. Переходы .............................. 79
’ 5 5. Основы, связанные со значениями любою вида -......-.......... ВО
5 5 1. Ядре............................................ 80
5 5 2. Пропуски ............................... ВО
6. Приведение .......... , , 81
6.1. Приведенные -....... 81
, 6 1.1. Синтаксис ........................................ 82
6 2. Разыменование ............................. 83
6 2 1. Синтаксис ...................... 84
6.2.2. Семантика........................................ 84
6 3. Распроцедурившие........................... 84
6.3.1. Синтаксис ........................................ 84
6.3.2. Семантика ......................................... 84
6.4. Объединение........................................ 84
6 4.1 Синтаксис ........................................ 85
6.5. Обобщение............................... 85
6.5.1. Синтаксис ...................... 85
6.5.2. Семантика........................................ 86
6.6. В-екторизация .....................-................. 86
6.6.1. Синтаксис ............... 87
6.6.2. Семантика...................... 87
6.7. Опустошение ..............................-....... 88
6.7.J. Синтаксис .............. 88
6.7.2. Семантика ... . . ....... .......... ИЯ
7. Виды к среды ...............................-....... 88
7.1. Независимость свойств ................................. 89
7.1.1. Синтаксис ....................................... 89
315
7.2. Ицсигифнкацяя в средах ........................
7.2.1. Сии таксис ...............................
7'2.2. С ем витка ................. ... .....
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 Синтаксис ................................
82-2. Семантика................................
8.3 Изображения строки ... . , ,.......-...........
8.31. Синтаксис ................................
8.3.2. Семантика................................
9. Знаки и символы ..............................
9.1. Знаки ........................-...........
9.1.1. Синтаксис ..................................
9.2. Примечания и прагмзты.........................
9.2.1. Синтаксис ................... . ............
9.3. Представления ........................... . . . .
9 4 Эталонный язык .............................
9.4 I. Представления символов .......................
9.4.2. Символы прочих обозначений....................
10. Стандартная языковая обстановка ..............'....
10-1-Тексты программ ..........................
10-11. Синтаксис ...............................
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- Лвоичаый обмен ............................
104. Системное вступление и список задач.......•..........
10-4.1. Системное вступление.........................
10.4.2. Список системных задач........................
10-5- Собственные вступления и заключения ...............
10-5.1. Обств-еккыс вступлсниа .......................
10.5.2. Собственные за ключей ня .......................
Приложение 1. Историческая справка ...................
Приложение 2 Требования к машинному представлению программы
92 92 92 94
94 98 98
99
9? 99
100 ICO 1(11 101 102 102 102 104 104 104 105
105
105 106 10?
106 107 108
109 115
117
117 11?
119 120 122 122 124 124 133 134 134 15$
162 171 191 207 209 209 209 210
210 211 211
213
316
Приложение 3. У казатель применяемые в стандарте понятий ............ 217
Приложение 4. Список метаправил............................. 239
Информационные данные ........................ 244
ГОСТ 2 79 75-88
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- Общие гмперправила . . . ...................
2ТЪвН»оштсЛь и программа ...................
2.1. Терминология.........................
2.1.1. Объекты ...........................
2.1.2. Соотношения ........................
2.. 1.3. Эначсипя .........-........-........
2.1.4. Действия...........................
2.1.5. Со-храшегия.........-...............
2.2. Программа...........................
3. Предложения ..........................
3.0.1. Синтаксис .......... - .
3.0.2. Семантика..........................
ЗкДЛа^кмутые предложения ..................
3.2- Последовательные предложения............ .
3.2.1. Синтаксис ..........................
3.2.2. Семантика ..........................
3.3. Совместные и параллельные предложения .......
3.3.1. Синтаксис ..........................
3.3.2. Семантика ..........................
3.4. Выбяракивсе предложеммя.................
3.5. Цвкгяпвеки* пр«от о««ию« . ................
3.6. Подключающие предложения ...............
3.61. Синтаксис ..........................
'.*42 Семантика . .........................
4. Описания, описатели ■ индикаторы........... .
4.1 Описания ............ -........
4.1.1-Синтаксис ..........................
4.1.2 Семантика..........................
4.2 Описания видон . ..............-........
4.3 Описания приоритетов....................
4.4- Описания идентификаторов ................
4.5 Описания операций......................
4.6. Описатели ........... -........
4.7. СоотноокКия между видами....... .
4.8. Индикаторы и указатели поле» ..............
4 8 1 Оогтамсж- ....................
4.8.2. Семантика..........................
4.9. Описание модулей ......................
4.9.1. Синтаксис . , . ...
24-6
246
246
246 246 246
246 246
246
247 247
247
247 247 247 2+9 248
248 248
249
249 249 249 249 249
249 251
25 1 251
25 2 2$ 2 252 252 254
256
256 256 257 257
257 257
257 257
257 257 257 257
257
257
317
4.9.2. Семантики .......................
4 10 Ситуации и реакции..................
4 10 ). Синтаксис . .....................
4 10 2. Семантика . .....................
5. Основы ...........................
5.1. Синтаксис .
5.2. Основы, связанные С именам и............
-5.2.1-Присваивания.....................
5 2- 2 Отношении одноименности .. .........
5.2.3 Генераторы ......................
5.2.4. П сеидом мена .....................
5 1 Основы, «штанные с -состав», ыми значениями - .
$ J. 1. Выборки.................... . . . .
5-3.2- Вырезки ........................
5 4 Основы, связанные с процедурами .........
5.4.1. Тексты процедур...................
5 4 2 Формулы .........................
5.4 3 Вызовы.........................
$.4 4 Переходы . - -....................
5.4.5. Вызовы ситуаций.....-.............
5 5- Основы, связанные со значениями любого в-ила
5 6. Заготовки .................-......
5 6.1 Синтаксис ................-......
6. Приведение..................-......
6.1. Приведенные ............... ......
6.1.1. Синтаксис .......................
6.2. Разыменование .....................
6.2-1. Синтаксис ...... . . ..............
6.2.2. Семантика . ......................
6.3 . Распроцедури-вакис...................
6.4 .Объединение.......................
6.5. Обобщение........................
6-6. Векторизация ......................
6.7. Опустошение . -....................
7. Виды и среды .... -..................
7.1 Ik зависимость с» ойств ................
7.1.1. Синтаксис .......................
7.2 Идентификация в средах ..............
7.2-1. Синтаксис .......................
7.2.2. Семантика .......................
7.3 Эквивалентность видок................
7.4. Правильность построения...............
8. Изображения........................
9. Знаки к символы .....................
9 1 Знаки...........................
9.2- Примечания и пран маты................
9.3 Представления .....................
9.4 Эталонный язык ....................
9-4 I. Представления символов..............
9-4.2. Символы прочих обозначений...........
10. (ламдартная языковая обстановка .........
10.1 Тексты программ...................
10-1.1. Синтаксис ......................
260
260
260
261
261
26)
262
262
262
263
263
263
263
263
264
264
264
264
264
264
265
265
265
266
266
266
266
266
266
267 267 267 26?
267
267 267 267 267
264 268 268
268
268
268 268 268 268
269 271
271
271
271
318
10. J-2. Соответствие языковой обстановке ............... 271
10.1.3. Способ описания стандар тной языковой обстановк и.....-....... 271
10.2. Стандартное вступление....................... 271
10.2.1. Запросы к обстановке........... 271
10.2 2. Стандартные виды ......................... 273
10.2.3. Стшпдарптам о4о»«'>«м1оа операций ■< функций . . -........ 273
10.2.4. Операции синхронизации .....................*....... 274
10.2 5. Стандартные ситуации и восстанавливающие действия ............ 275
10.3. Описания обмена ................................... 279
10.3.1. Книги, каналы и файлы ............................... 279
10.3.2. Значения для обмена......................... 284
10.3.3. Бесформатный обмен ........................-....... 284
10 3 4. Тексты формата............................ 290
10 3-5. Форматный обмен .................................. 293
10 3 6. Двоичный обмен ...........................-....... 304
10.4. Системное вступление и список задач................ 304
10.5 Собственные вегу пленит и заключения...............-....... 304
10 5 1. Собственные иступления ................. 304
10.5 2- Собственные ааклоочеиия ......................, . . . . .. 304
10 6 Сегменты..................... -..... 304
>0 6 1- Синтаксис .................................-..... 304
10.6.2. Ссмышка ............................. 306
Приложение 1. Историческая справка ........................... 307
Приложение 2. Требования к машинному ггрсдстведению программ ........ 308
Информационные данные ............-..................... 313
Содержание.......... 314
319
ЯЗЫКИ ПРОГРАММИРОВАНИЯ
АЛ ГОЛ 68 И АЛГОЛ 68 РАСШИРЕННЫЙ
ГОСТ 27974-88, ГОСТ 2 7975 -88
Редактор Н.П. Огурце
Технический редактор О.Н-Власааа
Корректор Л.А.Пс»<омаре*а. В.Ф.Малютима
Сдано в набор 25.01.89, Подл- к печати 1.9.06.89. Формат 60x90/16. Бум. типографская If 2 . Гарнитура Пресс-Роман. Печать Офсетная. 20 уел. печ. л.. 30,13 усл. кр.-ОТТ, 2S.3S уч.-юд. л Тир. 150ОО. Зак. 1361 Цени 1р. 30 когг-
Орааша „Знак Помет»"' Итдягжпытио типярто». 123Я40 Москва. ГСП, Новолреснексхий пер., з
НаЛраио в Издательстве стандартов на комдоавра Калужская типография с тендер то в. Калуга, ул. Московская, 256.