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

  2. .Дерево порождения” Т для понятия N, называемого „прообразом” этого Т, „порождается” следующим образом:

пусть Р есть {выводимое} порождающее правило для N

;

берется копия N;

■ к этой копии присоединяется последовательность деревьев порождения, называемых „прямыми наследниками” дерева Т, порожденных для каждо­го непустого звена какой-то {одной} альтернативы А правила Р; порядок {деревьев в} этой последовательности совпадает с порядком указанных звеньев в А;

• взятая копия прообраза вместе с присоединенными прямыми наследни­ками составляет дерево порождения Т.

.Дерево порождения” для символа состоит из копии этого символа {, т.е. оно состоит из какого-то символа}.

„Терминальным порождением” дерева порождения Т является последо­вательность, составленная из терминальных порождений прямых наследни­ков этого Т, взятых в их порядке.

„Терминальным порождением” дерева порождения, состоящего только из одного символа, является этот символ.

{Пример:


/ t

порядок

запись десятичного основания'


степень десяти


’символ буква е'


I

возможные плюс или минус’

'плюс или минус'


десятичная

цифра'

, I

цифра нуль'


символ СИМВОЛ

плюс' цифра нуль'


'натуральное
число'

'последовательность

десятичных цифр'

: і

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

десятичная цифра'

'цифра два'

'символ

цифра два' }





























{Терминальным порождением этого дерева будет последовательность символов на его концах. Ее представление в эталонном языке выглядело бы как е+02.}

„Терминальным порождением” понятия является терминальное порож­дение одного из деревьев порождения для этого понятия {.следовательно, существует много других терминальных порождений 'порядка', кроме по­казанного выше?.

{Синтаксис строгого языка был выбран так, чтобы данная последова­тельность символов, являющаяся терминальным порождением какого-то понятия, была таковой в силу существования либо единственного дерева порождения, либо некоторого множества деревьев порождения, отли­чающихся друг от друга лишь настолько, чтобы исходы их исполнения были одинаковыми (например, деревья порождения, выводимые из правил 3.2.1.е (уравнивание), 1.3.1.d,e (предикаты) и6.7.1.а.Ь (выбор способа вы­писывания вида для приводимого, которое должно опустошаться); (см. также 2.2.2.а).

Поэтому на практике, в настоящем стандарте и в других случаях, вме­сто деревьев порождения берут терминальные порождения (или их пред­ставления) . На самом же деле исполнение программ определяется в семан­тике настоящего стандарта исходя из деревьев порождения; семантика по­священа объяснению смысла конструктов, прообразом которых служит понятие 'программа'.}

  1. Дерево порождения Р является „наследником” дерева порождения Q, если оно прямой наследник {f} либо самого Q, либо некоторого его на­следника. Говорят, что Q „содержит” своих наследников и что эти наслед­ники „меньше” Q.

{Например, дерево порождения

'возможные плюс или минус'

'плюс или минус'

'символ плюс'

входит в качестве наследника в (, и меньше чем,) дерево порождения для 'порядка', (содержащее его и) показанное выше.}

  1. Дерево порождения „видимо” („невидимо”) , если его терминальное порождение непусто (пусто).

  2. Наследник {g} U дерева порождения Т расположен „прежде” („по­сле”) другого наследника V того же Т, если терминальное порождение {f} этого U расположено прежде (после) терминального порождения, V в тер­минальном порождении Т. Это {частичное} упорядочение наследников Т называется „текстуальным порядком”. {В приведенном примере дерева порождения для понятия 'порядок' (f) дерево порождения, прообраз кото­рого есть 'плюс или минус', расположено прежде дерева, прообраз которого есть 'цифра два'.

  3. Наследник А дерева порождения „следует” („предшествует”) друго­му наследнику В в некотором текстуальном порядке, если А расположен после (прежде) В в этом текстуальном порядке и не существует видимого {h} наследника С, расположенного между А и В. {Тем самым подразуме­вается „непосредственное” следование (предшествование).}

  4. Дерево порождения А „подобно” дереву порождения В, если терми­нальное порождение {f} А совпадает с терминальным порождением В.

  1. Метаправила и простая подстановка.

{Метаправила образуют в настоящем языке множество контексто­свободных грамматик, определяющих „метаязык”.}

  1. „Метаправилами” {Ь} данного языка служат метаправила {в при­веденной форме}, заданные в разделах настоящего стандарта, заголовки которых начинаются со слов „Синтаксис”, „Метасинтаксис” или „Метапра­вила”, а также метаправила, получаемые следующим образом:

• для каждого заданного метаправила, относящегося к какому-

нибудь метапонятию М, создаются дополнительные правила, каждое из которых состоит из некоторой копии этого М и непосредственно следующего за ней одного из больших синтаксических знаков „О”, „1”, „2”, „3”, „4”, „5”, „6”, „7”, „8” или „9”, за которыми следуют два двоеточия, другая копия метапонятия М и точка. {Таким образом, следует добавить метаправило „ВИДІ:: ВИД.”.}

  1. Всякое „метаправило” состоит из следующих элементов, располо­женных в указанном порядке:

возможной звездочки;

непустой последовательности М больших синтаксических знаков;

двух двоеточий;

непустой последовательности гиперпонятий {І.І.З.І.е}, разделенных точками с запятой;

точки.

Такое метаправило называют метаправилом „для” {этого метапонятия (1.1.3.Id .}М.

{Зведзочка, если она есть, показывает, что это метапонятие не исполь­зуется в других мета- или гиперправилах, а заведено только для того, чтобы облегчить изложение в семантике.}

{Примеры:

ЧИСЛОВОЕ :: 7РАЗМЕРНОЕ целое;

7РАЗМЕРНОЕ вещественное. (1.2.1.С) •

7РАЗМЕРНОЕ :: длинное ?ДЛИННОЕ;

короткое ?КОРОТКОЕ; ПУСТО. (1.2.1. D)}

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

Протопонятие Р получается „простой подстановкой” из гиперпоня­тия Н, если копию {приведенной формы} этого Н можно преобразовать в некоторую копию {приведенной формы} Р заменой каждого метапонятия М в указанной копии {приведенной формы} Н каким-нибудь терминаль­ным метапорождением М.{Например, двумя возможными терминальными метапорождениями (с) „ЧИСЛОВОГО” будут 'целое' и 'длинное длинное вещественное'. Это объясняется тем, что из гиперпонятий '7РАЗМЕРНОЕ целое' и ^РАЗМЕР­НОЕ вещественное' (гиперпонятий метаправила для {приведенной формы} „ЧИСЛОВОГО”) можно при помощи простой подстановки (d) вывести 'це­лое' и 'длинное длинное вещественное'; это в свою очередь возможно пото­му, что ' ' (пустое протопонятие) и 'длинное длинное' являются терминаль­ными метапорождениями „7РАЗМЕРНОГО”.}

{Используемые в настоящем стандарте метапонятия выбраны так, чтобы конкатенация одного или нескольких из них не приводила к той же последовательности больших синтаксических знаков, что и при другой та­кой конкатенации. Этим устраняется источник возможной неоднозначно­сти.

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

  1. Гиперправила и согласованная подстановка.

  1. Гиперправилами {Ь} настоящего языка являются гиперправила {в приведенной форме}, заданные в разделах стандарта, заголовки которых начинаются со слова „Синтаксис”.

  2. Всякое „гиперправило” состоит из следующих элементов, располо­женных в указанном порядке:

возможной звездочки;

непустого гиперпонятия Н;

двоеточия;

непустой последовательности „гиперальтернатив”, разделенных точка­ми с запятой;

точки.

Такое правило называют гиперправилом „для” {этого гиперпонятия (1.1.3.І.е) } Н.

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

{Примеры:

  1. последовательность ПОНЯТИЙ :

ПОНЯТИЕ; ПОНЯТИЕ, последовательность ПОНЯТИЙ. (1.1.3.Ь)

  1. ПОНЯТИЕ, последовательность ПОНЯТИЙ}

  2. Порождающее правило PR {1.1.3.2.b} выводится из некоторого ги­перправила HR, если копию HR можно преобразовать в копию {приведен­ной формы} этого PR , применяя „согласованную подстановку” {е} к мно­жеству всех {приведенных форм} гиперпонятий указанной копии HR.

Множество {одного или большего числа} протононятий РР получа­ют, применяя „согласованную подстановку” к соответствующему множе­ству гиперпонятий НН, если копию НН можно преобразовать в копию {при­веденной формы} ГР при помощи следующего шага:Шаг: Если копия {приведенной формы НН} содержит одно или более метапонятий, то для некоторого терминального' метапорождения Т одного из этих метапонятий М каждое вхождение М в данную копию за­меняется копией этого Т и данный шаг повторяется.

{См. 1.1.4.1.а по поводу другого применения согласованной подстанов­ки. }

{Применяя указанный процесс выведения к данным выше (с) гипер­правилам, можно создать правило

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

десятичная цифра;

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

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

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

не является порождающим правилом данного языка, поскольку замена ме­тапонятия „ПОНЯТИЕ” одним из его терминальных метапорождений долж­на проводиться согласованно повсюду.}

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

{f) Правила в Синтаксисе снабжены „перекрестными ссылками”, по­нимаемыми следующим образом:

Каждое гиперпонятие Н некоторой гиперальтернативы гиперправила А сопровождают ссылками на те гиперправила В, откуда выводятся порож­дающие правила для понятий, которые можно подставить в это Н. Точно так же гиперпонятия каждого гиперправила В сопровождают обратными ссылками на А. Однако, если Н следует заменить каким-нибудь символом, его сопровождают ссылкой на его представление в и. 9.4.1. Кроме того, вместо ссылок на многие гиперправила в некоторых случаях удобнее сде­лать ссылку на одно метаправило, и тогда опущенные ссылки можно найти в этом метаправиле.

Каждая такая ссылка служит в принципе номером пункта, за которым идет буква, указывающая строчку с нужным правилом или представлени­ем. При этом используют следующие соглашения:

  1. ссылки, номер пункта в которых совпадает с номером пункта, где они встречаются, дают первыми, и этот номер пункта опускают; напри­мер, „8.2.1.а” появляется в п. 8.2.1 как „а”;

опускаются все точки и последняя 1, а 10 заменяют на А; например, ,,8.2.1.а” входит во все остальные пункты как ,,82а”, а „10.3.4.1.1 .і” входит в виде А341 і”,(ill) опускают номер пункта, если он тот же, что и у предыдущей ссыл­ки; например, „82а, 82b, 82с” входят как „82а, Ь, с”;

(iv) посредством отмечают наличие тупика, выводимого из данно­го гиперпонятия; например, в 8.0.1.а после „изображение ЗНАЧЕНИЯ”, поскольку „ЗНАЧЕНИЕ” можно заменить, например, на 'имя вещест­венного', а 'изображение имени вещественного' не является понятием} 1.1.4. Семантика

Семантика определяет „смысл” программ {2.2.Га} в строгом языке с помощью предложений {некоторого формализованного естественного язы­ка?, устанавливающих, какие „действия” должны проводить во время „ис­полнения” {2.1.4.1} этих программ. „Смысл” программы в языке пред­ставления - это смысл программы в строгом языке, которую она представ­ляет {9.31.

  1. Гиперпонятия, обозначение и заложение.

{Гиперпонятия, заключенные в апострофы, используют, чтобы "обозна­чать ' протопонятия, принадлежащие к определенным классам; например, 'ЛОКАЛИЗУЮЩИЙ' обозначает любое из протопонятий 'локальный', 'пер­вичный' и 'глобальный'. }

  1. Находящиеся в тексте данного стандарта гиперпонятия, кроме слу­чаев, когда они входят в гиперправила {1.1.3.4.Ы или метаправила {1.1.3.3.Ь}, „обозначают” любые протопонятия, которые можно получить, применяя к ним согласованную подстановку {1.1.3.4.е}; согласованную подстановку применяют ко всем гиперпонятиям, содержащимся в каждом законченном отрывке текста (это или отрывок, выделяемый буквой со скобкой, если такой есть, или же нумерованный раздел целиком) .

{Так, например, 'ОБОЗНАЧЕНИЕ для ПРИЗНАКА' есть гиперпонятие, обозначающее такие протопонятия, как 'буква и лат для целого', 'буква х для вещественного' и т.п. Если в каком-нибудь контексте оно фактически обозначает ’букву и лат для целого’, то все вхождения метапонятия „ПРИЗНАК” в текущий отрывок должны обозначать в этом контексте 'целое', а все вхождения „ОБОЗНАЧЕНИЯ” должны обозначать 'букву и лат'. Тогда, например, из отрывка 4.8.2.а можно вывести, что когда „сцена приписывается некоторому определяющему-букву-и-лат-индикатору-вы- дающему-целое”, именно ’буква и лат для целого' „получает доступ к V внутри соответствующего участка”.}