Шаг 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.с), но на носителях, для которых эти литеры не доступны, надо выбирать другие элементы-строки (и символ-буква-е-лат с символом- буква-и-лат — очевидные кандидаты) .}

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

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

{ Описания данного стандартного-вступления включают „запросы к об­становке”, поставляющие информацию о конкретных особенностях данной реализации (2.2.2.с), „стандартные виды”, „стандартные обозначения опе­раций и функции”, „операции синхронизации” и (данные в подразделе 10.3) „описания обмена”.}

  1. Запросы к обстановке а) цел число длин цел = с 1 плюс число добавочных удлинений целых чисел {2.1.3.1.d} с;

цел ini lengths = число длин цел:

  1. цел число кор цел = с 1 плюс число добавочных укорочений целых чисел {2.1.3.l.d} с;

цел int shorths = число кор цел;

  1. Д цел Д макс цел = с наибольшее Д цел значение {2.2.2.Ь} с;

Д цел L m|x int =? Д макс цел;

  1. цел число длин вещ = с 1 плюс число добавочных удлинений веществен­ных чисел {2.1.3.1.dj с;

цел real lengths = число длин вещ;

  1. цел число кор вещ = с 1 плюс число добавочных укорочений веществен­ных чисел (2.1.3. l.d} с;

цел real shorths = число кор вещ;

  1. Д вещ макс вещ = с набольшее Д вещ значение { 2.2.2.b} с;

Д вещ L max real = Д макс вещ;

  1. Д вещ Д точность вещ = с наименьшее Д вещ значение, такое, что как Д 1 + Д точность вещ > Д 1, так и Д1 — Д точность вещ < Д1 { 2.2.2.Ь} с;

Д вещ L small real = Д точность вещ;

  1. цел число длин бит = с 1 плюс число добавочных размеров {j} бито­вых с;

цел bits lengths = число длин бит;

  1. цел число кор бит = с 1 плюс число добавочных размеров {j} коротких битовых с:

цел bits shorths = число кор бит;

  1. цел Д' размер бит = с число элементов в Д бит; см. Д бит {10.2,2.gJ ; это число увеличивается (уменьшается вместе с „размером”, т.е. с чи­слом 'длин' (взятым с обратным знаком числом 'кор'), из которых со­ставлено 'Д’, до достижения определенного размера, а именно „числа до­бавочных размеров” (взятого с обратным знаком „числа добавочных размеров коротких”) битовых, после чего оно остается постоянным с;

цел L bits width= Д размер бит;

  1. цел число длин слог = с 1 плюс число добавочных размеров (т] слого­вых с;

цел bytes lengths = число длин слог;

  1. цел число кор слог = cl плюс число добавочных размеров коротких {т} слоговых с;

цел bytes shorths = число кор слог;

  1. цел Д размер слог = с число элементов в Д слог; см. Д слог {10,2.2.h} ; это число увеличивается (уменьшается) вместе с „размером”, т.е, с чи­слом 'длин' ^взятым с обратным знаком числом 'кор'), из которых со­ставлено 'Д , вплоть до достижения определенного размера, а именно „числа добавочных размеров” (взятого с обратным знаком „числа до­бавочных размеров коротких”) слоговых, после чего оно остается по­стоянным с;

цел L bytes width = Д размер слог;

  1. оп < абс, abc > = (лит а) цел: с целочисленный эквивалент (2.1.3,Lg] ли­теры а с;-

  1. оп < пред, герг > = (цел а) лит: с та литера 'х', если она существует, для для которой абс х = а с;

  2. цел макс лит = с наибольший целочисленный эквивалент {2.1.3.1.gJ ли­теры с:

цел max abs char = макс лит;

  1. лит заполнитель = с некоторая литера с; лит null character = заполнитель;

г) лит да = с литера, используемая для представления 'истина' во время обмена (10.3.3.1 .а, 10.3.3.2.а } с;

лит flip = да;

  1. лит нет = с литера, используемая для представления 'ложь' во время об­мена с;

лит flop = нет;

  1. лит литера ошибки = с литера, используемая во время обмена для пред­ставления непреобразуемых арифметических значений {10.3.2.1 .b, с, d, е, f } с;

лит errorchar = литера ошибки;

и) лит пробел =”л_”; лит blank = пробел;

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

  1. вид пуст = с фактический-описатель, специфицирующий вид 'пустое зна­чение' с;

вид void = пуст;

  1. вид лог = с фактический-описатель, специфицирующий вид 'логическое' с;

вид bool = лог;

  1. вид Д цел = с фактический-описатель, специфицирующий вид 'Д цел' с; вид L int = Д цел с;

  2. вид Д вещ = с фактический описатель, специфицирующий вид 'Д вещ' с; вид L real = Д вещ;

  3. вид лит = с фактический-описатель, специфицирующий вид 'литерное' с; вид char = лит;

  4. вид L compl = ст (Д вещ re, im);

вид Д компл = L compl;

  1. вид Д бит = ст ([1 : Д размер бит] лог Д F); {см. 10.2.1 .j} {Этот ука- затель-поля скрыт от пользователя для того, чтобы он не мог проник­нуть внутрь данной структуры; в частности, он не может индексировать данное поле.} вид L bits = Д бит;

  2. вид Д слог = ст ([1 : Д размер слог] лит Д F); {см. 10.2.1 .т} вид L bytes = Д слог;

  3. вид строк =подв [1 . 0] лит;

