мягкого распроцедуривания {6Ю}:

ФОРМА выдающая процедуру вырабатывающую ВИД

послеСМЯГЧЕНИЯ {61DJ.

I Примеры:

  1. псч (в вещ (псч))

  2. х или у (в х или у := 3.14, см. 1.1.2)}

  1. Семантика

Выдача W ФОРМЫ-выдающей-ЗНАЧЕНИЕ-после-распроцедуривания или ФОРМЫ-выдающей-ЗНАЧЕНИЕ-после-мягкого-распроцедуривания F в окружении Е определяется следующим образом:

  • пусть { процедура } R будет выдачей в Е прямого наследника из F;

  • W — выдача вызова {5.4.3.2.b} из R в Е;

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

  1. Объединение

{Объединение не изменяет вида значения, выдаваемого конструктом во время счета, а просто создает для него большую свободу. Такое значение должно быть приемлемо не только для одного какого-то вида, но для цело­го множества видов. Однако после объединения это значение может исполь­зоваться примитивным действием только после динамической проверки его сопоставляюшим-предложением { 3.4.1.g}; в самом деле, с конструктом вида 'ПРЕДСТАВИТЕЛЬ' нельзя запрограммировать никакие примитивные действия (кроме, конечно, присваивания переменной-вида-ПРЕДСТАВИ- ТЕЛЬ).

Пример:

об (лог, лит) t, v;

t : = ”a”;t := истина; v := t.J

  1. Синтаксис

  1. ФОРМА выдающая ПРЕДСТАВИТЕЛЬ после объединения [бій] : ФОРМА выдающая ЗНАЧЕНИЕ после РАСКРЫТИЯ £б IC }, если ЗНАЧЕНИЕ служит ПРЕДСТАВИТЕЛЕМ { b }.

  2. ЕСЛИ ЗНАЧЕНИЕ 1 служит ЗНАЧЕНИЕМ? {a, 34i, 71m} : если ЗНАЧЕНИЕ 1 эквивалентно ЗНАЧЕНИЮ? { 73а}, ЕСЛИ ложь;

если неверно что

ЗНАЧЕНИЕ 1 эквивалентно ЗНАЧЕНИЮ? {73а } ,

ЕСЛИ укрытые ЮБЫЧНЫЕ1 входят

в укрытые !ОБЫЧНЫЕ? {731, т, п} ,

если (!ОБЫЧНЫЕ 1) есть (ЗНАЧЕНИЕ 1)

или (объединение ЮБЫЧНЫХ1 воедино) есть (ЗНАЧЕНИЕ1), если (ЮБЬЙНЫЕ?) есть (ЗНАЧЕНИЕ?)

или (объединение 'ОБЫЧНЫХ2 воедино) есть (ЗНАЧЕНИЕ?).

[ Примеры:

а) х (в uir : = х) •

и (в об (лит. цел, пуст) (и), в зоне: содержащей

об (цел, пуст) и := пустое)}

  1. Обобщение

{Обобщение преобразует целые числа в вещественные, вещественные числа в комплексные (в обоих случаях с тем же размером), значения вида 'БИТОВОЕ' в неупакованные векторы истинностных значений и значения вида 'СЛОГОВОЕ' в неупакованные векторы литер.

, Например, в z ;= 1 выдача 1 обобщается до вещественного числа 1.0, а затем до комплексного числа (1.0, 0.0) ; синтаксически здесь априорный вид, специфицируемый цел, заменяется видом, специфицируемым вещ, а затем видом, специфицируемым компл. J

  1. Синтаксис

  1. БИТОВОЕ :: структура содержащая 7МЕРНУЮ букву алеф для выборки вектора из логических в себе.

  2. СЛОГОВОЕ :: структура содержащая 7МЕРНУЮ букву алеф для выборки вектора из литерных в себе.

  3. 7МЕРНОЕ :: ДОЛГОЕ 7ДОЛГОЕ; КРАТКОЕ 7КРАТКОЕ; ПУСТО.

  4. ДОЛГОЕ :: буква д буква л буква и буква н.

  5. КРАТКОЕ :: буква к буква о буква р.

  6. 7ДОЛГОЕ :: ДОЛГОЕ 7ДОЛГОЕ; ПУСТО.

  7. 7КРАТКОЕ :: КРАТКОЕ 7КРАТКОЕ; ПУСТО.

ФОРМА выдающая 7РАЗМЕРНОЕ вещественноепосле обобщения £b, 61а) :

