Когда G есть задание-генератора-выдающего-имя-процедуры, вид выда­чи W не существен. J

Ь) „Локализующим окружением”, доступным из окружения Е, являет­ся окружение Е1, определяемое следующим образом:

Если Е - „нелокализующее” {з.2.2.Ь} ,

то Е1 — локализующее окружение, доступное из окружения этого Е;

иначе Е1 есть Е.

{ Окружение является нелокализующим, если оно устанавливается со­гласно последовательному-предложению или выясняющему-предложению, которое не содержит составляющего описания-вида, -идентификатора или -операции, либо согласно заглавию-цикла (3.5.1.Ь) или спецификации (3.4.1.j,k).}

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

  1. Синтаксис.

а) псевдоимя в СРЕДЕ сильно выдающее имя ВИДА { 5BJ: знак нил {94fj.

[Пример:

а) нил.{Нил - это аналог нуля для имен}}

  1. Семантика.

Выдачей псевдоимени является псевдоимя.

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

{Поля структур можно получить посредством выборок (5.3.1), а эле­менты массивов — посредством вырезок (5.3.2); кроме того, соответству­ющие действия определены и над составными именами.}

  1. Выборки

    1. { Выборка выбирает поле из структуры или (если это - „выборка из массива”) некоторый массив из массива, элементами которого служат структуры. Например, вч из z выбирает первое вещественное поле (называ­емое обычно вещественной частью) выдачи этого z. Если z выдает имя, то вч из z также выдает имя, но если g выдает комплексное значение, то вч из g выдает вещественное значение, а не именующее его имя.}Синтаксис.

  1. 7ИМЯ :: ИМЯ; ПУСТО.

  2. 7ССЫЛКА НА :: ИМЯ; ИМЯ подвижного; ПУСТО.

{ИМЯ :: имя; временное имя.}

  1. выборка в СРЕДЕ выдающая ?ИМЯ ВИДА1 { 5С} : использующий СЛОВО указатель поля

вида ВИДІ среди !ПОЛЕЙ { 48d} , знак из { 94f} , ВТОРИЧНОЕ в СРЕДЕ слабо выдающее ?ИМЯ

структуры содержащей !ПОЛЯ в себе {5С};

если (ВИДІ) есть (МАССИВ из ВИДА2) , использующий СЛОВО указатель поля

вида ВИД2 среди !ПОЛЕЙ { 49dJ ,знак из {94fJ, ВТОРИЧНОЕ в СРЕДЕ слабо выдающее 7ССЫЛКУ

НА МАССИВ из структур содержащих !ПОЛЯ в себе { 5CJ , если (?ИМЯ) выводится из (7ССЫЛКИ НА) { Ь, с,-}•

  1. ЕСЛИ (временное имя) выводится из

(ИМЕНИ подвижного) { а, 532а, 66а} : ЕСЛИ истина.

  1. ЕСЛИ (7ИМЯ) выводится из

(7ИМЕНИ) [ а, 532а, 66а } : ЕСЛИ истина.

{ Примеры:

а) вч из z • вч из z 1}

{ Вид вч из z начинается с 'имя', так как вид z начинается с него же.

Пример:

цел возраст :=7; ст (лог пол, цел возраст) жиль;

возраст из жиль := возраст;

Отметим, что получатель возраст из жиль выдает имя, так как жиль само выдает имя. После описания-тождества

ст (лог пол, цел возраст) джек = (истина, 9),

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

  1. Семантика.

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

  • пусть V будет выдачей ВТОРИЧНОГО выборки S;

  • требуется, чтобы V {, если оно имя,} не было псевдоименем;

W - значение, выбираемое в {2.1.3.З.а, е, 2.1.3.4.к} , или имя, генери­руемое из { 2.1.3.4.1} V по указателю-поля этого S.

{ Выборка из имени, именующего структуру, выдает существующее подыми (2.1.3.3.е) этого имени. Имя, Порожденное из имени, именующего массив, посредством выборки со ВТОРИЧНЫМ-выдающим-МАССИВ-из- ВИДА (как в вч из z 1), есть имя, которое может как быть, так и не быть вновь созданным для этой цели. J

  1. Вырезки

{ Вырезки получаются посредством индекЬации,’например х1 [і], вы­резания, например х1 [2 : п], или и того и другого, например х2 [j : n, j]

или х2 [, к]. И индексация, и вырезание могут применяться только к ПЕР­ВИЧНЫМ, например к х1 или (р I хИ yl), но не к вч из z 1. Значением вы­резки может быть или один из элементов выдачи ее ПЕРВИЧНОГО, или подмножество таких элементов; например, х1 [і] — вещественное число из вектора вещественных чисел xl, х2 [і,] представляет собой і-ю строку мат­рицы х2, а х2 [, к] - ее к-й столбец.}

  1. Синтаксис.

А) 7МАССИВ :: МАССИВ: ПУСТО.

а) вырезка в СРЕДЕ выдающая 7ИМЯ ВИДА1 {5D} :

П

Ь)

с)

d)

е)

f)

g)

h)*

і)*

ЕРВИЧНОЕ в СРЕДЕ слабо выдающее 7ССЫЛКУ НА МАССИВ 1 из ВИДА1 { 5Dj , индексирующий ОФОРМЛЕННЫЙ индексатор МАССИВА 1 в СРЕДЕ оставляющий ПУСТО { Ь, с, -

если (?ИМЯ) выводится из (7ССЫЛКИ НА) [ 531b, с, -} ;

если (ВИДІ) есть (МАССИВ2 из ВИДА2), ПЕРВИЧНОЕ в СРЕДЕ слабо выдающее 7ССЫЛКУ НА МАССИВ1 из ВИДА2 { 5Е>] , индексирующий ОФОРМЛЕННЫЙ индексатор МАССИВА!

в СРЕДЕ оставляющий МАССИВ2 { b,d, - } , если (7ИМЯ) выводится из (7ССЫЛКИ НА) f 531b, с, -}. (МАССИВ :: вектор; МАССИВ векторов.}

индексатор вектора МАССИВОВ в СРЕДЕ

оставляющий 7МАССИВ1 7МАССИВОВ2 {a, b} : индексатор вектора в СРЕДЕ оставляющий 7МАССИВ1 [ с, d, -}, знак а также {94f},

индексатор МАССИВА в СРЕДЕ оставляющий 7МАССИВ2 { b, с, d, -}.

индексатор вектора в СРЕДЕ оставляющий ПУСТО fa, b} : индекс в СРЕДЕ [е}.

