если (13НАЧЕНИЯ) есть (7ОБЫЧНЫЕ объединение ЮБЫЧНЫХ1 воедино 73НАЧЕНИЯ),

ЕСЛИ 7ОБЫЧНЫЕ ІОБЫЧНЫЕ1 .'ЗНАЧЕНИЯ сплетены с ЮБЫЧНЫМИ {g}.

{Никакой составляющий вид объединения не может приводиться укреплением к одному из других составляющих видов этого объединения или к их объединению (, правило f), так как в противном случае может возникнуть двусмысленность. Например, ядр<р

об (имя цел, цел) (лок цел)

двусмысленно в том, что разыменование может как появиться, так и нет перед объединением. Аналогичновид сеп = об (середи, петер);

об (имя сеп, сеп) (док сеп)

двусмысленно. Отметим, что из-за сплетения (, правило g,) вид, специфи­цируемый описателем данного ядра, точнее обозначается описателем об (имя сеп, середи, петер) .}

  1. Индикаторы и указатели полей

    1. Синтаксис

  1. ИНДИКАТОР :: идентификатор; индикатор вида;

обозначение операции.

  1. ПРИМЕНЯЮЩИЙ :: определяющий; использующий.

  2. 7ПАРЫ :: !ПАРЫ; ПУСТО.

  3. !ПАРЫ :: ПАРА; !ПАРЫ ПАРА.

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

■СПАРА :: ОБОЗНАЧЕНИЕ для ПРИЗНАКА.}

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

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

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

  1. определяющий ОБОЗНАЧЕНИЕ ИНДИКАТОР в СРЕДЕ с

новыми 7ПАРАМИ1 ОБОЗНАЧЕНИЕМ для ПРИЗНАКА 7ПАРАМИ2 выдающий ПРИЗНАК {32с, 35b, 42b, 43b, 44с, f, 45с, 541f}:

знак ОБОЗНАЧЕНИЕ {942А, D, F, К},

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

от 7ПАР1 7ПАР2 {71а, Ь, с}.

  1. использующий ОБОЗНАЧЕНИЕ ИНДИКАТОР в СРЕДЕ

выдающий ПРИЗНАК {42с, 46а, b, 5D, 542а, Ь, 544а}:

знак ОБОЗНАЧЕНИЕ {942А, D, F, К}, если ОБОЗНАЧЕНИЕ для ПРИЗНАКА

идентифицировано в СРЕДЕ {72а}.

  1. определяющий СЛОВО указатель поля вида ВИД

среди 7ПАР1 СЛОВА для выборки ВИДА 7ПАР2 {46f}:

знак СЛОВО {942А},

если СЛОВО для выборки ВИДА

не зависит от 7ПАР1 7ПАР2 {71а, Ь, с}.

  1. использующий СЛОВО указатель поля

вида ВИД среди ІПОЛЕЙ {531а}:

знак СЛОВО {942А},

если СЛОВО для выборки ВИДА находится в ’.ПОЛЯХ {72b, с, -}.

  1. * ПРИМЕНЯЮЩИЙ ОБОЗНАЧЕНИЕ индикатор в СРЕДЕ

выдающий ПРИЗНАК:

ПРИМЕНЯЮЩИЙ ОБОЗНАЧЕНИЕ ИНДИКАТОР

в СРЕДЕ выдающий ПРИЗНАК {а, Ь}.

f)* ПРИМЕНЯЮЩИЙ СЛОВО указатель поля вида ВИД:

ПРИМЕНЯЮЩИЙ СЛОВО указатель поля

вида ВИД среди !ПОЛЕЙ {с, d}.

S-1361-[Примеры:

а) х (в вещ х, у) Ь) х (в х + у)

с) следующая (см. 1.1.2) d) следующая (в следующая из

проект) }

4.8.2. Семантика

  1. Когда какое-нибудь значение или сцена V „приписывается” опреде­ляющему ОБОЗНАЧЕНИЕ-индикатору-выдающему-ПРИЗНАК в окруже­нии Е, 'ОБОЗНАЧЕНИЕ для ПРИЗНАКА' получает доступ к V внутри уча­стка этого Е -C2.l_2.cJ-.

  2. Выдача W использующего-ОБОЗНАЧЕНИЕ-индикатора-выдающего- ПРИЗНАК 1 в окружении Е, составленном из окружения Е1 и участка L, определяется следующим образом:

Если L соответствует '7ОПИСАНИЯМ 7МЕТКАМ', в которые заложено {1.1.4.1.с} это 'ОБОЗНАЧЕНИЕ для ПРИЗНАКА',

то W — значение или сцена, если они существуют, доступные для 'ОБОЗНАЧЕНИЯ для ПРИЗНАКА' внутри L, и не определено в про­тивном случае;

иначе W - выдача этого 1 в Е1.

{Рассмотрим замкнутое-предложение, содержащее другое такое же: начало прим блок 1 прим

цел і = 421, цел а := 5, проц р = пуст : печ (а);

начало прим блок 2 прим

вещ а; а := і; р конец

конец

К тому времени, когда в ходе исполнения встретится а := і, будут созда­ны два новых окружения, по одному для каждого блока.

Сначала идет поиск определяющего-идентификатора і в Е2, младшем из них, и, поскольку он не найдется там, то начнется поиск (успешный) в стар­шем окружении в Е1. Участок этого Е1 соответствует 'букве и лат для цело­го букве а для имени целого букве пэ лат для процедуры вырабатывающей пустое значение'. Следовательно, выдачей данного использующего-иденти- фикатора і будет значение 421, приписанное (а) 'букве и лат для целого внутри участка окружения Е1. Однако выдача идентификатора а в а := і найдется в участке окружения Е2.

Когда вызывается (5.4.3.2.Ь) процедура р, ее основа исполняется в не­котором окружении ЕЗ, устанавливаемом вокруг Е1, но по Е2 (3.2.2.Ь). Это означает, что в отношении области действия ЕЗ младше Е2, а Е1 - со­ставляющее окружение этого ЕЗ. Когда а должно печататься, оно является выдачей идентификатора-выдающего-имя-целого, описанного во внешнем из имеющихся блоков, и эта выдача есть 5.

Таким образом, смысл индикатора, используемого, но не описанного внутри процедуры, определяется контекстом, в котором эта процедура бы­ла создана, а не тем, в котором она вызывается.}

5. ОСНОВЫ

{Основы используются для программирования примитивных действий или превращения в единичные компоненты больших конструктов из разд. 3.

Приведенные-ПОНЯТИЯ, но не доопределения, являются результатом приведений (разд. 6); в случае ЗАКРЫТЫХ-предложений любые требуемые приведения осуществляются внутри них.

Из задаваемого ниже синтаксиса следует, например, что текст из отчет + „конец” разбирается как (текст из отчет) + „конец”, поскольку выборка есть ‘ВТОРИЧНОЕ', а формула - 'ТРЕТИЧНОЕ'.У

  1. Синтаксис

А) ОСНОВА {32dT :: приведенное присваивание {521 а};

приведенное отношение одноименности {5 22а};

приведенный текст процедуры 541а, b ; переход (544а) : пропуск [ 522а} ; ТРЕТИЧНОЕ { В} .

В) ТРЕТИЧНОЕ {A, 521b,522а} :: псевдоимя {524а} ;

приведенная АРНАЯ формула { 542а, b} ; ВТОРИЧНОЕ { С } .

С) ВТОРИЧНОЕ { В, 531а, 542с} :: приведенная выборка {531а} ;

приведенный ЛОКАЛИЗУЮЩИЙ генератор { 523а} ;

ПЕРВИЧНОЕ {D}.

D) ПЕРВИЧНОЕ {С, 532а, 543а} :: приведенная вырезка [ 532а} :

приведенный вызов [551а];

приведенное изображаемое { 80а} ;

приведенное ядро {551а} ;

приведенный текст формата {А341а} ;

приведенный использующий СЛОВО идентификатор {48b} ;

ЗАКРЫТОЕ предложение { 31а, 33а, с, d, е, 34а, 35а}_

f Гиперправила для 'приведенной ФОРМЫ ПРИВОДИМО выдающей ЗНАЧЕНИЕ', данные в 6.1.1.a, b, с, d и е, служат входами в синтаксис при-, ведений. Когда этот синтаксис приведений запрашивается для какой-то 'приведенной ФОРМЫ ПРИВОДИМО выдающей ЗНАЧЕНИЕ', он в конце концов возвратится (, исключая тупики,) к некоторому правилу для 'ФОР­МЫ выдающей ЗНАЧЕНИЕ1' в данном разделе, Именно на эти правила да­ны ссылки в метаправилах, перечисленных выше. Синтаксис приведений просто преобразует 'ЗНАЧЕНИЕ' в 'ЗНАЧЕНИЕ 1' для семантики; в это время не порождается никакой другой видимый наследник. J а) * доопределение ДЕЙСТВУЮЩЕЕ :

переход ДЕЙСТВУЮЩИЙ {544а};

пропуск ДЕЙСТВУЮЩИЙ {552};

псевдоимя ДЕЙСТВУЮЩЕЕ { 524а} .

  1. { Видом доопределения всегда является апостериорный вид, требуемый контекстом; выдача доопределения приемлема для этого вида. Поскольку любой вид легко получить таким образом, никакие приведения здесь не разрешены. }Основы, связанные с именами

{ Именам можно присваивать (5.2.1), их можно сравнивать с другими именами (5.2.2) и создавать (5.2.3).}

  1. Присваивания

[ В присваиваниях значение „присваивается” имени. Например, в х := 3.14 выдаваемое источником 3.14 вещественное число присваивается имени, выдаваемому получателем х.}

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

  1. присваивание в СРЕДЕ выдающее ИМЯ ВИДА £ 5а} : получатель выдающий ИМЯ ВИДА в СРЕДЕ £ b}.

знак присвоить {94с} , источник вида ВИД в СРЕДЕ £ с }.

  1. получатель выдающий ИМЯ ВИДА в СРЕДЕ £ а}:

ТРЕТИЧНОЕ в СРЕДЕ мягко выдающее ИМЯ ВИДА [5в] .

  1. источник вида ВИДІ в СРЕДЕ £а, 44dJ :

основа в СРЕДЕ сильно выдающая ВИД2 132dJ .

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

£ Примеры:

а) х : = 3.14 Ь) х

с) 3.14}

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

  1. Всякое присваивание А исполняется следующим образом:

  • пусть N и W — £ совместные} выдачи £имя и некоторое другое значе­ние} получателя и источника этого А;

  • W присваивается £ b} N:

  • выдачей А служит N.

  1. Значение W „присваивается” имени N, видом которого является не­которое 'ИМЯ ВИДА', следующим образом:

Требуется, чтобы

  • N не было псевдоименем и

  • W по области действия не было младше N;

Случай А; 'ВИД' есть 'структура содержащая 1ПОЛЯ в себе': Для каждого 'СЛОВА', выбирающего поле в W, • это поле присваивается подымени, выбираемому по 'СЛОВУ' в N;

Случай В: 'ВИД' есть 'МАССИВ из ВИДА1':

  • пусть V — £сгарое } значение, именуемое N; требуется, чтобы паспорта W и V были идентичны;

Для каждого индекса 1, выбирающего элемент в W,

  • этот элемент присваивается подымени, выбираемому по IbN;

Случай С: 'ВИД' есть 'подвижный МАССИВ из ВИДА1': пусть V - £ старое} значение, именуемое N;

  • N начинает именовать массив, составленный из (і) паспорта значения W,

(іі) вариантов,{4.4.2.с} некоторого {, возможно скрыто­го,} элемента значения V;

• N снабжается подыменами {2.1.3.1 .g} ;

Для каждого индекса 1, выбирающего элемент в W,

этот элемент присваивается подымени, выбираемому по IbN;

Остальные случаи {, например, если 'ВИД' есть 'ПРОСТОЕ' или некото­рый'ПРЕДСТАВИТЕЛЬ'} : .

N начинает именовать { 2.1,3.2а} W

{ Если дано

подв [1 : 0] [1 : 3] цел подвфикс,

то наличие скрытого элемента {2.1.3.4.с} гарантирует, что смысл присваи­вания подвфикс := лок [1 : 1] [1 : 3] цел вполне определен, в то время как смысл присваивания подвфикс := лок [1:1] [1:4] цел не определен, так как граничные пары по второму измерению различны.}

  1. Отношения одноименности

{ Отношения-одноименности могут использоваться, чтобы узнать, сов­падают ли два имени одного и того же вида.

Например, после присваивания проект := („абв”, нил) отношение-одно- именности следующая из проект : = : имя книга (нил) выдает значение истина. Однако следующая из проект : = : нил выдает ложь, поскольку оно эквивалентно следующая из проект :=: имя имени книга (нил), здесь вы­дача ТРЕТИЧНОГО следующая из проект есть безо всяких приведений имя, именующее второе поле структуры, именуемой значением проект и, следо­вательно, не являющейся псевдоименем.}

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

  1. отношение одноименности в СРЕДЕ

выдающее логическое { 5 А} :