ФОРМА выдающая 7PA3MEPHOE целое после РАСКРЫТИЯ {біс}. [?РАЗМЕРНОЕ :: длинное 7ДЛИННОЕ;

короткое 7КОРОТКОЕ; ПУСТО.)

  1. ФОРМА выдающая структуру содержащую букву эр лат букву е лат для выборки 7РАЗМЕРНОГО вещественного букву и лат букву эм лат для выборки 7РАЗМЕРНОГО вещественного в себе после обобщения {61 А) ;

ФОРМА выдающая 7РАЗМЕРНОЕ вещественное после РАСКРЫТИЯ {61С} ;

ФОРМА выдающая 7РАЗМЕРНОЕ вещественное после обобщения fa).

  1. ФОРМА выдающая вектор из логических после обобщения {б1А};

ФОРМА выдающая БИТОВОЕ после РАСКРЫТИЯ £біс).

  1. ФОРМА выдающая вектор из литерных после обобщения {б1А}:

ФОРМА выдающая СЛОГОВОЕ после РАСКРЫТИЯ { 61CJ . {Примеры: а) 1 (в х : = 1)

  1. 1.0 (в compl z := 1.0) *1 (в compl z := 1)

  2. 2г 101 (в [ ] лог (2г 101))

  3. г (в [ ] лит (г), см. 1.1.2)}

6.5.2. Семантика

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

• пусть V — выдача прямого наследника F;

Случай А: 'ВИД' есть '7РАЗМЕРНОЕ вещественное':

• W — вещественное число, обобщаемое {2.1.3.1.eJ из V; Случай В: 'ВИД' есть 'структура содержащая букву эр лат букву е лат для выборки 7РАЗМЕРНОГО вещественного букву и лат бук­ву эм лат для выборки 7РАЗМЕРНОГО вещественного в себе' • W — {комплексное число, которое есть) структурное зна­чение с нолями, равными V и вещественному числу 0 того же размера {2.1.3.l.b) , что и V;

Случай С: 'ВИД' есть 'вектор из логических' или 'вектор из литерных': • W — единственное поле из V.

6.6. Векторизация

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

Пример

:[1 : 1] вещ Ы : = 4.13}

  1. Синтаксис

а) ФОРМА выдающая ?ИМЯ МАССИВА! из ВИДА после векторизации {61а}:

если (МАССИВ!) есть (вектор),

ФОРМА выдающая 7ССЫЛКУ НА ВИД

после УСИЛЕНИЯ {б1А},

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

если (МАССИВ!) есть (вектор МАССИВОВ?).

ФОРМА выдающая 7ССЫЛКУ НА МАССИВ? из ВИДА после УСИЛЕНИЯ [ 61 А},

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

[Примеры:

а) 4.13 (в [1 : 1] вещ Ы : = 4.13 •

х1 (в [1 : 1, 1 : п] вещ Ь2 := xl)J

  1. Семантика

а) Выдача W ФОРМЫ-выдающей-?ИМЯ-МАССИВА1-из-ВИДА-после-век- торизации F определяется следующим образом: ,

• пусть V — выдача ФОРМьІ-после-УСИЛЕНИЯ из F;

Случай А: '7ЙМЯ' есть 'ПУСТО':

  • W — массив, „построенный”f bJ из V для 'МАССИВА!';

Случай В: '7ЙМЯ' есть 'ИМЯ':

  • Если V — псевдоимя, то W — тоже псевдоимя;

иначе W - имя, „построенное” [с} из V для 'МАССИВА!'.

Ь) Массив W, „построенный” из значения V для некоторого 'МАССИ­ВА!', определяется следующим образом:

Случай А: 'МАССИВ!' есть 'вектор':

• W составляется из

  1. паспорта ((1,1)),

  2. [одного элемента} V;

Случай В: 'МАССИВ!' есть 'вектор МАССИВОВ2':

пусть паспорт значения V будет ((1Х, щ),..., (1п>йп));

• W составляется из

  1. паспорта ((1,1), (h.Ui),..., (ln, un)),

  2. элементов этого V;

• элемент, выбираемый в V по индексу (ij, ..., in), являет­ся элементом, выбираемым в W по индексу (1, іі, ..., in) •

с) Имя N1, „построенное” из имени N для некоторого 'МАССИВА!', определяется следующим образом:

• N1 —[не обязательно вновь созданное} имя, равное по области дей­ствия имени N и именующее массив, построенный { b} для 'МАССИВА из значения, именуемого N;

Случай А: 'МАССИВ!' есть 'вектор':

• [ единственным ] подыменем этого N1 является N;Случай В: 'МАССИВ1' есть 'векторМАССИВОВ2':

подыменем этого N1, выбираемым по (1, ijin), явля­ется подымя имени N, выбираемого по (ij,in).

6.7. Опустошение

{Опустошение используют, чтобы отбросить выдачу некоторой основы, первичное назначение которой — вызвать побочный эффект; ее апостери­орным видом становится тогда просто 'пустое значение'. Например, в х := 1; у := 1; присваивание у := 1 опустошается, а в проц t = цел : целч (псч X 100); t ; использующий-идентификатор t опустошается после распроцедуривания, предписывающего вызов процедуры.

Присваивания и другие ПРЯМЫЕ опустошаются без всякого распроце­дуривания, так что в проц пуст р; р : = финиш это присваивание р : = финиш не предусматривает неожидаемого здесь вызова процедуры финиш.}

  1. Синтаксис

А) НЕРАСП {рОЦЕДУРИВАЕМОЕ} :: ПРОСТОЕ; СОСТАВНОЕ; ПРЕДСТАВИТЕЛЬ; ИМЯ НЕРАСП;

процедура с ПАРАМЕТРАМИ вырабатывающая ЗНАЧЕНИЕ.

  1. РАСКРЫВАЕМОЕ выдающее пустое значение

после опустошения {61 А}:

РАСКРЫВАЕМОЕ выдающее НАРАСП

после распроцедуривания {63а};

РАСКРЫВАЕМОЕ выдающее НЕРАСП после сохранения f 61 fj.

  1. ПРЯМОЕ выдающее пустое значение

после опустошения {61 а} :

ПРЯМОЕ выдающее ВИД после сохранения { 61 f}.

{Примеры:

  1. псч (в пропуск; псч;)

след псч (пред псч)

(в пропуск; след псч (пред псч) ;)

  1. проц пуст (рр)

(в проц проц пуст рр = проц пуст:

(печ (1); пуст : печ (2));

проц пуст (рр)-,)]

  1. Семантика

Исполнение ФОРМЫ-выдающей-пустое-значение-после-опустошения со­стоит из исполнения ее прямого наследника и выдает пустое.

7. ВИДЫ И СРЕДЫ

{Идентификация свойств в среде представляет собой статический двойник динамического определения (4.8.2.Ь) значения в некотором окру­жении: поиск проводится с самого нового (самого младшего) уровня по направлению к предыдущим (более старшим) уровням.

Виды составляются из примитивных видов, таких, как 'логическое', с помощью 'ПРОЛОГОВ', таких, как 'структура содержащая', и могут быть рекурсивными. Рекурсивные виды, выписываемые различным образом, могут тем fce менее быть эквивалентными. Синтаксис проверяет экви­валентность таких видов, доказывая невозможность обнаружения какого- либо несовпадения между их соответствующими подструктурами или со­ставляющими видами.

Предотвращается ряд небезопасных использований свойств. Никакой идентификатор или индикатор-вида не описывается более одного раза в каждой зоне. Виды операндов всякой формулы не определяют более од­ной операции. Рекурсия в видах не приводит к динамическому созданию объектов неограниченного размера и не допускает двусмысленных приве­дений.}

  1. Н е з а в и с и м о с т ь свойств

{Следующий синтаксис определяет, могут ли два свойства (т.е. две 'ПАРЫ'), подобные тем, которые соответствуют вещ х и цел х, быть заложе­ны в один и тот же 'СЛОЙ'.}

  1. Синтаксис

  1. ПРИСТАВКА :: процедура вырабатывающая; ИМЯ.

  2. КОРЕНЬ :: ПРОСТОЕ; СОСТАВНОЕ; ПРЕДСТАВИТЕЛЬ;

пустое значение; процедура с ПАРАМЕТРАМИ вырабатывающая ЗНАЧЕНИЕ.

С)* ’ПРИСТАВКИ :: ПРИСТАВКА 7ПРИСТАВКИ; ПУСТО.

{ПАРА :: ОПИСАНИЕ; МЕТКА; ПОЛЕ.

ПРИЗНАК :: ВИД; ЗНАЧЕНИЕ НОМЕР; БИНАРНОЕ;

метка; выборка ВИДА.

ОБОЗНАЧЕНИЕ :: СЛОВО; ИНДИКАНТ; ИНФИКС; ПРЕФИКС.

АФФИКС :: ИНФИКС; ПРЕФИКС.}

  1. ЕСЛИ ПАРА1 не зависит от ІПАР2 ПАРЫ2 { а, 48а, с, 72а} :

ЕСЛИ ПАРА1 не зависит от ЇПАР2 { а, с,}

и ПАРА1 не зависит от ПАРЫ2 { с }.

  1. ЕСЛИ ПАРА не зависит от ПУСТО {48а, с, 72а} : ЕСЛИ истина.

  2. ЕСЛИ ОБОЗНАЧЕНИЕ! для ПРИЗНАКА! не зависит

от ОБОЗНАЧЕНИЯ2 для ПРИЗНАКА2 { а, 48а, с, 72а}:

если неверно что (ОБОЗНАЧЕНИЕ!) есть (ОБОЗНАЧЕНИЕ2) ЕСЛИ истина;

если (ОБОЗНАЧЕНИЕ!) есть (ОБОЗНАЧЕНИЕ2)

и (ОБОЗНАЧЕНИЕ!) есть (АФФИКС),

ЕСЛИ ПРИЗНАК! не зависит от ПРИЗНАКА2 { d }.

  1. ЕСЛИ ПРИЗНАК 1 не зависит от ПРИЗНАКА2 { с }:

если ПРИЗНАК! связан с ПРИЗНАКОМ2 {е, f, g, h, і, j, -}, ЕСЛИ ложь;

если неверно что ПРИЗНАК! связан с

ПРИЗНАКОМ2 {е, f, g, h, і, j, -}, ЕСЛИ истина.

  1. ЕСЛИ ОДНОМЕСТНАЯ связана с ДВУМЕСТНОЙ { d}: ЕСЛИ ложь.

  2. ЕСЛИ ДВУМЕСТНАЯ связана с ОДНОМЕСТНОЙ {d} : ЕСЛИ ложь.

  3. ЕСЛИ ОПЕРАЦИЯ связана с БИНАРНЫМ { d}: ЕСЛИ ложь, h) ЕСЛИ БИНАРНОЕ связано с ОПЕРАЦИЕЙ { d}: ЕСЛИ ложь.

  1. ЕСЛИ процедура с параметром вида ВИДІ параметром

вида ВИД2 выбаратывающая ЗНАЧЕНИЕ 1 связана с процедурой с параметром вида ВИДЗ параметром вида ВИД4 вырабатывающей ЗНАЧЕНИЕ2 { d}:

ЕСЛИ ВИДІ крепко связан с ВИДОМЗ { к}

