Алгол 68 разрабатывался как международный язык программирования, поэтому определяющий документ, хотя и написан на английском языке и использует служеб­ные слова и обозначения на основе английского языка, предусматривает возможность создания в соответствии с некоторыми правилами версий Алгола 68 для других наци­ональных языков и переводов определяющего документа на другие языки. Перевод на русский язык одновременно содержит и русскую версию языка Алгол 68, позволяю­щую наряду с английскими служебными словами и обозначениями использовать слу­жебные слова и обозначения на основе русского языка. Данный перевод был рассмот­рен и принят временной научно-технической комиссией (ВНТК), специально создан­ной для этой цели при Государственном Комитете Совета Министров СССР по науке и технике (ГКНТ) в 1976 г. и утвержден ГКНТ в качестве определяющего документа для русской версии Алгола 68. Этот документ опубликован в 1979 г. параллельно с английским текстом (Пересмотренное сообщение об Алголе 68; Ред. А. Ван Вейн- гаарден, Б. Майу, Дж. Пек, К. Костер, М. Синцов, Ч. Линдси, Л. Меертенс, Р. Фискер: Пер. с англ. А. А. Берса, под ред. А. П. Ершова - М.: Мир, 1979).

Настоящий стандарт воспроизводит часть публикации 1979 г. с минимальными изменениями технического характера.

Требования к машинному представлению программы, содержащиеся в приложе­нии 2, также основаны на документе ИФИП (Wilfred J. Hansen, Hendrik Boom. The Report on the standard hardware representation for ALGOL 68. ALGOL Bulletin, 40, pp. 25-43), принятом РГ 2.1, утвержденном ТК 2 и одобренном для публикации Генераль­ной Ассамблеей ИФИП. В буквальном виде этот документ не может быть принят для русской версии из-за необходимости одновременного использования русского и ла­тинского алфавитов и особенностей символьных наборов отечественных устройств подготовки и отображения информации. Правила машинного представления для рус­ской версии Алгола 68 неоднократно обсуждались ВНТК и рабочей группой по алго­ритмическому языку Алгол 68 (РГ А68) комиссии по языкам и системам программи­рования при ГКНТ. ВНТК приняла вариант машинного представления, предложенный В. В. Бролем и впоследствии реализованный В. Б. Яковлевым в трансляторе для МВК „Эльбрус”.

При подготовке настоящего стандарта В. В. Бролем и В. Б. Яковлевым с учетом опыта использования реализации на МВК „Эльбрус” разработан новый вариант машин­ного представления программ на Алголе 68.

ПРИЛОЖЕНИЕ 2

Обязательное

ТРЕБОВАНИЯ К МАШИННОМУ ПРЕДСТАВЛЕНИЮ ПРОГРАММЫ

  1. ОПРЕДЕЛЕНИЯ

    1. Абстрактная литера - это одна из следующих 152 литер:

буквы латинского алфавита:

А, В, С, D, Е, F, G, Н, I, J, К, L, М, N, О, Р, Q, R, S, Т, U, Ў, W, X, Y, Z,

а, Ъ, с, d, е, f, g, h, і, j, k, 1, m, n, o, p, q. r, s, t, u, v, w, x, y, z

буквы русского алфавита:

  1. А, Б, В, Г, Д, Е, Ё, Ж, З, И, Й, К, Л, М, Н, О, П, Р, С, Т, У, Ф, X, Ц, Ч, Ш, Щ, Ъ, Ы, ь, З, ю, Я,

а, б, в, г, д, е, є, ж, з, и, й, к, л, м, н, о, п, р, с, т, у, ф, х, ц, ч, ш, щ, ъ, ы, ь, з, ю, я цифры:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9

прочие литеры:

пробел % '()* + ,-./: ; < = >@ [ ],_ і

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

  1. Конкретная литера — это некоторая литера, имеющаяся на устройстве ввода- вывода. Каждая такая литера составлена из множества знаков и кодов в соответствии с местными соглашениями.

  2. Разделитель - это особенность типографского набора (п. 9.4.d), начало или конец текста программы или любая абстрактная литера, отличная от буквы, цифры или знака подчеркивания. Слова и выделенные слова ограничиваются разделителями.

  3. 1.4. Две строки литер соприкасаются, если между ними нет литер или особенно­стей типографского набора. Если одна из строк литер следует за или предшествует другой, то они также соприкасаются.

  4. Выделенное слово - это:

любое представление, составленное из выделенных букв или цифр в эталонном языке (подраздел 9.4) (т.е. символы-выделенное-СЛОВО и представления, указанные в п.9.4.1 как выделенные);

символ, представленный выделенным словом;

литеры, записывающие выделенное слово способом, специфицированным в под­разделе 3.4 настоящего приложения.

    1. Слово - это символ-СЛОВО (подпункт 9.4.2.2.а), например, - „конец фай­ла” - это слово.

    2. Слог — непустая последовательность букв и цифр (слово „конец файла”, ис­пользованное так, как в п.3.4.1 настоящего приложения, состоит из двух слогов).

  1. ПРЕДСТАВЛЕНИЕ КОНСТРУКТОВ АЛГОЛА 68

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

Если предусмотрено несколько конкретных литер (например, ДЛЯ „ I ” и „I” и „!”) то они должны эквивалентно обрабатываться всюду, кроме как в строках и при распечатке программ, где каждая представляет саму себя.

  1. В каждом алфавите соответствующие друг другу прописные и строчные бук­вы эквивалентны, за исключением ситуаций, предусмотренных в подразделе 3.1 и п.3.5.2 настоящего приложения.

  2. Конструкт в языке представления получается заменой символов на их пред­ставления. Представление для каждого символа дается в терминах абстрактных литер. Кодирование конструктов в языке представления для машинной обработки осуще­ствляется заменой каждой абстрактной литеры на соответствующую ей конкретную литеру и вставкой особенностей типографского набора (там, где это разрешено).

В некоторых реализациях отдельные конкретные литеры могут не иметь пред­ставлений на устройствах ввода-вывода. В таких случаях реализация должна обеспе­чить дополнительное представление соответствующих им абстрактных литер (напри­мер, в виде комбинаций конкретных литер, доступных на этих устройствах). При этом, в частности, допускается расширение списка зарезервированных слов из под­пункта 3.4.1.3 настоящего приложения, а также введение альтернативных обозначений из раздела 10 и расширение списка представлений символов из п.9.4.1 настоящего стандарта альтернативными представлениями, использующими только доступные кон­кретные литеры.

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

  1. ОТДЕЛЬНЫЕ ПРЕДСТАВЛЕНИЯ

    1. Элементы строки

      1. Множество элементов-строки (подпункт 8.1.4.1.Ь) - это множество аб­страктных литер без кавычки и апострофа, но с символом-образ-кавычки и символом- образ-апострофа. Значение каждой абстрактной литеры есть сама литера. Соответ­ствующие друг другу прописные и строчные буквы имеют различные естественные зна­чения. Симол-образ-кавычки записывают двумя соприкасающимися кавычками и его естественным значением является кавычка. Символ-образ-апострофа записывают дву­мя соприкасающимися апострофами и его естественным значением является апостроф (один апостроф может использоваться в реализациях как регистровая литера).

Последовательность управляющих литер, отсутствующих на устройствах ввода- вывода, или одна такая литера в изображении-строки может быть представлена сле­дующим образом:

символ-апостроф,

символ-открыть,

символ-образов-управляющих-литер, символ-закрыть.