вид string = строк;

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

  2. 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;

  1. Массивы и связанные с ними операции.

  1. вид * массив = с фактический-описатель, специфицирующий вид, объеди­ненный из {2.1.3.6.а) достаточного набора видов, каждый из которых начинается с вектор с;

  2. оп < нигр, Iwb, 1_ > = (цел п, массив а) цел: с нижняя граница в и-й гра­ничной паре паспорта значения 'а', если эта граничная пара существу­ет с;

  3. оп < вегр, upb, L > = (цел п, массив а) цел: с верхняя граница в*n гра­ничной паре паспорта значения 'а', если эта граничная пара существу­ет с; ' •

  4. оп < нигр, lwb,L_ > = (массив а) цел: 1L а; е) оп < вегр, upb,Г> = (массив а) цел: 11_а;

{ Термин „достаточный набор”, использованный выше в (а), а также в 10.3.2.2.b и d, подразумевает, что никакая имевшаяся в виду собственно- программа не может не порождаться (никакая не имевшаяся в виду собст- венно-программа может порождаться) синтаксисом только за счет недоста­точности видов в этом наборе.}

  1. Операции над логическими операндами, a) on <V, или, ог> = (лог а, Ь) лог: (а Iистина! Ь); Ь) оп < А &, и, and > = (лог а, Ь) лог: (а Ib | ложь); с) оп<ті, ~,не,not>= (лога) лог: (аТложь! истина); d) оп < =, рв, eq > = (лог а, Ь) лог: (a, A b) V а А т11Ь);

  1. оп < #=, /=, нр, пе > =(лог а), Ь) лог: (а = Ь); !

  2. оп < абс, abc > = (лог а) цел: (all I 0);

  1. Операции над целыми операндами.

  1. оп < <, мш, It > = (Д цел а, Ь) лог: с истина, если значение 'а' меньше { 2.1.3.1 .е } значения 'Ь', а иначе ложь с;

  2. оп <<, < =, нб, ІЄ > = (Д цел а, Ь) лог: (Ь < а);

  3. оп < =, рв, eq > = (Д цел а, Ь) лог: а < b Л b < а ;

  4. оп < =#, / =, нр, пе > = (Д цел а, Ь) лог: (а = Ь);

  5. оп О, > = нм, ge > = (Д цел а, Ь) лог: b < а;

  6. оп О, бш, gt > = (Д цел а, Ь) лог:Ь<а;

  7. оп — = (Д цел а, Ь) Д цел: с значением 'а' минус { 2.1.3.1.Є J значение Ъ'с;

  8. оп - = (Д цел а) Д цел: Д 0 — а;

  9. оп + = (Д цел а, Ь) Д цел: а Ь;

  10. оп + = (Д цел а) Л Цел: а;

  11. оп < абс, abs > = (Д цел а)Д цел: (а < Д О I al а);

  12. on < X, ♦ > = (Д цел а, Ь) Д цел:

начало Д цел s:= ДО, і : = абс Ь;

пока і > Д 1

цк s : = s + а; і := і — Д 1 кц;

(b <Д01 — si s)

конец}

  1. on < 4-, %, цед, over > = (Д цел а, Ь) Д цел:

если b =# Д О

то Д цел q : = Д 0„г := абс а;

пока (г : = г - абс b) > Д 0 цк q : = q + Д1 кц;

(а < ДОА b >Д0 Va> ДОА b < ДО I - ql q)

все;

п) оп < X, -г *, % X, %*, мод, mod > = (Д цел а, Ь) Д цел:

(Д цел г = а — а т ЬХ Ь; г < О I г + абс bI г);

  1. оп / = (Д цел а, Ь) Д вещ: (Д вещ (а) / Д вещ (Ь);

  2. on < t, * ♦, вверх, up > = (Д цел а, цел Ь) Д цел:

(Ь > О IД цел р : = Д 1; до b цк р := р X а кц; р);

  1. оп <удл, leng > = (Д цел а) длин Д цел: с длинное Д цел значение, удлиненное из {2.1.3.1 .е } значения 'а' с;

г) оп < укр, shorten > = (длин Д цел а) Д цел: с Д цел значение, если оно существует, которое можно удлинить до {2.1.3.1.е} значения'а'с;

  1. оп < нчт, odd > = (Д цел а) лог: абс а^-ХД2=Д1;

  2. оп < знак, sign > = (Д цел а) цел:

(а>Д0111 :а<Д0 1-11 0);

  1. on < 1, + X, + *, і, им > = (Д цел а, Ь) Д компл: (а, Ь);

  1. Операции над вещественными операндами.

  1. оп < <, мш, It > = (Д вещ а, Ь) лог: с истина, если значение 'а' меньше {2.1.3.1.е} значения 'Ь', а иначе ложь с;

  2. оп < <, < =, нб, 1е > = (Д вещ а, Ь) лог: -i (b < а);

  3. оп < =, рв, eq > = (Д вещ а, Ь) лог: а < b A b < а;

  4. оп < ¥=, / =, нр, пе > = (Д вещ а, Ь) лог: -п (а = Ь);

  5. оп О, > =, нм, ge > = (Д вещ а, Ь) лог: b < а;

  6. оп О, бш, gt > = (Д вещ а, Ь) лог: b < а;

  7. on - = (Д вещ а, b) Д вещ: