ГОСУДАРСТВЕННЫЕ СТАНДАРТЫ

СОЮЗА ССР

ЯЗЫК ПРОГРАММИРОВАНИЯ

АЛГОЛ 68 И АЛГОЛ 68
РАСШИРЕННЫЙ

ГОСТ 27974-88, ГОСТ 27975-88

И

Цена Ip. 30 к, Б38—88/568,569

здание официальное



ГОСУДАРСТВЕННЫЙ КОМИТЕТ СССР ПО СТАНДАРТАМ
Москва

ГОСУДАРСТВЕННЫЕ СТАНДАРТЫ
СОЮЗА ССР

ЯЗЫК ПРОГРАММИРОВАНИЯ

АЛГОЛ 68 И АЛГОЛ 68
РАСШИРЕННЫЙ

ГОСТ 27974-88, ГОСТ 27975-88

Издание официальное

МОСКВА-198

9© Издательство стандартов, 1989

' 681.3.06:006.354 Группа П85

СУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР

'» 'ЙММЖММЖМММШШЖМЖМММММММММШМММММШН

Я

ГОСТ
27974-88

ЗЫК ПРОГРАММИРОВАНИЯ АЛГОЛ 68

Programming language ALGOL 68

ОКСТУ 4002

Дата введения 01.07.90

Настоящий стандарт распространяется на язык программирования Ал­гол 68* и его варианты и устанавливает требования:

к программе на языке программирования Алгол 68, представленной на машинном носителе или в комплекте программной документации;

к реализациям языка программирования Алгол 68 и его вариантов, ис­пользуемым при создании или эксплуатации программных средств, в части выполнения программ на языке Алгол 68.

Стандарт не распространяется на варианты языка Алгол 68 и програм- '■ л на языке Алгол 68, составленные в учебных или исследовательских це- х-

Вариантом языка Алгол 68 является определенный конкретной реали- •'ацией язык, сохраняющий основные конструкции языка Алгол 68, в опи- ании которого имеется ссылка на настоящий стандарт и четко перечисля­тся отличия определяемого языка от языка, определенного настоящим • этом.

любования к машинному представлению программы приведены в JF' южении 2. Указатель применяемых в стандарте понятий приведен в тожении 3. Список метаправил приведен в приложении 4.

* Историческая справка о языке Алгол 68 приведена в приложении 1.

И

Перепечатка воспрещена

здание официальное
  1. ЯЗЫК И МЕТАЯЗЫК

    1. Метод описания

      1. Введение

  1. Алгол 68 является языком, в котором могут формулироваться алгоритмы для каких-либо вычислителей, т. е. автоматов или людей. Он определяется настоящим стандартом в четыре стадии: „синтаксис” {Ь}, „семантика” (с), „представления” { d] и „стандартная языковая обста­новка” -Се}.

  2. Синтаксис есть механизм, посредством которого могут порождаться _ _ . все конструкты данного языка. Этот механизм действует следующим зом:

(і)» Заданы множества „гиперправил” и „метаправил” {1.1.3.4, 1.1.3.3}, из которых могут выводиться „порождающие правила”. Вхо­дящие в эти правила „метапонятия” и „гиперпонятия” представлены і j настоящем стандарте так, что каждое из них выглядит как грамматичф • ски правильная русская фраза, возможно с добавлением цифр и спеці , 'і альных знаков, в которой {изменяемые]- слова стоят в требуемсІ грамматической форме. Однако определение синтаксиса строгого яз» ка использует „приведенную форму” этих правил, для получения кот» і рой необходимо каждое слово, изменяемое в роде, числе или падем*, заменить на его форму именительного падежа единственного числа 1, если возможно, среднего рода {, сохранив время и залог причастий. г Полученное слово записывается малыми (большими) синтаксическими знаками, если исходное слово записано малыми (большими) синтакЯ- .

ческими знаками {, причем в последнем случае сохраняются цифрыи ’

специальные знаки, приписанные к этому слову]-.

