'если (а) совпадаете (а) в (абв,..я!) и (б) начинается с (б)' і

I

'если (а) совпадаете (а) в (абв...я!)

I

'если истина' 'если (б) начинается с (б)'

, . L_

'если (б) совпадаете (б) в (абв...я!)

I ,

если истина если ( ) начинается с ( )

если истина'

Если предикат выполняется, то его дерево порождения всегда оканчи­вается на 'если истина' или 'если неверно что ложь'. Если он не выполняет­ся, то тупиками обычно оказываются 'если ложь' и 'если неверно что исти­на'. Хотя почти все соответствующие гиперправила написаны для гиперпо­нятий, начинающихся с „ЕСЛИ” и потому каждый раз обеспечивают порож­дающие правила для пары предикатов типа 'если УТВЕРЖДЕНИЕ!' и 'если неверно, что УТВЕРЖДЕНИЕ!', это не значит, что в каждом таком случае должен выполняться какой-то один из этой пары предикатов. Например, предикат 'если цифра четыре считает III' {4.3.1 .ср не выполняется, но не приняты никакие меры для того, чтобы выполнялся предикат 'если невер­но что цифра четыре считает ПҐ, поскольку в настоящем стандарте он не применяется.

В семантике не приписывают никакого смысла конструктам, прообра­зами которых служат предикаты. Они нужны для чисто синтаксических це­лей. }

  1. Синтаксис общих конструкций