индексатор вектора в СРЕДЕ оставляющий вектор (a, bj : отрезок в СРЕДЕ { f };

возможная сдвинутая нижняя граница в СРЕДЕ { g } .

индекс в СРЕДЕ {с}:

основа в СРЕДЕ раскрыто выдающая целое f 32dj .

отрезок в СРЕДЕ ( с }:

возможная нижняя граница в СРЕДЕ ( 46mj,

знак вплоть до (94fJ,

возможная верхняя граница в СРЕДЕ {46п} , возможная сдвинутая нижняя граница в СРЕДЕ [ gj . сдвинутая нижняя граница в СРЕДЕ (d, f} :

знак с [ 94f} ,

нижняя граница в СРЕДЕ { 46m} .

ограничение : индекс в СРЕДЕ { е} ; отрезок в СРЕДЕ f fj ; возможная сдвинутая нижняя граница в СРЕДЕ ( gj.

индексатор:

индексатор МАССИВА в СРЕДЕ

оставляющий 7МАССИВ {b, с, dj.

j)* грань : индекс в СРЕДЕ {е}; нижняя граница в СРЕДЕ (46m} ;

верхняя граница в СРЕДЕ (46nJ ;

сдвинутая нижняя граница в СРЕДЕ {g} ,

{Примеры:

  1. х2 [i, j] • х2 [,j]

  2. 1 : 2, j (в х2 [1 : 2, j]) • і, j (в х2 [і, j])

  3. j (в х2 [1 : 2, j] d) 1 : 2 • @ 0 (в х1 [@ 0])

е) j , f) 1 :2@0

< g) @ 0}

{ Индекс уменьшает число измерений на одно, а отрезок не меняет его. В правиле (а) 'МАССИВ' отражает число ограничений в вырезке, а 'МАС- СИВ2' — число тех из них, которые являются отрезками или возможными- сдвинутыми-нижними-границами.

Если значение, из которого должна быть сделана вырезка, есть имя, то выдачей этой вырезки также будет имя. Кроме того, если вид исходного имени есть 'имя подвижного МАССИВА из ВИДА', то эта выдача будет временным именем (см. 2.1.3.б.с).}

5.3.2.2. Семантика.

  1. Выдача W вырезки S определяется следующим образом:

  • пусть V и (lj,..., 1п) - {совместные выдачи} ПЕРВИЧНОГО вырезки S и индексатора £ b } из S;

  • требуется, чтобы V {, если оно имя,} не было псевдоименем;

  • пусть ((rl, si), ..., (rn, sn)) —паспорт выдачи Vили значения, именуе­мого V;

Для і = 1,..., п

Случай А: 1 j — целое число:

  • требуется, чтобы г; < 1, < Si;

Случай В: lj — тройка (1, u, 1') :

  • пусть L будет г;, если 1 отсутствует, и 1 в противном случае;

  • пусть U будет sp если и отсутствует, и и в противном случае;

  • требуется, чтобы ri < L и U < Sjj

  • пусть D будет 0, если 1' отсутствует и L — 1' в противном слу­чае; { D — это число, которое следует вычесть из L для того, что­бы получить сдвинутую нижнюю границу;}

  • 1 j заменяется на (L, U, D);

  • W - значение, выбираемое в {2.1.3.4.а, g, і}, или имя, гене­рируемое из { 2.1.3.4.j} Vпо (lj,..., 1п).

  1. Выдача индексатора 1 вырезки S есть отрезок { 2.1.3.4.h} или ин­декс {2.1.3.4.а} (1 j,..., 1П), определяемый следующим образом:

• составляющие грани вырезки S исполняются совместно;

Для і = 1,..., п, где п — число составляющих ограничений вырезки S, Случай А: і-е ограничение есть индекс:

  • lj — { целое число, которое есть} выдача этого индекса;

Случай В: і-е ограничение есть отрезок Т:

  • I; - тройка (1, u, 1'), где

  • 1 — выдача составляющей нижней-границы из Т, если она

есть, а иначе отсутствует,

  • и — выдача составляющей верхней-границы из Т, если она есть, а иначе отсутствует,

  • 1' — выдача составляющей сдвинутой-нижней границы из

Т, если она есть, а иначе 1:

Случай С: і-е ограничение есть возможная-сдвинутая-нижняя-граница N: • lj — тройка (отсутствует, отсутствует, 1'), где

• 1' — выдача сдвинутой-нижней-границы из N, если она

есть, а иначе отсутствует.

{ Отметим, ЧТО если (І! , .... 1п) не содержит троек, то это индекс, выби­рающий один элемент; в противном случае это отрезок, выбирающий под­множество элементов.}

[ Вырезка из имени, именующего массив, выдает существующее поды­ми (2.1.3.4.j) этого имени, если все составляющие ограничения этой вырез­ки являются индексами. В противном случае она выдает генерируемое имя, которое может как быть, так и не быть вновь созданным для этой цели. Следовательно, выдача отношения-одноименности х1 [1 : 2] : = : xl [1 : 2] не определена, хотя х! [1] :=: xl [1] должно всегда выдавать истина.}

{ Различные возможные границы в выдаче вырезок иллюстрируются следующими примерами, для каждого из которых показан паспорт значе­ния, именуемого соответствующей выдачей:

[О : 9,2 : 11] цел і 3;

ІЗ [1,3 : 10 @ 3] [<(3,10))ji;

іЗ [1, 3 :10] yi ((1, 8))yi;

ІЗ [1,3 :] J ((1,9)) ji;

ІЗ [1, :] ji((l,10))ji;

ІЗ [1, ] уі (2,11))уі';

ІЗ [, 2] уі (0,9)) ji.J

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

{процедуры создаются из текстов-процедур (5.4.1) или переходов (5.4.4); их можно „вызвать” при помощи вызовов (5.4.3) , формул (5.4.2) или посредством распроцедуривания (6.3).}

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

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

Примеры:

пуст : печ (х);

(имя вещ а, вещ Ь) лог : (а < b I а : = Ь; истина I ложь).}

  1. Синтаксис.

  1. текст процедуры в СРЕДЕ 1 выдающий

процедуру вырабатывающую ЗНАЧЕНИЕ { 44d, 5а} :

формальный описатель ЗНАЧЕНИЯ в СРЕДЕ1 {46b} ,

знак признак процедуры { 94f},

основа в СРЕДЕ1 сильно выдающая ЗНАЧЕНИЕ {3?d}

  1. текст процедуры в СРЕДЕ 1 выдающий процедуру

с ! ПАРАМЕТРАМИ вырабатывающую ЗНАЧЕНИЕ {44d, 5А} : упакованное кратким

определяющее новые ! ОПИСАНИЯ? задание

аргументов в СРЕДЕ 1 с новыми !ОПИСАНИЯМИ? { е J,

если '.ОПИСАНИЯ? оказались [ПАРАМЕТРАМИ {с, d, -} , формальный описатель ЗНАЧЕНИЯ в СРЕДЕ 1 { 46 b} , знак признак процедуры {94f} ,

основа в СРЕДЕ1 с новыми ОПИСАНИЯМИ?

сильно выдающая ЗНАЧЕНИЕ {3?d}.

  1. ЕСЛИ ОПИСАНИЯ ОПИСАНИЕ оказались

[ПАРАМЕТРАМИ ПАРАМЕТРОМ { Ь, с}:

ЕСЛИ [ОПИСАНИЯ оказались [ПАРАМЕТРАМИ { с, d, ■} и ОПИСАНИЕ оказалось ПАРАМЕТРОМ f d, -} .

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

  1. ЕСЛИ СЛОВО для ВИДА оказалось параметром вида

ВИД [Ь, с}:

ЕСЛИ истина.

  1. определяющее новые ’.ОПИСАНИЯ?

задание аргументов в СРЕДЕ? { b, е, 34j} :

формальный описатель ВИДА в СРЕДЕ { 46b} , групповое определение параметров вида ВИД

через [ОПИСАНИЯ? в СРЕДЕ? { 41b, с} ;

если (ОПИСАНИЯ?) есть (ЮПИСАНИЯЗ ОПИСАНИЯ4),

формальный описатель ВИДА в СРЕДЕ? { 46b} ,

групповое определение параметров вида ВИД

через ОПИСАНИЯЗ в СРЕДЕ? {41b, с},

знак а также {94f},

определяющее новые ОПИСАНИЯ4 задание аргументов в СРЕДЕ? { е} . f) определение параметра вида ВИД

через СЛОВО? для ВИДА в СРЕДЕ? { 41 с} : определяющий СЛОВО?

идентификатор в СРЕДЕ? выдающий ВИД f 48а} .

g)* формальный параметр вида ВИД:

определение параметра вида ВИД через СЛОВО для ВИДА в СРЕДЕ { f }.

а) вещ : псч X 10 Ь) (лог а, Ь) лог : (a I b I ложь)

е) лог а. b • лог а, лог b f) а}

  1. Семантика.

