'если (а) совпадаете (а) в (абв,..я!) и (б) начинается с (б)' і
I
'если (а) совпадаете (а) в (абв...я!)
I
'если истина' 'если (б) начинается с (б)'
, . L_
'если (б) совпадаете (б) в (абв...я!)
I ,
если истина если ( ) начинается с ( )
если истина'
Если предикат выполняется, то его дерево порождения всегда оканчивается на 'если истина' или 'если неверно что ложь'. Если он не выполняется, то тупиками обычно оказываются 'если ложь' и 'если неверно что истина'. Хотя почти все соответствующие гиперправила написаны для гиперпонятий, начинающихся с „ЕСЛИ” и потому каждый раз обеспечивают порождающие правила для пары предикатов типа 'если УТВЕРЖДЕНИЕ!' и 'если неверно, что УТВЕРЖДЕНИЕ!', это не значит, что в каждом таком случае должен выполняться какой-то один из этой пары предикатов. Например, предикат 'если цифра четыре считает III' {4.3.1 .ср не выполняется, но не приняты никакие меры для того, чтобы выполнялся предикат 'если неверно что цифра четыре считает ПҐ, поскольку в настоящем стандарте он не применяется.
В семантике не приписывают никакого смысла конструктам, прообразами которых служат предикаты. Они нужны для чисто синтаксических целей. }
Синтаксис общих конструкций
А) ОФОРМЛЕННОЕ :: краткое; выделенное; стиля НОМЕР, а) возможное ПОНЯТИЕ : ПОНЯТИЕ; ПУСТО.
последовательность ПОНЯТИЙ {b J- : ПОНЯТИЕ; ПОНЯТИЕ, последовательность ПОНЯТИЙ {Ь}.
список ПОНЯТИЙ {с} : ПОНЯТИЕ; ПОНЯТИЕ, знак а также {940. список ПОНЯТИЙ {сТ.упакованное ОФОРМЛЕННОЕ 7ПОНЯТИЕ : знак начало ОФОРМЛЕННЫЙ {94f, -}, 7ПОНЯТИЕ, знак конец ОФОРМЛЕННЫЙ {94f, -}.
индексирующее ОФОРМЛЕННОЕ ПОНЯТИЕ : знак открыть индексы ОФОРМЛЕННЫЙ {94f, -}, ПОНЯТИЕ, знак закрыть индексы ОФОРМЛЕННЫЙ {94f, -}.
УТВЕРЖДЕНИЕ! либо УТВЕРЖДЕНИЕ2: УТВЕРЖДЕНИЕ!; УТВЕРЖ- ДЕНИЕ2.
{Из этого синтаксиса прямо следует, что имеются такие порождающие правила, как
последовательность десятичных цифр: десятичная цифра;
десятичная цифра, последовательность десятичных цифр.
(которое используют в порождении примера в 1.1.3.2.f, но для которого больше нет никакого явного порождающего правила.) Таким образом уменьшено число гиперправил, фактически выписанных в настоящем стандарте, а оставшиеся, стали нагляднее, так как эти общие конструкции выписаны словами, позволяющими предположить, какими должны быть их порождения.
По той же причине ссылки (1.1.3.4.f) на эти правила заменены более содержательными ссылками; например, вместо „последовательность десятичных цифр {133b}” в 8.1.1 .l.b дано более содержательное „последовательность десятичных цифр {с}”. Кроме того, ссылки внутри самих общих конструкций ограничены необходимым минимумом.}
ВЫЧИСЛИТЕЛЬ И ПРОГРАММА
Смысл программы в строгом языке объясняют в терминах гипотетического вычислителя, который осуществляет множество действий {2.1.4}, составляющих исполнение {2.1.4.1} этой программы. Вычислитель работает с некоторым множеством „объектов” {2.1.1}.
Терминология
Объекты
„Объект” является или конструктом {1.1.3.2.е}, или „значением” {2.1.1.1.а}, или „участком” {2,1.1.l.b}, или „окружением” {2.1.1.1.с}, или „сценой” {2.1 .l.l.d}.
{Конструкты можно отнести к „внешним объектам”, так как они соответствуют тексту программы, которая для более реальных вычислителей могла бы транслироваться в какую-нибудь внутреннюю форму, в которой она была бы способна действовать с „внутренними объектами”, а именно со значениями, участками, окружениями и сценами. Однако рассматриваемый здесь гипотетический вычислитель не нуждается в фазе трансляции. Предполагают, что он может анализировать программу и все ее наследные конструкты тогда же, когда он обрабатывает внутренние объекты.}
Значения, участки, окружения и сцены
Всякое „значение” является или „простым значением” {2.1.3.1}, или „именем” {2.1.3.2]- , или „составным значением” (т.е. „структурой {2.1.3.33-или „массивом” {2.1.3.4}), или „процедурой” {2.1.3.5}.
Всякий „участок” {есть внутренний объект, который} соответствует каким-то ^ОПИСАНИЯМ 7МЕТКАМ' {1.2.3.С,!}. „Незанятый участок” — это участок, для которого '7ОПИСАНИЯ 7МЕТКИ' есть 'ПУСТО'.
{Каждое 'ОБОЗНАЧЕНИЕ для ПРИЗНАКА' (4.8.1.F,G), заложенное в данные '70ПИСАНИЯ 7МЕТКИ', соответствует определяющему-ОБО- ЗНАЧЕНИЕ-индикатору-выдающему-ПРИЗНАК (т.е. какому-нибудь идентификатору, обозначению-операции или индикатору-вида), описанному в конструкте, исполнение которого вызвало создание данного участка. Указанное 'ОБОЗНАЧЕНИЕ для ПРИЗНАКА' может „получить доступ” к какому-то значению или сцене „внутри” этого участка (2.1.2.с).
Образом участка может служить ряд ячеек памяти, в которые помещены эти доступные объекты}
{Все терминальные метапорождения метапонятий „ОПИСАНИЕ”, „МЕТКА” и „ПОЛЕ” (, или включающее их и чаще употребляемое метапонятие „ПАРА”,5 имеют форму 'ОБОЗНАЧЕНИЕ для ПРИЗНАКА'. Обозначаемые 'ПАРАМИ' „свойства” применяют в синтаксисе и семантике, чтобы в конкретной ситуации связывать с таким 'ОБОЗНАЧЕНИЕМ' определенный признак.}
Всякое „окружение” или пусто, или составлено из {какого-либо другого} окружения и некоторого участка.
{Поэтому каждое окружение выводится из ряда других окружений, вытекающих в конечном счете из пустого „первичного окружения”, в котором исполняется программа (2.2.2.а).}
Всякая „сцена” S есть объект, составленный из конструкта С {1.1.3.2.е} и окружения Е. С называется конструктом, а Е окружением „этого” S {или окружением „и-’” 3}.
{Доступ к сценам внутри участков (2.1.2.с) осуществляется через 'МЕТКУ' или 'ОПИСАНИЕ', возникающие из идентификаторов-выдающих- метку или индикаторов-вида; сцены могут также быть значениями (2.1.3.5).}
Виды.
{Каждое значение имеет атрибут, называемый его „видом”. Он определяет, как это значение связано с другими значениями и какие с ним можно производить действия. Этот атрибут описывают или, точнее, „выписывают” посредством какого-нибудь'ЗНАЧЕНИЯ' (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.2.1.R} „эквивалентно” 'ЗНАЧЕНИЮ2', если выполняется {1.3.2} предикат 'если ЗНАЧЕНИЕІ эквивалентно ЗНАЧЕНИЮ' {7.3.1.а}.
{Правильно построенное 'ЗНАЧЕНИЕ' всегда эквивалентно самому себе; 'объединение целого вещественного воедино' эквивалентно 'объединению вещественного целого воедино'.}
Протопонятие Р „эквивалентно протопонятию Q, если можно преобразовать копию Рс {приведенной формы} протопонятия Р в копию Qc {приведенной формы} протопонятия Q при помощи следующего шага:
Шаг: Если Рс не совпадает с Qc, некоторое 'ЗНАЧЕНИЕ 1', содержащееся в Рс, но не содержащееся ни в каком {большем} 'ЗНАЧЕНИИ2', содержащемся в Рс, заменяют некоторым эквивалентным ему 'ЗНАЧЕНИЕМ'' и этот Шаг предпринимают снова.
{Таким образом, 'идентификатор выдающий объединение целого вещественного воедино' эквивалентен 'идентификатору выдающему объединение вещественного целого воедино'.}
Всякий „вид” есть такой класс С протопонятий 'ЗНАЧЕНИЕ', что каждый его элемент эквивалентен {а} каждому другому его элементу, а также {, чтобы обеспечить правильность построения}, самому себе, но не эквивалентен никакому 'ЗНАЧЕНИЮ 1', не принадлежащему С.
{Однако если эквивалентность видов специально не обсуждается, можно говорить о виде просто как о терминальном метапорождении „ЗНАЧЕНИЯ” в силу сокращения, которое будет дано в 2.1.5.f.}
Каждое значение имеет один конкретный вид.
{Например, видом значения 3.14 является 'вещественное'. Не существует, однако, значений, вид которых начинается с 'объединение', 'временное имя' или 'подвижный МАССИВ из' (см. 2.1.3.6) .}■
Области действия.
{Значение 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 есть мера возраста указанных ячеек памяти и, следовательно, их времени жизни.}-
Каждое значение имеет одну определенную „область действия” {, зависящую от его вида и от способа, которым оно создано; область действия значения определяется так, чтобы совпадать с областью действия некоторого окружения}-.
Каждое окружение имеет одну определенную „область действия”. {Область действия каждого окружения „младше” (2.1,2.f) области действия того окружения, из которого оно составлено (2.1.1.1.с) .}
{Не следует смешивать область действия окружения с областями действия значений, доступных внутри его участка. Область действия окружения предпочтительно используют при определении области действия сцен, для которых оно необходимо (7.2.2,с), или области действия выдачи генераторов, для которых оно является „локализующим” (5.2.3.2.Ь). Область действия окружения определяют относительно (2.1,2.f) области действия некоторого другого окружения, так что создаются иерархии областей действия, в конечном счете зависящие от области действия первичного окружения (2.2.2.а).}-
Соотношения
Соотношения либо „постоянны”, т.е. не зависят от данной программы и ее исполнения, либо под влиянием некоторых действий могут становиться „справедливыми” или „несправедливыми”. Кроме того, соотношения могут быть „транзитивными” , т.е. если „*” - такое соотношение и А*В и В*С оба справедливы, то справедливо и А*С.
„Быть выдачей” есть соотношение между значением и действием, а именно исполнением сцены. Данное соотношение становится справедливым по завершении этого исполнения {2.1.4.1.bl.
„Иметь доступ” есть соотношение между 'ПАРОЙ' {4.8.1,Е}и значением или сценой V; оно может быть справедливым „внутри” определенного участка L {, в '7ОПИСАНИЯ 7МЕТКИ' которого заложена эта ПАРА'}. Данное соотношение становится справедливым, когда эта 'ПАРА' „получает доступ” к V внутри L {3.5.2. Шаг 4, 4.8.2.а}, и тогда оно будет справедливым внутри L между любой 'ПАРОЙ1', эквивалентной {2.1.1.2.а} этой 'ПАРЕ', и V.
Постоянные соотношения между значениями: „быть того же вида, что и” {2.1.1.2.с}, „быть меньше”, „быть обобщаемым до”, „быть удлиняемым до” {2.1.3.1.е} и „быть эквивалентным” {2.1.3.1.g}. Если одно из них вообще определено для данной пары значений, то оно справедливо или несправедливо постоянно. Все эти соотношения транзитивны.
„Именовать” есть соотношение между „именем” {2.1.3.2.а} N и каким-нибудь другим значением. Данное соотношение становится справедливым, когда N „начинает именовать” это значение, и перестает быть справедливым, когда N начинает именовать другое значение.
Существуют три транзитивных соотношения между областями действия, а именно область действия А {2.1.1.3} может быть либо „младше”, либо „такая же, как и”, либо „старше” области действия В. Если А младше В. то В старше А, и обратно. Если А такая же, как и В, то А не старше и не младше В {; обратное не обязательно справедливо, так как для некоторых пар областей действия соответствующее соотношение может быть не определено вообще}.
„Быть подыменем” есть соотношение между именем и „составным именем” {2.1.3.2.Ь}. Данное соотношение становится справедливым, когда это составное имя „снабжается подыменем” {2.1.3.З.е, 2.1.3.4.g} или „генерируется” {2.1.3.4.j, 1}; оно остается справедливым до тех пор, пока составное имя не будет снабжено другим множеством подымен.
Значения
Простые значения.
Всякое простое значение является либо „арифметическим значением”, т.е. „целым числом” или „вещественным числом”, либо „истинностным значением” f , либо „литерой” g , либо „пустым значением” h .
Всякое арифметическое значение имеет „размер”, т.е. целое число, характеризующее степень различия, с которой это значение сохраняется в вычислителе.
Видом целого или вещественного числа размера п является некоторое '7РАЗМЕРНОЕ целое' или '7РАЗМЕРНОЕ вещественное' соответственно; при этом если п положительно (равно нулю, отрицательно), то это '7РАЗМЕРНОЕ' есть повторенное п раз 'длинное' (пусто, повторенное - п раз 'короткое').