Шаг 9: В случае ВНЕШНЕГО-вступления в его конце добавляется форма, состоящая из символа-пропуск, за которым идет символ- продолжать ^пропуск;} .
Шаг 10: Если в любой форме, возможно измененной или полученной на предыдущих шагах, встречается последовательность
AlViPlfiA2yiP2ii...An(fPn?lАп + ] ,
где А; — идентификаторы, а Р, - последовательности-элементов-пояс- нений, то эта последовательность заменяется на последовательность
А1А2...АпАп + 1М1Р1 А2Р2...АпРпАп + 1 (Ї
Шаг 11: Если некоторая форма F, возможно измененная или полученная на предыдущих шагах, представляет собой описание некоторого индикатора 1, представление которого содержит буквы русского алфавита, перечисленные в п. 2.1 приложения 2, то дополнительно вводится еще одна форма, получаемая из F заменой всех таких букв в первом вхождении индикатора । в F на соответствующие буквы латинского алфавита.
{Термин „достаточное число”, использованный выше в шагах 4 и 5, подразумевает, что никакая собственно-программа не может иметь другого смысла или не порождаться синтаксисом только из-за недостаточности этого числа.}
Повсюду {в описаниях обмена}, где в изображении-литерного или изображении-строки встречаются представления 10 (, 1), они должны интерпретироваться как представления элементов-строки {8.1.4.1.Ь}, применяемые для указания {символов } „на десять в степени” (некоторой альтернативной формы „на десять в степени”-(, если она есть}-, „плюс и на”) на внешних носителях. { Ясно, что эти представления выбраны из-за их подобия представлениям символа-на-десять-в-степени (9.4.1.Ь) и символа-и- плюс-и-на (9.4.1.с), но на носителях, для которых эти литеры не доступны, надо выбирать другие элементы-строки (и символ-буква-е-лат с символом- буква-и-лат — очевидные кандидаты) .}
{ Все описания в данном разделе предназначены для того, чтобы четко определить их действие. То же действие вполне можно получить и более эффективными способами.}
Стандартное вступление
{ Описания данного стандартного-вступления включают „запросы к обстановке”, поставляющие информацию о конкретных особенностях данной реализации (2.2.2.с), „стандартные виды”, „стандартные обозначения операций и функции”, „операции синхронизации” и (данные в подразделе 10.3) „описания обмена”.}
Запросы к обстановке а) цел число длин цел = с 1 плюс число добавочных удлинений целых чисел {2.1.3.1.d} с;
цел ini lengths = число длин цел:
цел число кор цел = с 1 плюс число добавочных укорочений целых чисел {2.1.3.l.d} с;
цел int shorths = число кор цел;
Д цел Д макс цел = с наибольшее Д цел значение {2.2.2.Ь} с;
Д цел L m|x int =? Д макс цел;
цел число длин вещ = с 1 плюс число добавочных удлинений вещественных чисел {2.1.3.1.dj с;
цел real lengths = число длин вещ;
цел число кор вещ = с 1 плюс число добавочных укорочений вещественных чисел (2.1.3. l.d} с;
цел real shorths = число кор вещ;
Д вещ макс вещ = с набольшее Д вещ значение { 2.2.2.b} с;
Д вещ L max real = Д макс вещ;
Д вещ Д точность вещ = с наименьшее Д вещ значение, такое, что как Д 1 + Д точность вещ > Д 1, так и Д1 — Д точность вещ < Д1 { 2.2.2.Ь} с;
Д вещ L small real = Д точность вещ;
цел число длин бит = с 1 плюс число добавочных размеров {j} битовых с;
цел bits lengths = число длин бит;
цел число кор бит = с 1 плюс число добавочных размеров {j} коротких битовых с:
цел bits shorths = число кор бит;
цел Д' размер бит = с число элементов в Д бит; см. Д бит {10.2,2.gJ ; это число увеличивается (уменьшается вместе с „размером”, т.е. с числом 'длин' (взятым с обратным знаком числом 'кор'), из которых составлено 'Д’, до достижения определенного размера, а именно „числа добавочных размеров” (взятого с обратным знаком „числа добавочных размеров коротких”) битовых, после чего оно остается постоянным с;
цел L bits width= Д размер бит;
цел число длин слог = с 1 плюс число добавочных размеров (т] слоговых с;
цел bytes lengths = число длин слог;
цел число кор слог = cl плюс число добавочных размеров коротких {т} слоговых с;
цел bytes shorths = число кор слог;
цел Д размер слог = с число элементов в Д слог; см. Д слог {10,2.2.h} ; это число увеличивается (уменьшается) вместе с „размером”, т.е, с числом 'длин' ^взятым с обратным знаком числом 'кор'), из которых составлено 'Д , вплоть до достижения определенного размера, а именно „числа добавочных размеров” (взятого с обратным знаком „числа добавочных размеров коротких”) слоговых, после чего оно остается постоянным с;
цел L bytes width = Д размер слог;
оп < абс, abc > = (лит а) цел: с целочисленный эквивалент (2.1.3,Lg] литеры а с;-
оп < пред, герг > = (цел а) лит: с та литера 'х', если она существует, для для которой абс х = а с;
цел макс лит = с наибольший целочисленный эквивалент {2.1.3.1.gJ литеры с:
цел max abs char = макс лит;
лит заполнитель = с некоторая литера с; лит null character = заполнитель;
г) лит да = с литера, используемая для представления 'истина' во время обмена (10.3.3.1 .а, 10.3.3.2.а } с;
лит flip = да;
лит нет = с литера, используемая для представления 'ложь' во время обмена с;
лит flop = нет;
лит литера ошибки = с литера, используемая во время обмена для представления непреобразуемых арифметических значений {10.3.2.1 .b, с, d, е, f } с;
лит errorchar = литера ошибки;
и) лит пробел =”л_”; лит blank = пробел;
Стандартные виды
вид пуст = с фактический-описатель, специфицирующий вид 'пустое значение' с;
вид void = пуст;
вид лог = с фактический-описатель, специфицирующий вид 'логическое' с;
вид bool = лог;
вид Д цел = с фактический-описатель, специфицирующий вид 'Д цел' с; вид L int = Д цел с;
вид Д вещ = с фактический описатель, специфицирующий вид 'Д вещ' с; вид L real = Д вещ;
вид лит = с фактический-описатель, специфицирующий вид 'литерное' с; вид char = лит;
вид L compl = ст (Д вещ re, im);
вид Д компл = L compl;
вид Д бит = ст ([1 : Д размер бит] лог Д F); {см. 10.2.1 .j} {Этот ука- затель-поля скрыт от пользователя для того, чтобы он не мог проникнуть внутрь данной структуры; в частности, он не может индексировать данное поле.} вид L bits = Д бит;
вид Д слог = ст ([1 : Д размер слог] лит Д F); {см. 10.2.1 .т} вид L bytes = Д слог;
вид строк =подв [1 . 0] лит;
вид string = строк;
Стандартные обозначения операций и функций
0. Стандартные приоритеты.
а) прио минпр = 1, minusab = 1, плюспр = 1, plusab = 1, умпр = 1, timesab = = 1, делпр = 1, divab = 1, цедпр = 1, overab = 1, модпр = 1, modab = 1, прип = 1, plusto = 1, -:==!, + := = 1,Х:= = 1,*:== 1,/:= = %:= =1,-^Х:= = 1,-г*:= = 1, %Х:= = 1, %*:= = 1,+=:= 1, V = 2, или = 2, or = 2, А = 3, & = 3, и = 3, and = 3, = = 4, рв = 4, eq = 4, =# = 4, / = = 4, нр = 4, ne = 4, < = 5, мій = 5, It = 5,<= 5, < = = 5, нб = 5,1е = 5, > = 5, > = = 5, нм = 5, ge = 5, > = 5, бм = 5, gt = 5, — = 6, + = 6, X = 7, * = 7,7 = 7,4- = 7, % = 7, цед = 7, over = 7, 4- X = 7,-г * = 7, % X = 7, % * = 7, мод = 7, mod = 7, □ = 7, элем = 7, elem = 7, t = 8, ♦» = 8,4-= 8, вверх = 8, up = 8, вниз = 8, down = 8, лев = 8, shl = 8, прав = 8, shr = 8, нигр = 8, Iwb = 8, вегр = 8, upb = 8, L= 8, Г = 8, X = 9, +Х = 9, +*'= 9, им = 9, і = 9;
Массивы и связанные с ними операции.
вид * массив = с фактический-описатель, специфицирующий вид, объединенный из {2.1.3.6.а) достаточного набора видов, каждый из которых начинается с вектор с;
оп < нигр, Iwb, 1_ > = (цел п, массив а) цел: с нижняя граница в и-й граничной паре паспорта значения 'а', если эта граничная пара существует с;
оп < вегр, upb, L > = (цел п, массив а) цел: с верхняя граница в*n-й граничной паре паспорта значения 'а', если эта граничная пара существует с; ' •
оп < нигр, lwb,L_ > = (массив а) цел: 1L а; е) оп < вегр, upb,Г> = (массив а) цел: 11_а;
{ Термин „достаточный набор”, использованный выше в (а), а также в 10.3.2.2.b и d, подразумевает, что никакая имевшаяся в виду собственно- программа не может не порождаться (никакая не имевшаяся в виду собст- венно-программа может порождаться) синтаксисом только за счет недостаточности видов в этом наборе.}
Операции над логическими операндами, a) on <V, или, ог> = (лог а, Ь) лог: (а Iистина! Ь); Ь) оп < А &, и, and > = (лог а, Ь) лог: (а Ib | ложь); с) оп<ті, ~,не,not>= (лога) лог: (аТложь! истина); d) оп < =, рв, eq > = (лог а, Ь) лог: (a, A b) V а А т11Ь);
оп < #=, /=, нр, пе > =(лог а), Ь) лог: (а = Ь); !
оп < абс, abc > = (лог а) цел: (all I 0);
Операции над целыми операндами.
оп < <, мш, It > = (Д цел а, Ь) лог: с истина, если значение 'а' меньше { 2.1.3.1 .е } значения 'Ь', а иначе ложь с;
оп <<, < =, нб, ІЄ > = (Д цел а, Ь) лог: (Ь < а);
оп < =, рв, eq > = (Д цел а, Ь) лог: а < b Л b < а ;
оп < =#, / =, нр, пе > = (Д цел а, Ь) лог: (а = Ь);
оп О, > = нм, ge > = (Д цел а, Ь) лог: b < а;
оп О, бш, gt > = (Д цел а, Ь) лог:Ь<а;
оп — = (Д цел а, Ь) Д цел: с значением 'а' минус { 2.1.3.1.Є J значение Ъ'с;
оп - = (Д цел а) Д цел: Д 0 — а;
оп + = (Д цел а, Ь) Д цел: а Ь;
оп + = (Д цел а) Л Цел: а;
оп < абс, abs > = (Д цел а)Д цел: (а < Д О I — al а);
on < X, ♦ > = (Д цел а, Ь) Д цел:
начало Д цел s:= ДО, і : = абс Ь;
пока і > Д 1
цк s : = s + а; і := і — Д 1 кц;
(b <Д01 — si s)
конец}
on < 4-, %, цед, over > = (Д цел а, Ь) Д цел:
если b =# Д О
то Д цел q : = Д 0„г := абс а;
пока (г : = г - абс b) > Д 0 цк q : = q + Д1 кц;
(а < ДОА b >Д0 Va> ДОА b < ДО I - ql q)
все;
п) оп < X, -г *, % X, %*, мод, mod > = (Д цел а, Ь) Д цел:
(Д цел г = а — а т ЬХ Ь; г < О I г + абс bI г);
оп / = (Д цел а, Ь) Д вещ: (Д вещ (а) / Д вещ (Ь);
on < t, * ♦, вверх, up > = (Д цел а, цел Ь) Д цел:
(Ь > О IД цел р : = Д 1; до b цк р := р X а кц; р);
оп <удл, leng > = (Д цел а) длин Д цел: с длинное Д цел значение, удлиненное из {2.1.3.1 .е } значения 'а' с;
г) оп < укр, shorten > = (длин Д цел а) Д цел: с Д цел значение, если оно существует, которое можно удлинить до {2.1.3.1.е} значения'а'с;
оп < нчт, odd > = (Д цел а) лог: абс а^-ХД2=Д1;
оп < знак, sign > = (Д цел а) цел:
(а>Д0111 :а<Д0 1-11 0);
on < 1, + X, + *, і, им > = (Д цел а, Ь) Д компл: (а, Ь);
Операции над вещественными операндами.
оп < <, мш, It > = (Д вещ а, Ь) лог: с истина, если значение 'а' меньше {2.1.3.1.е} значения 'Ь', а иначе ложь с;
оп < <, < =, нб, 1е > = (Д вещ а, Ь) лог: -i (b < а);
оп < =, рв, eq > = (Д вещ а, Ь) лог: а < b A b < а;
оп < ¥=, / =, нр, пе > = (Д вещ а, Ь) лог: -п (а = Ь);
оп О, > =, нм, ge > = (Д вещ а, Ь) лог: b < а;
оп О, бш, gt > = (Д вещ а, Ь) лог: b < а;
on - = (Д вещ а, b) Д вещ: