Алгол 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
Обязательное
ТРЕБОВАНИЯ К МАШИННОМУ ПРЕДСТАВЛЕНИЮ ПРОГРАММЫ
ОПРЕДЕЛЕНИЯ
Абстрактная литера - это одна из следующих 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
буквы русского алфавита:
А, Б, В, Г, Д, Е, Ё, Ж, З, И, Й, К, Л, М, Н, О, П, Р, С, Т, У, Ф, X, Ц, Ч, Ш, Щ, Ъ, Ы, ь, З, ю, Я,
а, б, в, г, д, е, є, ж, з, и, й, к, л, м, н, о, п, р, с, т, у, ф, х, ц, ч, ш, щ, ъ, ы, ь, з, ю, я цифры:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
прочие литеры:
пробел ” -і % '()* + ,-./: ; < = >@ [ ],_ і
Представление программы на Алголе 68 определяют как разделенную на строчки последовательность абстрактных литер.
Конкретная литера — это некоторая литера, имеющаяся на устройстве ввода- вывода. Каждая такая литера составлена из множества знаков и кодов в соответствии с местными соглашениями.
Разделитель - это особенность типографского набора (п. 9.4.d), начало или конец текста программы или любая абстрактная литера, отличная от буквы, цифры или знака подчеркивания. Слова и выделенные слова ограничиваются разделителями.
1.4. Две строки литер соприкасаются, если между ними нет литер или особенностей типографского набора. Если одна из строк литер следует за или предшествует другой, то они также соприкасаются.
Выделенное слово - это:
любое представление, составленное из выделенных букв или цифр в эталонном языке (подраздел 9.4) (т.е. символы-выделенное-СЛОВО и представления, указанные в п.9.4.1 как выделенные);
символ, представленный выделенным словом;
литеры, записывающие выделенное слово способом, специфицированным в подразделе 3.4 настоящего приложения.
Слово - это символ-СЛОВО (подпункт 9.4.2.2.а), например, - „конец файла” - это слово.
Слог — непустая последовательность букв и цифр (слово „конец файла”, использованное так, как в п.3.4.1 настоящего приложения, состоит из двух слогов).
ПРЕДСТАВЛЕНИЕ КОНСТРУКТОВ АЛГОЛА 68
Для каждой абстрактной литеры реализация должна предусматривать одну или несколько конкретных литер, отличающихся от конкретных литер для других абстрактных литер.
Если предусмотрено несколько конкретных литер (например, ДЛЯ „ I ” и „I” и „!”) то они должны эквивалентно обрабатываться всюду, кроме как в строках и при распечатке программ, где каждая представляет саму себя.
В каждом алфавите соответствующие друг другу прописные и строчные буквы эквивалентны, за исключением ситуаций, предусмотренных в подразделе 3.1 и п.3.5.2 настоящего приложения.
Конструкт в языке представления получается заменой символов на их представления. Представление для каждого символа дается в терминах абстрактных литер. Кодирование конструктов в языке представления для машинной обработки осуществляется заменой каждой абстрактной литеры на соответствующую ей конкретную литеру и вставкой особенностей типографского набора (там, где это разрешено).
В некоторых реализациях отдельные конкретные литеры могут не иметь представлений на устройствах ввода-вывода. В таких случаях реализация должна обеспечить дополнительное представление соответствующих им абстрактных литер (например, в виде комбинаций конкретных литер, доступных на этих устройствах). При этом, в частности, допускается расширение списка зарезервированных слов из подпункта 3.4.1.3 настоящего приложения, а также введение альтернативных обозначений из раздела 10 и расширение списка представлений символов из п.9.4.1 настоящего стандарта альтернативными представлениями, использующими только доступные конкретные литеры.
Чтобы перенос программ сводился только к простой транслитерации, реализация должна предусматривать способ представления программ в виде, не использующем подобных местных соглашений, и преобразование программ к такому виду.
ОТДЕЛЬНЫЕ ПРЕДСТАВЛЕНИЯ
Элементы строки
Множество элементов-строки (подпункт 8.1.4.1.Ь) - это множество абстрактных литер без кавычки и апострофа, но с символом-образ-кавычки и символом- образ-апострофа. Значение каждой абстрактной литеры есть сама литера. Соответствующие друг другу прописные и строчные буквы имеют различные естественные значения. Симол-образ-кавычки записывают двумя соприкасающимися кавычками и его естественным значением является кавычка. Символ-образ-апострофа записывают двумя соприкасающимися апострофами и его естественным значением является апостроф (один апостроф может использоваться в реализациях как регистровая литера).
Последовательность управляющих литер, отсутствующих на устройствах ввода- вывода, или одна такая литера в изображении-строки может быть представлена следующим образом:
символ-апостроф,
символ-открыть,
символ-образов-управляющих-литер, символ-закрыть.
Образы литер в списке могут задаваться целыми десятичными числами, а также их обозначениями в русской или латинской нотации по ГОСТ 27465 и должны разделяться запятыми.
Дополнительная особенность типографского набора — „разрыв строки” - предусмотрена для использования только внутри изображений-строк и изображений- литерных и записывается как кавычка с последующими одной или более особенностями типографского набора, отличными от разрыва строки, с последующей еще одной кавычкой.
Когда изображение-строки должно быть размещено в исходном тексте программы на нескольких строчках, разрыв строки позволяет указывать количество пробелов в конце одной строчки и однозначно определяет положение продолжения изображения строки на следующей строчке.
Элементы прагматов
Последовательностыо-элементов-ПОЯСНЕНИЙ-ОФОРМЛЕННЫХ (п.9.2.1.с) может служить любая последовательность литер (не обязательно абстрактных), в которую не входит последовательность (вместе с разделителями), представляющая сам символ-ПОЯСНЕНИЕ-ОФОРМЛЕННЫЙ (т.к. последний,завершается прагмат). В реализации возможны, однако, дальнейшие ограничения на последовательность литер, допустимых в прагматах (но только не в примечаниях).
Предусмотрены шесть стандартных элементов-прагматов: СТРАНИЦА (PAGE), ТЧК (POINT), BP (UPPER), РЕЗ (RES), ЗАПОМНИТЬ (PUSH), ВОССТАНОВИТЬ (POP) (В скобках английские эквиваленты элементов-прагматов). Эти элементы должны распознаваться хотя бы в их минимальной форме:
Символ-прагмат-ОФОРМЛЕННЫЙ, элемент,
Символ-прагмат-ОФОРМЛЕННЫЙ.
Каждый из перечисленных элементов-прагматов записывается как последовательность букв, которым могут предшествовать или за которыми могут следовать особенности типографского набора. (Во всех выделяющих режимах символ-прагмат может быть записан как „ПРАГМ” с последующим разделителем).
Новая страница
При распечатке некоторого конструкта в конкретных литерах с помощью процессора Алгол 68 прагмат, содержащий элемент прагмата СТРАНИЦА (PAGE), указывает, что строчку, следующую за строчкой, содержащей замыкающий символ-прагмат, печатают с начала новой страницы. (Прагмат СТРАНИЦА не является, однако, особенностью типографского набора).
Запоминание режима выделения
Прагмат, содержащий элемент-прагмата ЗАПОМНИТЬ (PUSH), указывает, что значение действующего в данном месте прагмата, определяющего режим выделения (подраздел 3^. настоящего приложения), запоминается для последующего восстановления.
Прагмат, содержащий элемент-прагмата ВОССТАНОВИТЬ (POP), связывается с последним из прагматов, содержащих элемент-прагмата ЗАПОМНИТЬ, еще не связанным с другим прагматом, содержащим элемент-прагмата ВОССТАНОВИТЬ (если такой есть), и восстайавливает действие того из прагматов, задающих режим выделения, который действовал перед этим прагматом.
Особенности типографского набора
Особенностями типографского набора являются пробел, новая строчка и разрыв строки. Новая строчка может быть одной конкретной литерой или физическим явлением, подобным концу записи. Разрыв строки используют только в изображени- ях-строки.
Слова и выделенные слова
Представление слов и выделенных слов определяют „режим выделения”, Существует три режима выделения: выделение точкой, выделение прописными буквами, резервирование слов.
Новый режим вводится прагматом, содержащим один из элементов-прагмата ТЧК (POINT), BP (UPPER), РЕЗ. (RES) и начинает действовать сразу же после замыкающего символа-прагмат. Режим не действует на „оформление” представления (так, в режимах ВР и РЕЗ „ПРАГМ” соответствует „ПРАГМ”). Приводимые ниже правила требуют наличия разделителя в некоторой позиции. В качестве разделителей можно использовать особенности типографского набора. Слова различаются только тогда, когда различны конкатенации их подслов, например, „конец файла” может быть записан также как „коне цфайла”.
В режиме выделения точкой (ТЧК) выделенные слова представляют следующим образом:
выделенные слова начинаются с точки ( . ), за которой следуют слоги, содержащие по порядку абстрактные буквы и цифры, соответствующие выделенным буквам и цифрам слова;
слоги должны разделяться литерами подчеркивания, но не особенностями типографского набора;
за выделенным словом должен следовать разделитель.
В режиме выделения точкой слова представляют следующим образом:
слово составляется из последовательности одного или более слогов, разделенных нулем или более особенностей типографского набора;
слог составляется из соответствующих, расположенных по порядку, абстрактных букв и цифр и может завершаться литерой подчеркивания;
если слог не завершается литерой подчеркивания, то после него должен следовать разделитель.
В режиме выделения прописными буквами (ВР) слова и выделенные слова представляют как в режиме ТЧК, но только с использованием дополнительных правил:
в выделенных словах не должно быть смешения прописных и строчных букв: точка может быть опущена перед выделенным словом из прописных букв, если ему предшествует разделитель, отличный от точки, строчная буква или цифра, не являющаяся „прописной цифрой”. „Прописная цифра” - это цифра, которой предшествует прописная буква или прописная цифра;