.П
ГОСУДАРСТВЕННЫЕ СТАНДАРТЫ
СОЮЗА ССР
ЯЗЫК ПРОГРАММИРОВАНИЯ
АЛГОЛ 68 И АЛГОЛ 68
РАСШИРЕННЫЙ
И
Цена Ip. 30 к, Б38—88/568,569
здание официальноеГОСУДАРСТВЕННЫЙ КОМИТЕТ СССР ПО СТАНДАРТАМ
Москва
ГОСУДАРСТВЕННЫЕ СТАНДАРТЫ
СОЮЗА ССР
ЯЗЫК ПРОГРАММИРОВАНИЯ
АЛГОЛ 68 И АЛГОЛ 68
РАСШИРЕННЫЙ
Издание официальное
МОСКВА-198
9© Издательство стандартов, 1989
' 681.3.06:006.354 Группа П85
СУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР
'» 'ЙММЖММЖМММШШЖМЖМММММММММШМММММШН
Я
ГОСТ
27974-88
Programming language ALGOL 68
ОКСТУ 4002
Дата введения 01.07.90
Настоящий стандарт распространяется на язык программирования Алгол 68* и его варианты и устанавливает требования:
к программе на языке программирования Алгол 68, представленной на машинном носителе или в комплекте программной документации;
к реализациям языка программирования Алгол 68 и его вариантов, используемым при создании или эксплуатации программных средств, в части выполнения программ на языке Алгол 68.
Стандарт не распространяется на варианты языка Алгол 68 и програм- '■ л на языке Алгол 68, составленные в учебных или исследовательских це- х-
Вариантом языка Алгол 68 является определенный конкретной реали- •'ацией язык, сохраняющий основные конструкции языка Алгол 68, в опи- ании которого имеется ссылка на настоящий стандарт и четко перечислятся отличия определяемого языка от языка, определенного настоящим • этом.
любования к машинному представлению программы приведены в JF' южении 2. Указатель применяемых в стандарте понятий приведен в тожении 3. Список метаправил приведен в приложении 4.
* Историческая справка о языке Алгол 68 приведена в приложении 1.
И
Перепечатка воспрещена
здание официальноеЯЗЫК И МЕТАЯЗЫК
Метод описания
Введение
Алгол 68 является языком, в котором могут формулироваться алгоритмы для каких-либо вычислителей, т. е. автоматов или людей. Он определяется настоящим стандартом в четыре стадии: „синтаксис” {Ь}, „семантика” (с), „представления” { d] и „стандартная языковая обстановка” -Се}.
Синтаксис есть механизм, посредством которого могут порождаться _ _ . все конструкты данного языка. Этот механизм действует следующим зом:
(і)» Заданы множества „гиперправил” и „метаправил” {1.1.3.4, 1.1.3.3}, из которых могут выводиться „порождающие правила”. Входящие в эти правила „метапонятия” и „гиперпонятия” представлены і j настоящем стандарте так, что каждое из них выглядит как грамматичф • ски правильная русская фраза, возможно с добавлением цифр и спеці , 'і альных знаков, в которой {изменяемые]- слова стоят в требуемсІ грамматической форме. Однако определение синтаксиса строгого яз» ка использует „приведенную форму” этих правил, для получения кот» і рой необходимо каждое слово, изменяемое в роде, числе или падем*, заменить на его форму именительного падежа единственного числа 1, если возможно, среднего рода {, сохранив время и залог причастий. г Полученное слово записывается малыми (большими) синтаксическими знаками, если исходное слово записано малыми (большими) синтакЯ- .
ческими знаками {, причем в последнем случае сохраняются цифрыи ’
специальные знаки, приписанные к этому слову]-.
{Например, приведенной формой гиперпонятия „УПАКОВКА обрій . основ сильно выдающих МАССИВ1 из ВИДА в СРЕДЕ” (3.3.l.d) буй ЛТ „УПАКОВКА образ основа сильно выдающее МАССИВ1 из ВИД вС^г'яТ'- ДА”.}
„Конструктом в строгом языке” является всякое „дерево порождения” {1.1.3.2.f] , порождаемое применением подмножества указ^ ных порождающих правил; это дерево порождения содержит стати- скую {, т. е. известную во „время трансляции”,} информацию, относящуюся к данному конструкту; дерево составлено из иерархии наследных деревьев порождения, оканчивающихся „символами” на самом нижнем уровне; с каждым деревом порождения связана „среда” из л свойств, описанных на предыдущих уровнях и передаваемых к средам его наследников. ^*.-
„Программа в строгом языке” есть дерево порождения для понятия 'программа' {2.2.1.а}. Кроме того, она должна соответствовать „языковой обстановке” {10.1.2}.
Семантика приписывает каждому конструкту {, т. е. каждому дереву порождения,} „смысл” <2.1.4.1.а}, определяя эффект его „исполнения” {2.1.4.1} (которым, однако, может быть „не определено”). Это происходит следующим образом:
Устанавливают динамическое {, т. е. во время работы программы,} дерево активных „действий” {2.1.4}; в большинстве случаев действием будет исполнение какого-нибудь дерева порождения Т в некотором „окружении”, согласующемся со средой этого Т, причем оно ■может привести к исполнению некоторых наследников Т в подходящих вновь создаваемых наследных окружениях.
Смысл программы в строгом языке состоит в эффекте ее исполнения в пустом „первичном окружении”.
Программа в строгом языке должна быть представлена в каком-нибудь „языке представления” {9.3.а}, выбираемом реализатором. В большинстве случаев им будет официальный „эталонный язык”.
Всякую программу в языке представления получают заменой всех символов какой-то программы в строгом языке определенными типографскими знаками {9.3}.
Даже эталонный язык допускает значительную свободу для реализатора {9.4.а,Ь,с}. Некоторую ограниченную форму эталонного языка, в которой эта свобода не использована, можно назвать „канонической формой” данного языка; предполагают, что она будет применяться для алгоритмов, предназначенных к публикации.
Смысл программы в языке представления — это смысл той программы {в строгом языке}, из которой она получена.
Любой алгоритм выражается посредством собственно-ирограммы, которую вместе с описанной в настоящем стандарте стандартной языковой обстановкой следует рассматривать как вложенную в некоторый текст- программы {10.1.1.а}. Смысл собственно-программы {, в строгом языке или языке представления,}- это смысл программы, „подобной” этому ■’ксту-программы {10.1.2.а}.
Прагматика
По разным местам настоящего стандарта рассеяны „прагматические” замечания, заключенные в фигурные скобки „ { ”и„ }”. Они не входят в определение языка, а служат для того, чтобы помочь понять назначение данных определений и вытекающих из них следствий, а также, чтобы помочь найти соответствующие разделы или правила.
{Некоторые из прагматических замечаний содержат примеры, написанные на эталонном языке. Использующие-индикаторы входят в эти примеры вне контекста своих определяющих-индикаторов. Если не оговорено противное, такие вхождения идентифицируют определяющие-индикаторы, входящие в стандартное- {, библиотечное-} или собственное-вступление и в собственное-заключение (10.2, 10.3, 10.5) (например, см. 1О.2.3.12.а для пи, 10.5.1.Ь для псч и 10.5.2.а для стоп), или же в следующий текст:
цел i, j, к, т, п; вещ а, Ь, х, у; лог р, q, переполнение; лите; формат f; слог г; * ’
строк s; бит t; компл w, z; имя вещ хх, уу;
об (цел, вещ) uir; проц пуст задача 1, задача 2;
[1 : п] вещ xl, yl; подв [1 : п] вещ al;
[1 : m, 1 : п] вещ х2; [1 : n, 1 : п] вещ у2;
[1 : п] цел il;i [1 : m, 1 : п] цел i2; [1 : п] компл zl;
проц x или у = имя вещ: если печ < .5 го х иначе у все;
проц ncos = (цел і) вещ: cos (2Х пиХ i/n);
проц nsin = (цел і) вещ: sin (2Хпи|Х i/n); '"W
проц финиш = пуст: на стоп;
вид книга = ст (строк текст, имя книга следующая) ;
книга проект;
принстон: Гренобль: сен пьер де шартрез: коотвейк:
варшава: зандвоорт: амстердам: тиррения: норт бервик: Мюнхен: финиш.}
Синтаксис строгого языка
Протопонятия.
а) В определении синтаксиса строгого языка используют формальную грамматику, в которой применяют специальные синтаксические знаки. Эти знаки можно классифицировать следующим образом:
„малые синтаксические знаки”, изображаемые в данном стандарте как
„а”, „б”, „в”, „г”, „д”, „е”, „ж”, „з”, „и”, „й”, „I”, „к”, „л”, „м”, „н”, „о”, „п”, „р”, „с”, „т”, „у”, „ф”, „х”, ,,ц”, „ч”, „ш”, „щ”, „ъ”, „ы”, „ь”, „э”, „ю”, „я”, „(”, „)”;)
„большие'синтаксические знаки”, изображаемые в данном стандарте как
„А”, „Б”, „В”, „Г”, ,Д”, „Е”, „Ж”, „3”, „И”, „Й”, „К”, „Л”, „М”, „Н” , „О”, „П”, ,Д”’, „С”, „Т”, „У”, „Ф”, „X”, „Ц”, „Ч”, „Ш”, „Щ”, ,7>”, „Ы”, „Ь”, „Э”, „Ю”, „Я”, „О”, „1”, „2”, „3”, „4”, „5”, „6”, „7”, „8”, „9”, „?”, !”•
„прочие синтаксические знаки”, изображаемые в данном стандарте как ,, . ” („точка”),„, ” („запятая”) , „ : ’’(„двоеточие”) ,„ ; ” („точка с запятой”) , „ ' ” („апостроф”) , „ - ” (,дефис”) и ,” („звездочка”) . Ь) „Протопонятие” есть возможно пустая последовательность малых синтаксических знаков.
„Понятие” есть -[непустое]- протопонятие, для которого можно вывести {1.1.3.2.а, 1.1.3.4.d} порождающее правило.
„Метапонятие” есть {непустая} последовательность больших синтаксических знаков, для которой задано или получено {1.1.3.3.а} какое- нибудь метаправило.
„Гиперпонятие” есть возможно пустая1 последовательность, каждый элемент которой является либо малым синтаксическим знаком, либо метапонятием.
{Таким образом, протопонятия (Ь) образуют подкласс класса гиперпонятий. Гиперпонятия используют в метаправилах (1.1.3.3), в гиперправилах (1.1.3.4), в качестве парапонятий (1.1.4.2), а также сами по себе, чтобы „обозначать” определенные классы протопонятий (1.1,4.1).}
{„Парапонятие” есть гиперпонятие, к которому Применяют определенные специальные соглашения и интерпретации, как разъяснено в 1.1.4.2.} f) „Символ”есть протопонятие, начинающееся с 'символ'. {Каждое парапонятие символ (9.1.1 ,h) обозначает конкретное вхождение такого протопонятия. }
g) Для того, чтобы выделить различные использования в тексте настоящего стандарта определенных выше терминов, приняты следующие соглашения:
Внутри порождающих правил, метаправил и гиперправил никакие выделительные знаки { — кавычки, апострофы или дефисы — Г не используют.
Метапонятия и гиперпонятия, рассматриваемые сами по себе, {т.е. не в качестве обозначений протопонятий,} заключают в кавычки.
Парапонятия не заключают ни во что {, но, проставляют дефисы там, где иначе были бы пробелы}-.
Все остальные гиперпонятия, {включая протопонятия,}- не рассмотренные выше, заключают в апострофы {, чтобы указать, что они обозначают некоторое протопонятие, как это определяется в 1.1.4.1.а}-, (v) Особенности типографского набора, такие, как пробел, перенос, переход на новую строчку или страницу, во внимание не принимают (см., однако, 9.4.d) .
{Примеры:
ЛОКАЛИЗУЮЩИЙ :: локальный; глобальный; первичный - является метаправилом;
„ЧИСЛОВОЕ” является метапонятием и не обозначает ничего, кроме самого себя;
идентификатор-выдающий-имя-ЧИСЛОВОГО, не заключаемый в апострофы, но снабженный дефисами, является парапонятием, обозначающим некоторый конструкт (1.1.4.2.а) ;
'рациональное' является как гиперпонятием, так и протопонятием; рассматриваемое как гиперпонятие оно обозначает самого себя в качестве протопонятия;
'имя вещественного' значит то же, что и 'имявещественного'.} Г. 1.3.2. Порождающие правила и деревья порождения.
„Порождающие правила” {Ь}-, которые можно вывести из данных здесь „гиперправил” {1.1.3.4}-, составляют {выводимые} порождающие правила настоящего языка; кроме того, некоторые правила неформально указаны в 8.1.4.1.du 9.2.1 .d.
Всякое „порождающее правило” состоит из следующих элементов, расположенных в указанном порядке
:возможной звездочки;
непустого прото понятия N;
двоеточия;
непустой последовательности „альтернатив”, разделенных точками с запятой;
точки.
Такое правило называют порождающим правилом „для” {этого понятия (1.1.3.1.с) }N.
{Возможная звездочка, если она есть, показывает, что это понятие не используется в других порождающих правилах, а заведено только для того, чтобы облегчить изложение в семантике. Звездочка показывает также, что данное понятие может использоваться как „абстракция” (1.1.4.2.Ь) одной из своих альтернатив.}
Любая „альтернатива” есть непустая последовательность „звеньев”, разделенных запятыми.
Всякое „звено” есть либо
(і) понятие { , и тогда его можно назвать продуктивным или нетерминальным}, либо
(й) символ {, который терминален}, либо
пусто, либо
другое протопонятие {, для которого нельзя вывести никакого порождающего правила}, называемое в этом случае „тупиком”.
{Например, звено 'изображение имени вещественного' (, выводимое из гиперправила 8.0.1.а,) является тупиком.}
{Примеры:
порядок: запись десятичного основания, степень десяти. (8.1.2.1 ,g) •
запись десятичного основания:
символ на десять в степени;
символ буква е либо символ буква е лат.
(8.1.2.1.11)
запись десятичного основания, степень десяти • символ на десять в степени • символ буква е либо символ буква е лат
запись десятичного основания • степень десяти •
символ на десять в степени •
символ буква е либо символ буква е лат}