Выдачей текста-процедуры Т в окружении Е является процедура, со­ставленная из

  1. Т и

  2. окружения, необходимого для £7.2.2.cJ Т в Е.

  1. Формулы

{Формулы бывают бинарные и унарные, например х + і или абс х. Поря­док исполнения формулы определяется приоритетами ее обозначений-опе­раций; первыми исполняются унарные формулы, затем — бинарные, от высшего приоритета к низшему. J

  1. Синтаксис.

  1. БИНАРНОЕ :: приоритета ПРИОРИТЕТ.

  2. УНАРНОЕ :: приоритета III III III I.

  3. АРНОЕ :: БИНАРНОЕ; УНАРНОЕ.

  4. 7НОМЕР :: НОМЕР; ПУСТО.

  1. БИНАРНАЯ формула в СРЕДЕ выдающая ЗНАЧЕНИЕ £ с, 5BJ : БИНАРНЫЙ 7НОМЕРА операнд выдающий ВИДІ в СРЕДЕ | с. -} . использующее ИНФИКС обозначение операции в СРЕДЕ

выдающее процедуру с параметром вида ВИДІ

параметром вида ВИД2 вырабатывающую ЗНАЧЕНИЕ [48Ь/ .

если ИНФИКС для БИНАРНОГО идентифицирован в СРЕДЕ £ 72aJ ,

БИНАРНЫЙ НОМЕРА операнд выдающий ВИД2 в СРЕДЕ {с. - }.

  1. УНАРНАЯ формула в СРЕДЕ выдающая ЗНАЧЕНИЕ {с. 5В} : использующее ПРЕФИКС обозначение операции в СРЕДЕ выдающее процедуру с параметром вида ВИД

вырабатывающую ЗНАЧЕНИЕ £48b j, УНАРНЫЙ операнд выдающий ВИД в СРЕДЕ £ с}.

  1. АРНЫЙ операнд выдающий ВИД в СРЕДЕ [a.bj:

приведенная АРНАЯ формула в СРЕДЕ f a. bj

крепко выдающая ВИД f 61b} ;

если (АРНОЕ) есть (УНАРНОЕ),

ВТОРИЧНОЕ в СРЕДЕ крепко выдающее ВИД { 5С} .

Ь)* формула выдающая ЗНАЧЕНИЕ:

АРНАЯ формула в СРЕДЕ выдающая ЗНАЧЕНИЕ { a, b}

е)* обозначение ИНФИКСОМ бинарной операции

выдающее ДВУМЕСТНУЮ:

ПРИМЕНЯЮЩЕЕ ИНФИКС обозначение операции в СРЕДЕ выдающее ДВУМЕСТНУЮ £ 48а. b] . f)* обозначение ПРЕФИКСОМ унарной операции

выдающее ОДНОМЕСТНУЮ:

ПРИМЕНЯЮЩЕЕ ПРЕФИКС обозначение операциив СРЕДЕ выдающее ОДНОМЕСТНУЮ [48а, b} .