и ВИД2 крепко связан с ВИДОМ4 f к }

  1. ЕСЛИ процедура с параметром вида ВИДІ вырабатывающая ЗНАЧЕНИЕ 1 связана с процедурой с параметром вида ВИД2 вырабатывающей ЗНАЧЕНИЕ? {dl :

ЕСЛИ ВИДІ крепко связан с ВИД0М2 { kJ.

  1. ЕСЛИ ЗНАЧЕНИЕІ крепко связано со ЗНАЧЕНИЕМ? { i, j J:

ЕСЛИ ! ОБЫЧНЫ El скреплены со ЗНАЧЕНИЕМ? {1, m }

или 'ОБЫЧНЫЕ? скреплены со ЗНАЧЕНИЕМ! { 1, т,}, если (10БЫЧНЫЕ1) есть (ЗНАЧЕНИЕІ)

или (объединение ЮБЫЧНЫХ1 воедино) есть (ЗНАЧЕНИЕ!), если (! ОБЫЧНЫЕ?) есть (ЗНАЧЕНИЕ?)

или (объединение І0БЫЧНЫХ2 видов) есть (ЗНАЧЕНИЕ?).

І) ЕСЛИ ! ОБЫЧНЫЕ ОБЫЧНОЕ секреплены со ЗНАЧЕНИЕМ [ к, 1} : ЕСЛИ ЮБЫЧНЫЕ скреплены со ЗНАЧЕНИЕМ {1, т}

или ОБЫЧНОЕ скреплено со ЗНАЧЕНИЕМ f т}.

т) ЕСЛИ ЗНАЧЕНИЕ! скреплено со ЗНАЧЕНИЕМ? { k, 1, n, 47fJ:

ЕСЛИ ЗНАЧЕНИЕ! эквивалентно ЗНАЧЕНИЮ? {73а}

или ЗНАЧЕНИЕ! служит ЗНАЧЕНИЕМ? {64b } или ЗНАЧЕНИЕ? есть корень ЗНАЧЕНИЯ! [nJ.

п) ЕСЛИ ЗНАЧЕНИЕ? есть корень ЗНАЧЕНИЯ! {mJ:

если (ЗНАЧЕНИЕ!) есть (ПРИСТАВКА ЗНАЧЕНИЕЗ), ЕСЛИ ЗНАЧЕНИЕ5 скреплено со ЗНАЧЕНИЕМ? { т}, если ЗНАЧЕНИЕ5 фиксирует ЗНАЧЕНИЕЗ {47а, Ь, с} ;

если (ЗНАЧЕНИЕ!) есть (КОРЕНЬ), ЕСЛИ ложь.

{ Чтобы предотвратить двусмысленное использование индикаторов, как в вещ х, цел х; х := 0, на определяющие-индикаторы, входящие в некото­рую данную зону, налагаются определенные ограничения. Они обеспечива­ются синтаксической проверкой „независимости” свойств, заложенных в соответствующий 'СЛОЙ' (правила а, Ь, с). Достаночное условие незави­симости пары свойств, каждое из которых является некоторым 'ОБОЗНА­ЧЕНИЕМ для ПРИЗНАКА', не выполненное в приведенном выше призере, состоит в различии этих 'ОБОЗНАЧЕНИЙ' (правило с). Для 'ОБОЗНАЧЕ­НИЙ', не являющихся 'АФФИКСОМ', это условие также и необходимо, так что даже вещ х, цел х; пропуск не есть последовательное-предложение.

Дія двух свойств 'АФФИКС для ПРИЗНАКА!' и 'АФФИКС для ПРИЗ­НАКА?' проверка на независимость несколько сложнее, как это можно ви­деть из последовательного-предложения

оп + = (цел і) лог : истина, оп + = (цел i, j) цел : 1,

on + - (цел і, лог і) цел : 2, прио + = 6;

0 + + 0|і = 2»і.

Двусмысленности можно обнаружить в

прио + = 6, + = 7; 1 + 2 X 3 ft 7 или 9?$.

в

on z = (цел і) цел : 1, вид z = цел;

zip формула или описание? ft; пропуск

и в

оп? = (об(имя вещ, лит) а) цел : 1, оп ? = (вещ а) цел : 2; ? лок вещ ft 1 или 2? ft.

В таких случаях проверяется, независимы ли эти два 'ПРИЗНАКА' (правила с, d). Всякое 'ЗНАЧЕНИЕ НОМЕР' всегда зависит от любого 'ПРИЗНАКА' (правило d). 'ОДНОМЕСТНАЯ' всегда не зависит от 'ДВУ­МЕСТНОЙ' (правила d, е, f) и обе они не зависят от 'БИНАРНОГО' (т.е. от 'приоритета ПРИОРИТЕТ') (правила d, g, h). В случае двух 'ОПЕРАЦИЙ', обеих 'ОДНОМЕСТНЫХ' или 'ДВУМЕСТНЫХ', двусмысленность может воз­никнуть, если виды их соответствующих параметров „крепко связаны”, т.е. если вид операнда может крепко приводиться к виду параметра (виды пары операндов могут крепко приводиться к видам параметров) какой-ни­будь 'ОПЕРАЦИИ' (правила i, j). В примере с двумя определениями для ? указанные две 'ОПЕРАЦИИ' связаны, поскольку крепко связаны виды, специфицируемое описателями об (имя вещ, лит) и вещ; специфицируе­мый имя вещ вид крепко приводим к любому из них.