{Например, приведенной формой гиперпонятия „УПАКОВКА обрій . основ сильно выдающих МАССИВ1 из ВИДА в СРЕДЕ” (3.3.l.d) буй ЛТ „УПАКОВКА образ основа сильно выдающее МАССИВ1 из ВИД вС^г'яТ'- ДА”.}

  1. „Конструктом в строгом языке” является всякое „дерево порож­дения” {1.1.3.2.f] , порождаемое применением подмножества указ^ ных порождающих правил; это дерево порождения содержит стати- скую {, т. е. известную во „время трансляции”,} информацию, относя­щуюся к данному конструкту; дерево составлено из иерархии наслед­ных деревьев порождения, оканчивающихся „символами” на самом нижнем уровне; с каждым деревом порождения связана „среда” из л свойств, описанных на предыдущих уровнях и передаваемых к средам его наследников. ^*.-

  2. „Программа в строгом языке” есть дерево порождения для поня­тия 'программа' {2.2.1.а}. Кроме того, она должна соответствовать „языковой обстановке” {10.1.2}.

Семантика приписывает каждому конструкту {, т. е. каждому дере­ву порождения,} „смысл” <2.1.4.1.а}, определяя эффект его „исполнения” {2.1.4.1} (которым, однако, может быть „не определено”). Это происхо­дит следующим образом:

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

  2. Смысл программы в строгом языке состоит в эффекте ее исполне­ния в пустом „первичном окружении”.

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

  1. Всякую программу в языке представления получают заменой всех символов какой-то программы в строгом языке определенными типо­графскими знаками {9.3}.

  2. Даже эталонный язык допускает значительную свободу для реали­затора {9.4.а,Ь,с}. Некоторую ограниченную форму эталонного языка, в которой эта свобода не использована, можно назвать „канонической формой” данного языка; предполагают, что она будет применяться для алгоритмов, предназначенных к публикации.

  3. Смысл программы в языке представления — это смысл той про­граммы {в строгом языке}, из которой она получена.

  1. Любой алгоритм выражается посредством собственно-ирограммы, которую вместе с описанной в настоящем стандарте стандартной языковой обстановкой следует рассматривать как вложенную в некоторый текст- программы {10.1.1.а}. Смысл собственно-программы {, в строгом языке или языке представления,}- это смысл программы, „подобной” этому ■’ксту-программы {10.1.2.а}.

  1. Прагматика

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

{Некоторые из прагматических замечаний содержат примеры, написан­ные на эталонном языке. Использующие-индикаторы входят в эти примеры вне контекста своих определяющих-индикаторов. Если не оговорено про­тивное, такие вхождения идентифицируют определяющие-индикаторы, вхо­дящие в стандартное- {, библиотечное-} или собственное-вступление и в собственное-заключение (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

проц финиш = пуст: на стоп;

вид книга = ст (строк текст, имя книга следующая) ;

книга проект;

принстон: Гренобль: сен пьер де шартрез: коотвейк:

варшава: зандвоорт: амстердам: тиррения: норт бервик: Мюнхен: финиш.}

  1. Синтаксис строгого языка

    1. Протопонятия.

а) В определении синтаксиса строгого языка используют формальную грамматику, в которой применяют специальные синтаксические знаки. Эти знаки можно классифицировать следующим образом:

  1. „малые синтаксические знаки”, изображаемые в данном стандарте как

„а”, „б”, „в”, „г”, „д”, „е”, „ж”, „з”, „и”, „й”, „I”, „к”, „л”, „м”, „н”, „о”, „п”, „р”, „с”, „т”, „у”, „ф”, „х”, ,,ц”, „ч”, „ш”, „щ”, „ъ”, „ы”, „ь”, „э”, „ю”, „я”, „(”, „)”;)

  1. „большие'синтаксические знаки”, изображаемые в данном стандар­те как