Образы литер в списке могут задаваться целыми десятичными числами, а также их обозначениями в русской или латинской нотации по ГОСТ 27465 и должны разде­ляться запятыми.

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

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

  1. Элементы прагматов

    1. Последовательностыо-элементов-ПОЯСНЕНИЙ-ОФОРМЛЕННЫХ (п.9.2.1.с) может служить любая последовательность литер (не обязательно абстрактных), в ко­торую не входит последовательность (вместе с разделителями), представляющая сам символ-ПОЯСНЕНИЕ-ОФОРМЛЕННЫЙ (т.к. последний,завершается прагмат). В реа­лизации возможны, однако, дальнейшие ограничения на последовательность литер, до­пустимых в прагматах (но только не в примечаниях).

    2. Предусмотрены шесть стандартных элементов-прагматов: СТРАНИЦА (PAGE), ТЧК (POINT), BP (UPPER), РЕЗ (RES), ЗАПОМНИТЬ (PUSH), ВОССТАНО­ВИТЬ (POP) (В скобках английские эквиваленты элементов-прагматов). Эти элемен­ты должны распознаваться хотя бы в их минимальной форме:

Символ-прагмат-ОФОРМЛЕННЫЙ, элемент,

Символ-прагмат-ОФОРМЛЕННЫЙ.

Каждый из перечисленных элементов-прагматов записывается как последователь­ность букв, которым могут предшествовать или за которыми могут следовать особен­ности типографского набора. (Во всех выделяющих режимах символ-прагмат может быть записан как „ПРАГМ” с последующим разделителем).

    1. Новая страница

      1. При распечатке некоторого конструкта в конкретных литерах с помощью процессора Алгол 68 прагмат, содержащий элемент прагмата СТРАНИЦА (PAGE), ука­зывает, что строчку, следующую за строчкой, содержащей замыкающий символ-праг­мат, печатают с начала новой страницы. (Прагмат СТРАНИЦА не является, однако, особенностью типографского набора).

    2. Запоминание режима выделения

      1. Прагмат, содержащий элемент-прагмата ЗАПОМНИТЬ (PUSH), указывает, что значение действующего в данном месте прагмата, определяющего режим выделе­ния (подраздел 3^. настоящего приложения), запоминается для последующего восста­новления.

      2. Прагмат, содержащий элемент-прагмата ВОССТАНОВИТЬ (POP), связы­вается с последним из прагматов, содержащих элемент-прагмата ЗАПОМНИТЬ, еще не связанным с другим прагматом, содержащим элемент-прагмата ВОССТАНОВИТЬ (ес­ли такой есть), и восстайавливает действие того из прагматов, задающих режим выде­ления, который действовал перед этим прагматом.

  1. Особенности типографского набора

    1. Особенностями типографского набора являются пробел, новая строчка и разрыв строки. Новая строчка может быть одной конкретной литерой или физическим явлением, подобным концу записи. Разрыв строки используют только в изображени- ях-строки.

  2. Слова и выделенные слова

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

Новый режим вводится прагматом, содержащим один из элементов-прагмата ТЧК (POINT), BP (UPPER), РЕЗ. (RES) и начинает действовать сразу же после замыкающего символа-прагмат. Режим не действует на „оформление” представления (так, в режи­мах ВР и РЕЗ „ПРАГМ” соответствует „ПРАГМ”). Приводимые ниже правила требуют наличия разделителя в некоторой позиции. В качестве разделителей можно использо­вать особенности типографского набора. Слова различаются только тогда, когда раз­личны конкатенации их подслов, например, „конец файла” может быть записан также как „коне цфайла”.

  1. В режиме выделения точкой (ТЧК) выделенные слова представляют сле­дующим образом:

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

слоги должны разделяться литерами подчеркивания, но не особенностями типо­графского набора;

за выделенным словом должен следовать разделитель.

В режиме выделения точкой слова представляют следующим образом:

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

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

если слог не завершается литерой подчеркивания, то после него должен следо­вать разделитель.

  1. В режиме выделения прописными буквами (ВР) слова и выделенные сло­ва представляют как в режиме ТЧК, но только с использованием дополнительных пра­вил:

в выделенных словах не должно быть смешения прописных и строчных букв: точка может быть опущена перед выделенным словом из прописных букв, если ему предшествует разделитель, отличный от точки, строчная буква или цифра, не яв­ляющаяся „прописной цифрой”. „Прописная цифра” - это цифра, которой предшест­вует прописная буква или прописная цифра;