{В настоящем стандарте синтаксис определяет, какие последовательности символов являются терминальными порождениями понятия 'программа', а семантика - какие действия осуществляются вычислителем, когда программа исполняется. Как синтаксис, так и семантика рекурсивны. Хотя некоторые последовательности символов могут быть терминальными порождениями 'программы' (см. также 1.1.3.2.f), порождаемыми более чем одним способом, эта синтаксическая неоднозначность не приводит к семантической двусмысленности.}
В Алголе 68 предусмотрен специальный синтаксис для конструктов. Вместе с их рекурсивным определением он дает возможность описывать и пазличать произвольно большие деревья порождения, различать произволь- много значений данного вида (исключая такие виды, как 'логическое и стое значение') и различать как угодно много видов. Этот синтаксис позволяет существовать в вычислителе произвольно большому числу объектов и позволяет исполнению программы включать в себя произвольно большое, не обязательно конечное, число действий. Из этого не следует, что способ записи этих объектов в вычислителе тот же, что и в настоящем стандарте и что он имеет те же возможности. Не предполагается, что эти два способа записи одинаковы и даже что между ними существует взаимно однозначное соответствие, фактически множество разных способов обозначения объектов данной категории может быть конечным. Не предполагается, что вычислитель может обрабатывать произвольные объемы предлагаемой информации, что скорость вычислителя достаточна для исполнения заданной программы за предписанный промежуток времени и что количество объектов и соотношений, которые можно определить в вычислителе, достаточно для ее исполнения вообще.
Модель гипотетического вычислителя, использующая реальную вычислительную машину, называется „реализацией” Алгола 68, если она не ограничивает применение настоящего языка в других аспектах, отличных от упомянутых выше. Кроме того, если определяется язык А, собственно- программы которого являются также собственно-програмьйми языка В; и смысл каждой такой собственно-программы, определяемый языком А, совпадает с ее смыслом, определяемым языком В, то А называется „подъязыком” для В, а В называется „надъязыком” для А.
{Так, например, подъязык Алгола 68 можно определить, опуская отдельные правила синтаксиса, обедняя данное стандартное-вступление и/или оставляя не определенным кое-что, определяемое в настоящем стандарте. Тем самым можно будет обеспечить более эффективное решение определенных классов задач или осуществить реализацию для малых машин.
Аналогично надъязык Алгол 68 можно определить за счет некоторых добавлений к синтаксису, семантике или стандартному-вступлению и тогда можно улучшить эффективность (, позволяя пользователю поставлять добавочную информацию,) или дать возможность решать задачи, с трудом поддающиеся Алголу 68.}
Модель называют реализацией подъязыка, если она не ограничивает использование этого подъязыка в иных аспектах, нежели упомянутые выше.
{См. 9.3.с по поводу термина „реализация эталонного языка”.}
ПРЕДЛОЖЕНИЯ
{Предложения обеспечивают
иерархическую структуру программ,
введение новых блоков определений,
. • последовательную или совместную композицию, параллелизм, разветвления и циклы.
3.0.1. Синтаксис
* фраза: основа ДЕЙСТВУЮЩАЯ {32d}; J
описание ІОПИСАНИЙ в СРЕДЕ {41а}. <
’выражение ПРИВОДИМО выдающее ВИД:
ОСНОВА {5А} в СРЕДЕ ПРИВОДИМО выдающая ВИД.
’оператор:
ОСНОВА {5А} в СРЕДЕ сильно выдающая пустое значение.
’константа вида ЗНАЧЕНИЕ : ПРИМЕНЯЮЩИЙ СЛОВО
идентификатор в СРЕДЕ выдающий ЗНАЧЕНИЕ {48а, Ь};
изображаемое в СРЕДЕ выдающее ЗНАЧЕНИЕ {80а}.
* переменная вида ВИД : ПРИМЕНЯЮЩИЙ СЛОВО
идентификатор в СРЕДЕ выдающий имя ВИДА {48а, Ь}.
* блок в СРЕДЕ : определяющее СЛОЙ последовательное
предложение ПРИВОДИМОЕ В СРЕДЕ {32а};
состав ВЫБИРАЮЩЕГО предложения
ОФОРМЛЕННЫЙ ПРИВОДИМЫЙ в СРЕДЕ {34b};
вариант выбирающий по ПРЕДСТАВИТЕЛЮ ПРИВОДИМЫЙ в
СРЕДЕ {34І};
ОФОРМЛЕННЫЙ цикл с ОПИСАНИЕМ в СРЕДЕ {35е};
ОФОРМЛЕННЫЙ подчиненный условию цикл в СРЕДЕ {35f};
текст процедуры в СРЕДЕ выдающий ПРОЦЕДУРУ {541а, Ь} {Блоки-в-СРЕДЕ появляются в определении „идентификации” (7.2.2.Ь).}
3.0.2. Семантика
Всякая „среда” есть некоторая 'СРЕДА’. „Средой конструкта” является 'СРЕДА', заложенная в прообраз этого конструкта, но не заложенная ни в какой содержащийся в этом прообразе 'определяющий СЛОЙ'. .
{Среда конструкта содержит запись обо всех описаниях, образующих окружение, в котором этот конструкт должен интерпретироваться.
Конструкты, содержащиеся в некотором блоке R, но не содержащиеся ни в каком меньшем блоке, содержащемся в R, можно назвать образующими „зону”. Все конструкты в данной зоне имеют одну и ту же среду, а именно среду непосредственно окружающей ее зоны с добавлением одного дополнительного 'СЛОЯ'. Синтаксис гарантирует (3.2.l.b, 3.4.1.і, j, k, 3.5.l.e, 5.4.1.l.b), что каждой 'ПАРЕ' (4.8.l.E), отражающей некоторое „свойство” в этом дополнительном 'СЛОЕ', соответствует определяющий- индикатор (4.8.1.а), содержащийся в каком-то определении в данной зоне.}
Замкнутые предложения
{Замкнутые-предложения обычно используют, чтобы создавать основы из последовательных-предложений, как, например,
(вещ х; чит (х); х) в
(вещх; чит (х); х) +3.14}
Синтаксис
А) ПРИВОДИМОЕ :: ПРИВОДИМО выдающее ЗНАЧЕНИЕ.
) УПАКОВКА :: упакованное ОФОРМЛЕННОЕ.
замкнутое предложение в СРЕДЕ
ПРИВОДИМОЕ {22а, 5D, 551а, A341h, А349а}:
УПАКОВКА определяющего СЛОЙ последовательного предложения ПРИВОДИМОГО в СРЕДЕ {32а}
{СЛОЙ :: новые ?ОПИСАНИЯ 7МЕТКИ.}
{Пример:
а) начало х: =1; у: =2 конец}
{Выдачей замкнутого-предложения является вследствие предысполне- ния (2.1.4.1.с) выдача его составляющего последовательного предложения.
}Последовательные предложения
{Назначение последовательных-предложений состоит в:
построении новых блоков определений и
последовательной композиции действий.
Всякое последовательное-предложение состоит из возможно пустой последовательности непомеченных фраз, последняя из них, если она есть, является описанием, за которым идет последовательность возможно помеченных основ. Эти фразы и основы разделяются знаками-продолжать, а именно точками с запятой. Некоторые из этих основ могут, однако, разделяться завершителями, а именно выходами; основа, следующая за завершителем, должна быть помечена, чтобы быть достижимой. Значение последней основы или основы, предшествующей выходу, определяет значение всего последовательного-предложения.
Например, следующее последовательное-предложение выдает значение истина тогда и только тогда, когда вектор а содержит целое число 8:
цел п; чит (п);
[1 : п] цел а; чит (а);
для і до п цк если а [і] = 8 то на найдено все кц;
ложь выход
найдено : истина}
.2.1. Синтаксис
определяющее новые ?ПАРЫ последовательное предложение ПРИВОДИМОЕ В СРЕДЕ {31а, 34f, 1, 35h}:
кортеж с 7ПАРАМИ ПРИВОДИМЫЙ
в СРЕДЕ с новыми 7ПАРАМИ {Ь}
{Здесь 7ПАРЫ :: 7ОПИСАНИЯ 7МЕТКИ.}
кортеж с 7ПАРАМИ ПРИВОДИМЫЙ в СРЕДЕ {а, Ь, 34с}:
основа в СРЕДЕ сильно выдающая пустое значение {d},
знак продолжать {94f},
кортеж с 7ПАРАМИ ПРИВОДИМЫЙ в СРЕДЕ {Ь};
если (7ПАРЫ) есть (! ОПИСАНИЯ 7ОПИСАНИЯ 7МЕТКИ),
описание ЮПИСАНИЙ в СРЕДЕ {41а}, знак продолжать {94f}, кортеж с 1ОПИСАНИЯМИ 7МЕТКАМИ ПРИВОДИМЫЙ в
СРЕДЕ {Ь};
если (7ПАРЫ) есть (МЕТКА 7МЕТКИ),
определение метки через МЕТКУ в СРЕДЕ {с},
кортеж с 7МЕТКАМИ ПРИВОДИМЫЙ в СРЕДЕ {Ь};
если (7ПАРЫ) есть (МЕТКА 7МЕТКИ) и ПРИВОДИМОЕ уравнивает ПРИВОДИМОЕ! и ПРИВОДИМОЕ? {е},
основа в СРЕДЕ ПРИВОДИМАЯ! {d}, знак завершить {94f}, определение метки через МЕТКУ в СРЕДЕ {с},
кэртеж с 7МЕТКАМИ ПРИВОДИМЫЙ? в СРЕДЕ {Ь};
если (?ПАРЫ)-есть (ПУСТО),
основа в СРЕДЕ ПРИВОДИМАЯ {d}.
определение метки через СЛОВО для метки в СРЕДЕ {Ь}: определяющий СЛОВО идентификатор в СРЕДЕ выдающий метку {48а]-, знак метка {94f}.
основа ДЕЙСТВУЮЩАЯ {b, 33b, g, 34i, 35d, 46m, n, 521c, 532e, 541a. b. 543c, A34Ab, c, d}:
ОСНОВА {5А,—}■ДЕЙСТВУЮЩАЯ.
ЕСЛИ ПРИВОДИМО выдающее ЗНАЧЕНИЕ уравнивает ПРИВОДИМО! выдающее ЗНАЧЕНИЕ 1 и ПРИВОДИМО2 выдающее ЗНАЧЕНИЕ2 {b, 33b, 34d, h} : ЕСЛИ ПРИВОДИМО уравнивает ПРИВОДИМО! и
ПРИВОДИМО2 {f} и ЗНАЧЕНИЕ уравнивает ЗНАЧЕНИЕ! и ЗНАЧЕНИЕ2 {g}.
ЕСЛИ ПРИВОДИМО уравнивает
ПРИВОДИМО! и ПРИВОДИМО2 {е, 522аТ: если (ПРИВОДИМО! есть (сильно),
ЕСЛИ (ПРИВОДИМО2) есть (ПРИВОДИМО);
если (ПРИВОДИМО2) есть (сильно).
ЕСЛИ (ПРИВОДИМО!) есть (ПРИВОДИМО).
ЕСЛИ ЗНАЧЕНИЕ уравнивает ЗНАЧЕНИЕ! и ЗНАЧЕНИЕ2 Те}: * если (ЗНАЧЕНИЕ!) есть (ЗНАЧ ЕНИЕ2).
ЕСЛИ (ЗНАЧЕНИЕ) есть (ЗНАЧЕНИЕ!);
если (ЗНАЧЕНИЕ!) есть (временное ЗНАЧЕНИЕ2).
ЕСЛИ (ЗНАЧЕНИЕ) есть (ЗНАЧЕНИЕ!);
если (ЗНАЧЕНИЕ2) есть (временное ЗНАЧЕНИЕ!).
ЕСЛИ (ЗНАЧЕНИЕ) есть (ЗНАЧЕНИЕ2). h)* ПРИВОДИМОЕ основное предложение:
основа в СРЕДЕ ПРИВОДИМАЯ {d}. і) * определяющее предложение;
определяющее СЛОЙ последовательное
предложение ПРИВОДИМОЕ в СРЕДЕ {32а)-;
определяющее СЛОЙ выясняющее
предложение выдающее ВИД в СРЕДЕ {34с}- {Примеры:
чит (xl) ; вещ s : = 0;
суммирование : для і до п цк (х! [і] > 0 I s +: =xl [і] І не положительное) кц выход не положительное : печ (s) • вещ s : = 0;
суммирование : для і до п цк (xl [і] > 01 s + := xl [і] I не положительное) кц выход не положительное : печ (s) • суммирование : для і до п цк (xl [і] > 01 s +: =х! [і] I не положительное) кц выход не положительное : печ (s) •
для і доп цк (xl [i] >0ls + :=xl [і] I неположительное) кц выход не положительное : печ (s) •печ (s)
суммирование: d) печ (s) }
{Во многих случаях кортежи должны „уравниваться” (3.2.1.е). Замечания относительно уравнивания см. в 3.4.1.}
3.2.2. Семантика
Выдачей последовательного-предложения в окружении Е является выдача исполнения,его кортежа или любого кортежа, исполняемого „вместо него” {5.4.4.2}, в окружении, „устанавливаемом” {Ь}вокругЕ согласно этому последовательному-предложению; требуется, чтобы по области действия эта выдача не была младше данного Е.
Окружение Е, „устанавливаемое”
по окружению Е1, возможно не обусловленному, {которое определяет его область действия,}
вокруг окружения Е2, {определяющего его состав,}
согласно опре деляющему-новые-?П АРЫ-ПОНЯТИЮ С, возможно отсутствующему, {которое задает его участок,}
‘ >со значениями V, ..., Vn, возможно отсутствующими, {которые возможно буду і приписаны,}
определяется следующим образом:
если Е1 не обус: явлено, то пусть Е1 будет Е2;
Е младше Е1 , области действия и составлено из Е2 и нового участка, соответствуюи го '7ПАРАМ', если С присутствует, а иначе соответствующего 'ПУСТО';
Случай А: С есть опре' іяющее-предложение:
Для каждого сое Шлющего определения-вида М этого С, если они вообще есть.
• сцена,составленная из
фактического-описателя этого М и
окружения, необходимого для {7.2.2.с} этого фактического-описателя в Е, приписывается индикатору-вида этого М в Е;
Для каждого составляющего определения-метки L этого С, если они вообще есть,
• сцена, составленная из
кортежа, для которого L — прямой наследник, и
окружения Е, приписывается идентификатору-метки этого L в Е;
Если каждая 'ПАРА', заложенная в '7ПАРЫ', есть 'ИНФИКС для БИНАРНОГО' или 'СЛОВО для метки', то Е называется „нелокализующим” {см. 5.2.3.2.Ь};
Случай В: С есть задание-аргументов, заглавие-цикла или спецификация: Для і = 1, ..., п, где п - число 'ОПИСАНИЙ', заложенных в'7ПАРЫ', • Vj приписывается {4.8.2.а} і-му составляющему определяющему- идентификатору этого С в Е, если они вообще есть, а иначе {в случае невидимого заглавия-цикла} некоторому определяющему-букву- алеф-идентификатору-выдающему-целое;
Если С служит заглавием-цикла или спецификацией, то Е является нелокализующим.
{В остальных случаях, т.е. когда С отсутствует:
• Е является локализующим (см. 5.2.3.2.Ь), но дальнейшее не определено. ]-
с) Выдача W всякого кортежа С определяется следующим образом:
Если С содержит прямую наследную основу, за которой нет знака-про- должать, то
W — выдача этой основы;
а иначе
исполняется описание или основа этого С, если они вообще есть;
W — выдача кортежа этого С.
{См. также 5.4.4.2. Случай А.}
Совместные и параллельные предложения
{Совместные-предложения допускают произвольное совмещение потоков действий. Параллельные-предложения обеспечивают, кроме того, уровни координации для синхронизации (10.2.4) этого совмещения.
Всякое совместное- или параллельное-предложение состоит из последовательности основ, разделенных символами-а-также (, а именно ,, , ”),и заключено в скобки или пару начало-конец; кроме того, всякое параллельное-предложение начинается с пар.
Совместные-предложения, но не параллельные-предложения, могут выдавать составные значения, составленные из выдач их составляющих основ.
Примеры совместных-предложений, выдающих составные значения:
[ ] цел q = (1,4, 9, 16, 25) ;
ст (цел цена, строк класс) велосипед : = (150, „спортивный”).
Пример параллельного-предложения, синхронизирующего еду и разговоры за едой:
проц пуст есть, говорить; сема рот = уст 1;
пар начало
цк вниз рот; есть; вверх рот кц, цк вниз рот; говорить; вверх рот кц