„А”, „Б”, „В”, „Г”, ,Д”, „Е”, „Ж”, „3”, „И”, „Й”, „К”, „Л”, „М”, „Н” , „О”, „П”, ,Д”’, „С”, „Т”, „У”, „Ф”, „X”, „Ц”, „Ч”, „Ш”, „Щ”, ,7>”, „Ы”, „Ь”, „Э”, „Ю”, „Я”, „О”, „1”, „2”, „3”, „4”, „5”, „6”, „7”, „8”, „9”, „?”, !”•

  1. „прочие синтаксические знаки”, изображаемые в данном стандарте как ,, . ” („точка”),„, ” („запятая”) , „ : ’’(„двоеточие”) ,„ ; ” („точка с запятой”) , „ ' ” („апостроф”) , „ - ” (,дефис”) и ,” („звездочка”) . Ь) „Протопонятие” есть возможно пустая последовательность малых синтаксических знаков.

  1. „Понятие” есть -[непустое]- протопонятие, для которого можно вы­вести {1.1.3.2.а, 1.1.3.4.d} порождающее правило.

  2. „Метапонятие” есть {непустая} последовательность больших синтак­сических знаков, для которой задано или получено {1.1.3.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. Внутри порождающих правил, метаправил и гиперправил никакие выделительные знаки { — кавычки, апострофы или дефисы — Г не ис­пользуют.

  2. Метапонятия и гиперпонятия, рассматриваемые сами по себе, {т.е. не в качестве обозначений протопонятий,} заключают в кавычки.

  3. Парапонятия не заключают ни во что {, но, проставляют дефисы там, где иначе были бы пробелы}-.

  4. Все остальные гиперпонятия, {включая протопонятия,}- не рас­смотренные выше, заключают в апострофы {, чтобы указать, что они обозначают некоторое протопонятие, как это определяется в 1.1.4.1.а}-, (v) Особенности типографского набора, такие, как пробел, перенос, переход на новую строчку или страницу, во внимание не принимают (см., однако, 9.4.d) .

{Примеры:

  1. ЛОКАЛИЗУЮЩИЙ :: локальный; глобальный; первичный - явля­ется метаправилом;

  2. „ЧИСЛОВОЕ” является метапонятием и не обозначает ничего, кро­ме самого себя;

  3. идентификатор-выдающий-имя-ЧИСЛОВОГО, не заключаемый в апострофы, но снабженный дефисами, является парапонятием, обозна­чающим некоторый конструкт (1.1.4.2.а) ;

  4. 'рациональное' является как гиперпонятием, так и протопоняти­ем; рассматриваемое как гиперпонятие оно обозначает самого себя в качестве протопонятия;

  5. 'имя вещественного' значит то же, что и 'имявещественного'.} Г. 1.3.2. Порождающие правила и деревья порождения.

  1. „Порождающие правила” {Ь}-, которые можно вывести из данных здесь „гиперправил” {1.1.3.4}-, составляют {выводимые} порождающие правила настоящего языка; кроме того, некоторые правила неформально указаны в 8.1.4.1.du 9.2.1 .d.

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

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

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

двоеточия;

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

точки.

Такое правило называют порождающим правилом „для” {этого поня­тия (1.1.3.1.с) }N.

{Возможная звездочка, если она есть, показывает, что это понятие не используется в других порождающих правилах, а заведено только для того, чтобы облегчить изложение в семантике. Звездочка показывает также, что данное понятие может использоваться как „абстракция” (1.1.4.2.Ь) одной из своих альтернатив.}

  1. Любая „альтернатива” есть непустая последовательность „звеньев”, разделенных запятыми.

  2. Всякое „звено” есть либо

(і) понятие { , и тогда его можно назвать продуктивным или нетерми­нальным}, либо

(й) символ {, который терминален}, либо

  1. пусто, либо

  2. другое протопонятие {, для которого нельзя вывести никакого порождающего правила}, называемое в этом случае „тупиком”.

{Например, звено 'изображение имени вещественного' (, выводимое из гиперправила 8.0.1.а,) является тупиком.}

{Примеры:

  1. порядок: запись десятичного основания, степень десяти. (8.1.2.1 ,g) •

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

символ на десять в степени;

символ буква е либо символ буква е лат.

(8.1.2.1.11)

  1. запись десятичного основания, степень десяти • символ на десять в степени • символ буква е либо символ буква е лат

  2. запись десятичного основания • степень десяти •

символ на десять в степени •

символ буква е либо символ буква е лат}