А) ОФОРМЛЕННОЕ :: краткое; выделенное; стиля НОМЕР, а) возможное ПОНЯТИЕ : ПОНЯТИЕ; ПУСТО.

  1. последовательность ПОНЯТИЙ {b J- : ПОНЯТИЕ; ПОНЯТИЕ, последо­вательность ПОНЯТИЙ {Ь}.

  2. список ПОНЯТИЙ {с} : ПОНЯТИЕ; ПОНЯТИЕ, знак а также {940. список ПОНЯТИЙ {сТ.упакованное ОФОРМЛЕННОЕ 7ПОНЯТИЕ : знак начало ОФОРМЛЕН­НЫЙ {94f, -}, 7ПОНЯТИЕ, знак конец ОФОРМЛЕННЫЙ {94f, -}.

  3. индексирующее ОФОРМЛЕННОЕ ПОНЯТИЕ : знак открыть индексы ОФОРМЛЕННЫЙ {94f, -}, ПОНЯТИЕ, знак закрыть индексы ОФОРМ­ЛЕННЫЙ {94f, -}.

  4. УТВЕРЖДЕНИЕ! либо УТВЕРЖДЕНИЕ2: УТВЕРЖДЕНИЕ!; УТВЕРЖ- ДЕНИЕ2.

{Из этого синтаксиса прямо следует, что имеются такие порождающие правила, как

последовательность десятичных цифр: десятичная цифра;

десятичная цифра, последовательность десятичных цифр.

(которое используют в порождении примера в 1.1.3.2.f, но для которого больше нет никакого явного порождающего правила.) Таким образом уменьшено число гиперправил, фактически выписанных в настоящем стан­дарте, а оставшиеся, стали нагляднее, так как эти общие конструкции выпи­саны словами, позволяющими предположить, какими должны быть их по­рождения.

По той же причине ссылки (1.1.3.4.f) на эти правила заменены более со­держательными ссылками; например, вместо „последовательность десятич­ных цифр {133b}” в 8.1.1 .l.b дано более содержательное „последователь­ность десятичных цифр {с}”. Кроме того, ссылки внутри самих общих кон­струкций ограничены необходимым минимумом.}

  1. ВЫЧИСЛИТЕЛЬ И ПРОГРАММА

Смысл программы в строгом языке объясняют в терминах гипотети­ческого вычислителя, который осуществляет множество действий {2.1.4}, составляющих исполнение {2.1.4.1} этой программы. Вычислитель работа­ет с некоторым множеством „объектов” {2.1.1}.

  1. Терминология

    1. Объекты

„Объект” является или конструктом {1.1.3.2.е}, или „значением” {2.1.1.1.а}, или „участком” {2,1.1.l.b}, или „окружением” {2.1.1.1.с}, или „сценой” {2.1 .l.l.d}.

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

  1. Значения, участки, окружения и сцены

  1. Всякое „значение” является или „простым значением” {2.1.3.1}, или „именем” {2.1.3.2]- , или „составным значением” (т.е. „структурой {2.1.3.33-или „массивом” {2.1.3.4}), или „процедурой” {2.1.3.5}.

  2. Всякий „участок” {есть внутренний объект, который} соответству­ет каким-то ^ОПИСАНИЯМ 7МЕТКАМ' {1.2.3.С,!}. „Незанятый уча­сток” — это участок, для которого '7ОПИСАНИЯ 7МЕТКИ' есть 'ПУСТО'.

{Каждое 'ОБОЗНАЧЕНИЕ для ПРИЗНАКА' (4.8.1.F,G), заложенное в данные '70ПИСАНИЯ 7МЕТКИ', соответствует определяющему-ОБО- ЗНАЧЕНИЕ-индикатору-выдающему-ПРИЗНАК (т.е. какому-нибудь иден­тификатору, обозначению-операции или индикатору-вида), описанному в конструкте, исполнение которого вызвало создание данного участка. Ука­занное 'ОБОЗНАЧЕНИЕ для ПРИЗНАКА' может „получить доступ” к ка­кому-то значению или сцене „внутри” этого участка (2.1.2.с).

Образом участка может служить ряд ячеек памяти, в которые поме­щены эти доступные объекты}

{Все терминальные метапорождения метапонятий „ОПИСАНИЕ”, „МЕТКА” и „ПОЛЕ” (, или включающее их и чаще употребляемое мета­понятие „ПАРА”,5 имеют форму 'ОБОЗНАЧЕНИЕ для ПРИЗНАКА'. Обо­значаемые 'ПАРАМИ' „свойства” применяют в синтаксисе и семантике, что­бы в конкретной ситуации связывать с таким 'ОБОЗНАЧЕНИЕМ' опреде­ленный признак.}

  1. Всякое „окружение” или пусто, или составлено из {какого-либо другого} окружения и некоторого участка.

{Поэтому каждое окружение выводится из ряда других окружений, вытекающих в конечном счете из пустого „первичного окружения”, в кото­ром исполняется программа (2.2.2.а).}

  1. Всякая „сцена” S есть объект, составленный из конструкта С {1.1.3.2.е} и окружения Е. С называется конструктом, а Е окружением „этого” S {или окружением „и-’” 3}.

{Доступ к сценам внутри участков (2.1.2.с) осуществляется через 'МЕТКУ' или 'ОПИСАНИЕ', возникающие из идентификаторов-выдающих- метку или индикаторов-вида; сцены могут также быть значениями (2.1.3.5).}

  1. Виды.

{Каждое значение имеет атрибут, называемый его „видом”. Он опреде­ляет, как это значение связано с другими значениями и какие с ним можно производить действия. Этот атрибут описывают или, точнее, „выписывают” посредством какого-нибудь'ЗНАЧЕНИЯ' (1.2.1.R) (; например, существу­ет вид, выписываемый как 'вещественное', и вид, выписываемый как 'структура содержащая букву эр лат букву е лат для выборки вещественно­го букву и лат букву эм лат для выборки вещественного в себе') . Посколь­ку преследуется цель, чтобы виды, специфицируемые индикаторами-вида а и b в

вид а =ст (имя а Ь),

вид b =ст (имя ст (имя b b) b

фактически были одинаковыми, то необходимо, чтобы как 'ЗНАЧЕНИЕ

'ци I определение структуры

содержащей букву бе лат для

выборки имени использования ци I в себе',

так и 'ЗНАЧЕНИЕ'

'ци II определение структуры

содержащей букву бе лат для

выборки имени структуры

содержащей букву бе лат для

выборки имени использования ци II в себе в себе'

(а на самом деле и многие другие) были возможными выписываниями од­ного и того же вида. Аналогично специфицируемый описателем об (цел, вещ) вид можно выписать как 'объединение целого вещественного воеди­но , так и 'объединение вещественного целого воедино'. Все протопонятия 'ЗНАЧЕНИЕ', выписывающие один и тот же вид, называются „эквивалент­ными” (а).

Некоторые протопонятия ’ЗНАЧЕНИЕ’, такие, как ’имя использования ци III', 'имя ци III I определения имени использования ци III I', 'объединение вещественного имени вещественного воедино' и 'структура содержащая букву а для выборки целого букву а для выборки вещественного в себе', не являются правильно построенными (7.4,4.7. l.f, 4.8.1.с) и не выписыва­ют никакого вида.

Хотя для большинства практических применений „вид” можно рас­сматривать просто как 'ЗНАЧЕНИЕ', его строгое определение включает целый класс протопонятий 'ЗНАЧЕНИЕ', эквивалентных друг другу, и лю­бое из них может описывать этот вид.}

  1. 'ЗНАЧЕНИЕ' {1.2.1.R} „эквивалентно” 'ЗНАЧЕНИЮ2', если выпол­няется {1.3.2} предикат 'если ЗНАЧЕНИЕІ эквивалентно ЗНАЧЕНИЮ' {7.3.1.а}.

{Правильно построенное 'ЗНАЧЕНИЕ' всегда эквивалентно самому се­бе; 'объединение целого вещественного воедино' эквивалентно 'объедине­нию вещественного целого воедино'.}

Протопонятие Р „эквивалентно протопонятию Q, если можно преобра­зовать копию Рс {приведенной формы} протопонятия Р в копию Qc {приведенной формы} протопонятия Q при помощи следующего шага:

Шаг: Если Рс не совпадает с Qc, некоторое 'ЗНАЧЕНИЕ 1', содержащееся в Рс, но не содержащееся ни в каком {большем} 'ЗНАЧЕНИИ2', содер­жащемся в Рс, заменяют некоторым эквивалентным ему 'ЗНАЧЕНИ­ЕМ'' и этот Шаг предпринимают снова.

{Таким образом, 'идентификатор выдающий объединение целого ве­щественного воедино' эквивалентен 'идентификатору выдающему объеди­нение вещественного целого воедино'.}

  1. Всякий „вид” есть такой класс С протопонятий 'ЗНАЧЕНИЕ', что каждый его элемент эквивалентен {а} каждому другому его элементу, а также {, чтобы обеспечить правильность построения}, самому себе, но не эквивалентен никакому 'ЗНАЧЕНИЮ 1', не принадлежащему С.

{Однако если эквивалентность видов специально не обсуждается, мож­но говорить о виде просто как о терминальном метапорождении „ЗНАЧЕ­НИЯ” в силу сокращения, которое будет дано в 2.1.5.f.}

  1. Каждое значение имеет один конкретный вид.

{Например, видом значения 3.14 является 'вещественное'. Не суще­ствует, однако, значений, вид которых начинается с 'объединение', 'вре­менное имя' или 'подвижный МАССИВ из' (см. 2.1.3.6) .}■

  1. Области действия.

{Значение V может „именовать” (2.1.2.е) другой внутренний объект О или быть составлено из (2.1.1.1 ,d) него (, например, имя может имено­вать значение, а такая сцена, как процедура, частично составлена из окру­жения). Далее, время жизни ячеек памяти, содержащих (2.1.3.2.а) этот объект О или используемых в связи с ним (2.1.1.1.Ь), может оказаться ограниченным (, поскольку спустя некоторое время они могут обновить­ся), и потому нельзя, чтобы V сохранялось дольше этого времени жизни, так как иначе можно было бы попытаться достичь через V какую-то уже не существующую ячейку памяти. Чтобы выразить это ограничение, гово­рят, что если V должно быть „присвоено” (5.1.2.1 .Ь) какому-нибудь имени W, то „область действия” W не должна быть „старше” области действия V. Таким образом, область действия значения V есть мера возраста указанных ячеек памяти и, следовательно, их времени жизни.}-

  1. Каждое значение имеет одну определенную „область действия” {, зависящую от его вида и от способа, которым оно создано; область дей­ствия значения определяется так, чтобы совпадать с областью действия не­которого окружения}-.

  2. Каждое окружение имеет одну определенную „область действия”. {Область действия каждого окружения „младше” (2.1,2.f) области дей­ствия того окружения, из которого оно составлено (2.1.1.1.с) .}

{Не следует смешивать область действия окружения с областями дей­ствия значений, доступных внутри его участка. Область действия окруже­ния предпочтительно используют при определении области действия сцен, для которых оно необходимо (7.2.2,с), или области действия выдачи гене­раторов, для которых оно является „локализующим” (5.2.3.2.Ь). Область действия окружения определяют относительно (2.1,2.f) области действия некоторого другого окружения, так что создаются иерархии областей действия, в конечном счете зависящие от области действия первичного окружения (2.2.2.а).}-

  1. Соотношения

  1. Соотношения либо „постоянны”, т.е. не зависят от данной програм­мы и ее исполнения, либо под влиянием некоторых действий могут стано­виться „справедливыми” или „несправедливыми”. Кроме того, соотноше­ния могут быть „транзитивными” , т.е. если „*” - такое соотношение и А*В и В*С оба справедливы, то справедливо и А*С.

  2. „Быть выдачей” есть соотношение между значением и действием, а именно исполнением сцены. Данное соотношение становится справедливым по завершении этого исполнения {2.1.4.1.bl.

  3. „Иметь доступ” есть соотношение между 'ПАРОЙ' {4.8.1,Е}и зна­чением или сценой V; оно может быть справедливым „внутри” определен­ного участка L {, в '7ОПИСАНИЯ 7МЕТКИ' которого заложена эта ПА­РА'}. Данное соотношение становится справедливым, когда эта 'ПАРА' „по­лучает доступ” к V внутри L {3.5.2. Шаг 4, 4.8.2.а}, и тогда оно будет спра­ведливым внутри L между любой 'ПАРОЙ1', эквивалентной {2.1.1.2.а} этой 'ПАРЕ', и V.

  4. Постоянные соотношения между значениями: „быть того же вида, что и” {2.1.1.2.с}, „быть меньше”, „быть обобщаемым до”, „быть удлиняе­мым до” {2.1.3.1.е} и „быть эквивалентным” {2.1.3.1.g}. Если одно из них вообще определено для данной пары значений, то оно справедливо или несправедливо постоянно. Все эти соотношения транзитивны.

  5. „Именовать” есть соотношение между „именем” {2.1.3.2.а} N и каким-нибудь другим значением. Данное соотношение становится справед­ливым, когда N „начинает именовать” это значение, и перестает быть спра­ведливым, когда N начинает именовать другое значение.

  6. Существуют три транзитивных соотношения между областями дей­ствия, а именно область действия А {2.1.1.3} может быть либо „младше”, либо „такая же, как и”, либо „старше” области действия В. Если А младше В. то В старше А, и обратно. Если А такая же, как и В, то А не старше и не младше В {; обратное не обязательно справедливо, так как для некоторых пар областей действия соответствующее соотношение может быть не опре­делено вообще}.

  7. „Быть подыменем” есть соотношение между именем и „составным именем” {2.1.3.2.Ь}. Данное соотношение становится справедливым, когда это составное имя „снабжается подыменем” {2.1.3.З.е, 2.1.3.4.g} или „ге­нерируется” {2.1.3.4.j, 1}; оно остается справедливым до тех пор, пока со­ставное имя не будет снабжено другим множеством подымен.

  1. Значения

    1. Простые значения.

  1. Всякое простое значение является либо „арифметическим значени­ем”, т.е. „целым числом” или „вещественным числом”, либо „истинност­ным значением” f , либо „литерой” g , либо „пустым значением” h .

  2. Всякое арифметическое значение имеет „размер”, т.е. целое число, характеризующее степень различия, с которой это значение сохраняется в вычислителе.

  3. Видом целого или вещественного числа размера п является некото­рое '7РАЗМЕРНОЕ целое' или '7РАЗМЕРНОЕ вещественное' соответствен­но; при этом если п положительно (равно нулю, отрицательно), то это '7РАЗМЕРНОЕ' есть повторенное п раз 'длинное' (пусто, повторенное - п раз 'короткое').