если мягко уравнивает ПРИВОДИМОЇ и ПРИВОДИМО2 f 32f} , ТРЕТИЧНОЕ 1 в СРЕДЕ

ПРИВОДИМОЇ выдающее имя ВИД £5В} , сравнитель имен fb},

ТРЕТИЧНОЕ2 в СРЕДЕ

ПРИВОДИМ02 выдающее имя ВИД £ 5 В_} .

  1. сравнитель имен { a J : знак есть {94}};

знак не есть {94fJ.

{ Примеры:

  1. следующая из проект : =: имя книга (нил)

  2. : = : • :=#:}

f Данным синтаксисом не порождается al [і] :=: al |j]. Тем самым предотвращается сравнение временных имен (2.1.3.6.с) посредством отно­шения-одноименности. }

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

Выдача W отношения-одноименности 1 определяется следующим обра­зом:

• пусть N1 и N2 — {совместные} выдачи ТРЕТИЧНЫХ этого 1;

Случай А: Знаком сравнителя-имен этого 1 является знак-есть:

  • W — истина, если { имя} N1 есть то же, что и N2, и ложь в противном случае;

Случай В: Знаком сравнителя-имен этого 1 является знак-не-есть:

  • W — истина, если N1 не есть то же, что и N2, и ложь в противном случае.

  1. Ген ераторы

{ Исполнение генератора, например лок вещ в хх := лок вещ := 3.14, или задания-генератора, например [1: п] лит в [1 : п] лит u, v;, включает создание имени, т.е. отведение места в памяти.

Использование локального-генератора предполагает (в большинстве реализаций) отведение памяти в динамическом стеке, тогда как глабаль- ные-генераторы предполагают отведение памяти в другой области, называ­емой „кучей”, в которой для управления памятью можно применять техни­ку, называемую обычно „сборкой мусора”. В силу меньшей эффективно­сти последнего режима локальные-генераторы лучше, так что в задании-ге- нераторов описаний переменных можно опускать только лок.}

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

{ ЛОКАЛИЗУЮЩИЙ :: локальный; глобальный; первичный.}

  1. ЛОКАЛИЗУЮЩИЙ генератор в СРЕДЕ

выдающий имя ВИДА { 5С } :

знак ЛОКАЛИЗУЮЩИЙ [ 94d, -} ,

фактический описатель ВИДА в СРЕДЕ {46а} .

  1. задание ЛОКАЛИЗУЮЩЕГО генератора

в СРЕДЕ ВЫДАЮЩЕГО ИМЯ ПРОВИДА {44е} :

знак ЛОКАЛИЗУЮЩИЙ {94d, -} ,

фактический описатель ПРОВИДА в СРЕДЕ {44b, 46а} ;

если (ЛОКАЛИЗУЮЩИЙ) есть (локальный),

фактический описатель ПРОВИДА в СРЕДЕ {44b, 46а} ;

{ Примеры:

а) лок вещ Ь) лок вещ • вещ}

{ Не существует представления для символа-первичный (см. 9.4.а) }

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

а) Выдача W ЛОКАЛИЗУЮЩЕГО-генератора или задания-ЛОКАЛИЗУЮ- ЩЕГО-генератора G в окружении Е определяется следующим образом:

  • W - вновь созданное имя, начинающее именовать [2.1.3.2.а} выдачу в Е фактического-описателя {4.4.2.d, 4.6.2.а} из G;

  • W по области действия та же, что и окружение Е1, определяемое сле­дующим образом:

Случай А: 'ЛОКАЛИЗУЮЩИЙ' есть 'локальный':

  • Е1 - „локализующее окружение” { b}, доступное из окружения Е;

Случай В: 'ЛОКАЛИЗУЮЩИЙ' есть 'глобальный':

  • El является {первым окружением, созданным в ходе исполнения текущей собственно-программы, являющимсяJ таким, что:

  1. первичное окружение {2.2.2.а} — это окружение окру­жения окружения этого Е1 {именно так!} и

  2. Е1 есть Е или старше Е;

Случай С: 'ЛОКАЛИЗУЮЩИЙ' есть 'первичный':

• Е1 — первичное окружение;

• если W - составное имя {2.1.3.2.b}, то W снабжается подыменами {2.1.3.3.Є, 2.1.3.4.g}.

{Единственное место, где встречаются примеры первичных-генерато- ров, — это стандартное- и системное-вступления (10.3.1.1.11, 10.3.1.4.b, п, о, 10.4.1.а).