g)* операнд вида ВИД:

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

{ Примеры:

а) - х + 1 Ь) - х

с) - х • 1 }

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

Выдача W формулы F в окружении Е определяется следующим обра­зом:

  • пусть R — процедура, выдаваемая обозначением-операции формулы F;

  • пусть V1; ..., Vn [п есть 1 или 2] — [совместные} выдачи операндов формулы F в (локализующем, см. 3.2.2.Ь,} окружении Е1, устанавливае­мом вокруг Е;

W - выдача вызова {5.4.3.2.b} процедуры R в Е1 с Vj,..., Vn;

  • требуется, чтобы W по области действия не была младше Е.

[ Отметим, что a t b не в точности то же, что и аь в обычных обозначе­ниях; действительно, как (—1 t 2+4 = 5), так и (4 — 1 t 2 = 3) имеют зна­чение истина, поскольку первый, символ-минус является обозначением- унарной-операции, а второй — обозначением-бинарной-операции. J

  1. Вызовы

{ Вызовы используются для задания исполнения параметризованных процедур с фактическими-параметрами.

Примеры:

sin (х) • (р Isinl cos) (x).J

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

  1. вызов в СРЕДЕ выдающий ЗНАЧЕНИЕ {5D} :

ПЕРВИЧНОЕ в СРЕДЕ раскрыто выдающее процедуру

с [ПАРАМЕТРАМИ вырабатывающую ЗНАЧЕНИЕ [5DJ, упакованные кратким

фактические [ПАРАМЕТРЫ в СРЕДЕ { Ь, с}.

  1. фактические [ПАРАМЕТРЫ ПАРАМЕТР в СРЕДЕ [a, b}:

фактические [ПАРАМЕТРЫ в СРЕДЕ { b, с J.

знак а также [94f],
фактический ПАРАМЕТР в СРЕДЕ { с}.

  1. фактический параметр вида ВИД в СРЕДЕ { a, b} :

основа в СРЕДЕ сильно выдающая ВИД ( 32d J.

(Примеры:

  1. вывод (станд вывод, х) (см. 10.3.3.1.а)

  2. станд вывод, х с) х }

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

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

  • пусть {процедура } R и Vj, ..., Vn будут [ совместными J выдачами ПЕРВИЧНОГО из С в Е и составляющих фактических-параметров этого С в [локализующем, см. 3.2.2.Ь,} окружении Е1, устанавливаемом вокруг Е;

  • W — выдача вызова {b} процедуры R в El с V,..., Vn;

  • требуется, чтобы W по области действия не была младше Е.

  1. Выдача W „вызова” процедуры R в окружении Е1, возможно со зна­чениями {параметров} Vj Vn, определяется следующим образом:

  • пусть Е2 — окружение, устанавливаемое [ 3.2.2.ь) по Е1 вокруг окру­жения процедуры R согласно заданию-аргументов упакованного-задания- аргументов, если оно есть, текста-процедуры из R со значениями, если они есть, Vj,..., Vn;

  • W — выдача в Е2 основы текста-процедуры из R.

{ Рассмотрим Последовательное-предложение

проц замельзон = (цел п, проц (цел) вещ f) вещ:

начало длин вещ s ; = длин 0;

для і до п цк s +: = удл f (і) t 2 кц;

укр длин корень (s)

конец;

замельзон (ш, (цел)) вещ : xl [j]).

В этом контексте последний вызов дает тот же эффект, что и ядро: вещ:

цел п = т, проц (цел) вещ f = (цел j) вещ : xl [j];

начало длин вещ s : = длин 0;

для і до п цк s +: = удл f (і) t,2 кц;

укр длин корень (s) конец).

Таким образом, передача фактических-параметров аналогична исполне­нию описаний-тождества (4.4.2.а); см. также установление (3.2.2:Ь) и при­писывание (4.8.2.a).J

  1. Переходы

£ Переход может прекратить исполнение кортежа и заставить некоторый другой помеченный кортеж исполняться вместо него.

Примеры:

у : = если х>0 то корень (х) иначе на Принстон все • на сен пьер де шартрез.

С другой стороны, если контекст требует вида 'процедура вырабаты­вающая ЗНАЧЕНИЕ', то вместо этого выдается процедура, основой кото­рой служит данный переход, как в проц пуст m := на норт бервик.}

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

  1. переход в СРЕДЕ сильно выдающий ЗНАЧЕНИЕ {5а} : возможное указание { bj,

использующий СЛОВО идентификатор в СРЕДЕ выдающий метку {48Ь/.

  1. указание £aj: знак на ОФОРМЛЕННЫЙ 194 f, -/ ;

знак иди ОФОРМЛЕННЫЙ f 94f, -], символ верхний предел ОФОРМЛЕННЫЙ f 94g, -}.

/Примеры:

  1. на коотвейк • go to Варшава • зандвоорт

  2. на • go to}

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

Переход-в-СРЕДЕ-выдающий-ЗНАЧЕНИЕ J в окружении Е исполня­ется следующим образом:

• пусть сцена, выдаваемая в Е Идентификатором-метки этого J, состав­лена из кортежа S2 и окружения Е1;

Случай А: 'ЗНАЧЕНИЕ' не является никакой 'процедурой вырабаты­вающей ЗНАЧЕНИЕ1':

  • пусть S1 — кортеж наименьшего {1.1.3.2 .g} последо- вательного-предложения, содержащего S2;

  • исполнение S1 в Е1 или любого кортежа, исполняемого вместо него в Е1, прекращается {2.1,4.3.е};

  • S2 исполняется в Е1 „вместо” S1 в Е1;

Случай В: 'ЗНАЧЕНИЕ' есть 'процедура вырабатывающая ЗНАЧЕНИЕ!':

  • J в Е { завершается и J выдает процедуру, составленную из:

  1. нового текста-процедуры-в-СРЕДЕ-выдающего-ЗНАЧЕ- НИЕ, основа которого подобна {1.1.3.2.kJ этому J, (ii) окружения Е1.

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

  1. Ядра

■[ Ядра можно использовать, чтобы обеспечить сильную позицию, напри­мер, имя вещ (хх) в имя вещ (хх) : = 1, имя книга (нил) в следующая из проект : = : имя книга (нил) и строк (р I cl г) в s + := строк (р I с I г) .1

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

а) ядро в СРЕДЕ выдающее ЗНАЧЕНИЕ {5DJ :

формальный описатель ЗНАЧЕНИЯ в СРЕДЕ {46bJ, ЗАКРЫТОЕ предложение в СРЕДЕ сильно выдающее

ЗНАЧЕНИЕ {31а, 33а, с, d, е,34а, 35а, -}

{ Пример:

а) имя книга (нил)J

{ Выдачей ядра является, в силу предысполнения (2.1.4.1.с), выдача его ЗАКРЫТОГО-предложения. J

  1. Пропуски

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

а) пропуск в СРЕДЕ сильно выдающий ЗНАЧЕНИЕ f 5а) : знак пропуск { 94 fj.

£ Пример:

а) пропуск J

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

Выдачей пропуска является некоторое {неопределенное J значение, по области действия такое же, как и первичное окружение.

{ Вид выдачи пропуска-выдающего-ЗНАЧЕНИЕ есть 'ЗНАЧЕНИЕ'. Про- пуск-выдающий-пустое значение служит пустым оператором и его можно, например, использовать после метки, которая отмечает конец последова- тельного-предложения. J-

6. ПРИВЕДЕНИЕ

{ Приведения порождают приводимое из приведенного в соответствии с тремя критериями: априорного вида приводимого до применения како­го-либо приведения, апостериорного вида приведенного, требуемого после выполнения приведений, и синтаксической позиции, или „приводимости” этого приведенного. Приведения могут применяться друг к другу последо­вательно.

Существует шесть возможных приведений, называемых „распроцеду- ривание”, „разыменование”, „объединение”, „обобщение”, „векториза­ция” и „опустошение”. Каждое приведение, исключая „объединение”, ока­зывает соответствующее динамическое влияние на связанные с ним зна­чения. Следовательно, при помощи Приведений неявно можно запрограм­мировать ряд примитивных действий. J

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

f Всякое приведенное есть конструкт, дерево порождения которого может начинаться с последовательности приведений, оканчивающейся при­водимым. Порядок (завершения) исполнения этих приведений идет поэ­тому от приводимого к приведенному (, что и определило выбор этих па­рапонятий) . Например, і в вещ (і) является приведенным, дерево порож­дения которого включает 'после обобщения' и 'после разыменования' имен­но в этом порядке на пути от приведенного к приводимому. Разыменова­ние должно завершиться прежде, чем произойдет обобщение.

Соответствующее дерево порождения (с опущенным в СРЕДЕ’, ’ис­пользующий СЛОВО' и невидимыми поддеревьями) выглядит так:

'приведенный идентификатор

сильно выдающий вещественное'

I б.І.І.а

[-»'идентификатор выдающий вещественное после обобщения'

обобщение I 6.5.1.а

'идентификатор выдающий целое после разыменования' разыменование | 6.2.1.а

  1. 'идентификатор выдающий имя целого после сохранения'

I 6.1.1.Г

'идентификатор выдающий имя целого' (приводимое)

J 4.8.l.b, 9.1.l.h

  1. 'символ буква и лат' . JСинтаксис

  1. УСИЛЕНИЕ fa, 66а) :: УКРЕПЛЕНИЕ [вJ; обобщение [б5а, b, с, d] ; векторизация ]б6а} ; опустошение {67а, b}.

  2. УКРЕПЛЕНИЕ [ А, b ] :: РАСКРЫТИЕ { С }; объединение { 64а] .

С) РАСКРЫТИЕ { В, с, d, 62а, 63а, 64а, 65а, b, с, d] ::

сохранение { f J; разыменование {б2а} ;

распроцедуривание {63а} .

  1. СМЯГЧЕНИЕ {е, 63b} :: сохранение { f} ;

мягкое распроцедуривание {63b} .

  1. ФОРМА : : РАСКРЫВАЕМОЕ; ПРЯМОЕ.

  2. РАСКРЫВАЕМОЕ :: выборка в СРЕДЕ; вырезка в СРЕДЕ;

вызов в СРЕДЕ; текст процедуры в СРЕДЕ;

АРНАЯ формула в СРЕДЕ;

использующий СЛОВО идентификатор в СРЕДЕ.

  1. ПРЯМОЕ :: присваивание в СРЕДЕ; ядро в СРЕДЕ;

отношение одноименности в СРЕДЕ; изображаемое в СРЕДЕ;

ЛОКАЛИЗУЮЩИЙ генератор в СРЕДЕ; текст формата в СРЕДЕ.

  1. приведенная ФОРМА сильно

выдающая ЗНАЧЕНИЕ { 5А, В, С, D, A341i} :

если (ФОРМА) есть (РАСКРЫВАЕМОЕ), РАСКРЫВАЕМОЕ выдающее значение после УСИЛЕНИЯ [ а] ;

если (ФОРМА) есть (ПРЯМОЕ),

ПРЯМОЕ выдающее ЗНАЧЕНИЕ после УСИЛЕНИЯ {А],

если неверно что (ЗНАЧЕНИЕ после УСИЛЕНИЯ) есть (пустое значение после распроцедуривания)

  1. приведенная ФОРМА крепко

выдающая ВИД [ 5 А, В, С, D, 542с} :

ФОРМА выдающая ВИД после УКРЕПЛЕНИЯ { в] .

:) приведенная ФОРМА раскрыто

выдающая ЗНАЧЕНИЕ f 5А, В, С, D] :

ФОРМА выдающая ЗНАЧЕНИЕ после РАСКРЫТИЯ [ с].

I) приведенная ФОРМА слабо выдающая

?ИМЯ СОСТАВНОГО {5А, В, С, D} :

ФОРМА выдающая ?ИМЯ СОСТАВНОГО после РАСКРЫТИЯ { с] , если неверно что (?ИМЯ) есть (ПУСТО)

и (РАСКРЫТИЕ) есть (разыменование)

• приведенная ФОРМА мягко выдающая ВИД { 5А, В, С, d] : ФОРМА выдающая ВИД после СМЯГЧЕНИЯ [ D].

» ФОРМА выдающая ЗНАЧЕНИЕ

после сохранения [С, D, 67а, b} :

ФОРМА выдающая ЗНАЧЕНИЕ.

)* приведенное ПРИВОДИМО выдающее ЗНАЧЕНИЕ:

приведенная ФОРМА ПРИВОДИМО выдающая ЗНАЧЕНИЕ { a, b, с, d, е] .

)* приводимое выдающее ЗНАЧЕНИЕ:ФОРМА выдающая ЗНАЧЕНИЕ.

{Примеры:

  1. 3.14 (в х : = 3.14)

  2. 3.14 (вх + 3.14)

  3. sin (в sin (х))

  4. х1 (в х1 [2] : = 3.14)

  5. х (в х := 3.14)}

{ Ссылки на 'ФОРМУ выдающую ЗНАЧЕНИЕ' (правило f) содержатся в подразделе 5.1.А, В, С, D. Заметим, что 'ФОРМА выдающая ЗНАЧЕНИЕ' может быть тупиком. Тупики в этой главе не отмечаются^

{ Существуют пять сортов синтаксических позиций, а именно:

  • „сильные” позиции, т.е. фактические-параметры, например х в sin (х), источники, например х в у := х, ЗАКТЫТЫЕ-предложения ядер, например (нил) в имя книга (нил), и операторы, например, у : = х в (у := х; х : = 0) ;

„крепкие” позиции, т.е. операнды, например х в х + у;

  • „раскрытые” позиции, т.е. выясняющие-предложения, например х > 0 в (х>0 1x1 0), грани, например і в х1 [і], и ПЕРВИЧНЫЕ вызо­вов, например sin в sin (х);

  • „слабые” позиции, т.е. ВТОРИЧНЫЕ выборок и ПЕРВИЧНЫЕ выре­зок, например х1 в х1 [і];

„мягкие” позиции, т.е. получатели, например х в х := у, и одно из ТРЕТИЧНЫХ отношений-одноименности, например х в хх : =: х. Сильные позиции появляются также при уравнивании (3.2.1.е).

В сильных позициях могут встретиться все шесть приведений, в креп­ких позициях запрещены векторизация, обобщение и опустошение, в рас­крытых и слабых позициях, кроме того, запрещено объединение, а в мяг­ких позициях разрешено только распроцедуривание. Однако ФОРМА-выда- ющая-СОСТАВНОЕ-после-разыменования не может быть прямым наследни­ком приведенной-ФОРМЫ-слабо-выдающей-СОСТАВНОЕ (правило d), по­скольку в противном случае х : = х1 [і] было бы двусмысленным синтакси­чески (хотя в этом случае не семантически). Точно так же ПРЯМОЕ-выдаю- щее-пустое-значение-после-распроцедуривания не может быть прямым на­следником приведенного-ПРЯМОГО-сильно-выдающего-пустое-значение (правило а), так как в противном случае было бы двусмысленным (проц пусть энгельфриет; проц пуст рейпенс = пропуск: энгельфриет := рейпенс: пропуск) .}

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

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

  1. Синтаксис

а) ФОРМА выдающая ВИДІ после разыменования {б1С }:

ФОРМА выдающая ИМЯ ВИДА2 после РАСКРЫТИЯ £61С].

если ВИДІ фиксирует ВИД2 { 47а, Ь, с, -}.

{ Пример:

а) х (в вещ (х))}

  1. Семантика

Выдача W ФОРМЫ -выдающей-ВИД-после-разыменования F определяет­ся следующим образом:

  • пусть {имя} N — выдача ФОРМЫ-после-РАСКРЫТИЯ F;

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

  • W — значение, именуемое этим N.

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

{Распроцедуривание используется, когда надо вызвать процедуру без параметров. Например, в х := псч псевдослучайное число й вызывается процедура, выдаваемая псч, и присваивается выдаваемое ею вещественное число; апостериорным видом псч является 'вещественное'. С точки зрения синтаксиса из априорного вида удаляется начальное 'процедура вырабатыва­ющая'. }

  1. Синтаксис

  1. ФОРМА выдающая ЗНАЧЕНИЕ после распроцедуривания {61С,67а}: ФОРМА выдающая процедуру вырабатывающую ЗНАЧЕНИЕ после РАСКРЫТИЯ {61С}.

  2. ФОРМА выдающая ВИД после