то
иначе лит предл: = с;
если ошибка литеры исправлена (f, предл) то (литера в строке (предл, лок цел, s) I предл I не определено; с)
иначе не определено; с
все;
настроить на чтение (f)
все;
оп! = (лит s, с) лит: строк (s) ! с;
[ ] лит хор цифры = ”0123456789abcdef” ^основание];
= ”+” ;
для к до вегр пр /
цк подрамка прк=пр [к]; подав: = подав из прк;
ввести вставку (f, пв из прк);
до повт из прк
цк лит маркер = марк из прк;
если маркер = ”d” то s плюспр
(подав I ”0” I хор цифры! ”Q”); пн: = истина
инее маркер = ” z” то. s плюспр
(подав Г'О” Ілитс=((пн І I ” ”) + хор цифры) ! ”0”;
(с/= Iпн: = ложь); с)
инее маркер = ”u” V маркер = ” + ” то
если есть знак
то пн: = ложь; s плюспр (”0123456789”! ”0”)
иначе лит с= (”+ - ” + (маркер = ”u” I I „ )) ! ”+” ;
(с= ”+” V с= I есть знак : = истина; s [укзн]:=с)
все
инее маркер = ”v” V маркер = ” — ” то
если есть знак
то пн: =ложь; s плюспр (”0123456789”!”0”)
инее лит с; есть пробел
то с: =’* + - .0123456789”!
(с = ”+” V с = ” - ’* I есть знак: = истина; s [укзн]: = с
1с: /= Іпн: = ложь; есть знак: = истина;
s плюстр с)
иначе с: =”+-.”!
(с = ”+” V с = I есть знак: = истина; s [укзн]: = с
Іесть пробел: = истина)
все
инее маркер = то
s плюспр (подав I ” I ”. ” ! ”. ”)
инее маркер = ”е” то s плюспр
(подав I ”ю” I ”юе” ! ”ю”; ”ю”);
есть знак: =ложь; пн: = истина;
s плюспр укзн: =вегр s
инее маркер = ”i” то
s плюспр (подав I ”1 ” I ”il” ! ”1 ”, ”);
есть знак: = ложь; пн: = истина;
s плюспр ”+”; укзн: =вегр s
инее маркер = ”Ь” то
s плюспр (да + нет) ! нет; нет знака: = истина инее маркер = ”а” то s плюспр
(подав I ” ■ ” I лит с; проверить позицию (f); вывести литеру (f, с);
с);'
нет знака: = истина
инее маркер = ”г”
то пропуск все
кц
кц;
если нет знака то s = s [2:] все конец;
. Двоичный обмен соответствует ГОСТ 27974.
Системное вступление и список задач соответствуют ГОСТ 27974.
С о б с т в е н н ы е вступления и заключения
Собственные вступления
Описания a, b, с, d, е, f, g, h, і, соответствуют ГОСТ 27974.
присит окончание: пуст: стоп;
присит немедленное окончание: пуст: стоп;
присит рекурсия общей ситуации: лог: ложь;
ш) присит конец лог файла: (имя файл f) лог: ложь, конец физ файла: (имя файл f) лог: ложь, конец страницы: (имя файл f) лог: ложь, конец строчки: (имя файл f) лог: ложь, конец формата: (имя файл f) лог: ложь, ошибка значения: (имя файл f) лог: ложь, ошибка литеры: (имя файл f, имя лит с) лог; ложь;
Собственные заключения определены в ГОСТ 27974.
Сегменты
Синтаксис
вставляемый сегмент на АЛГОЛЕ 68
в СРЕДЕ с новыми 7МОДУЛЯМИ выдающий ЗНАЧЕНИЕ (А7а}: знак сегмент {94 d} ,индикатор заготовки [56 dj, знак определяется как £94 d], фактическая заготовка в СРЕДЕ с новыми 7МОДУЛЯМИ выдающая ЗНАЧЕНИЕ [56с] .
Для каждого.дополнительного {;5.6.1.А } терминального, метапорождения „ЯЗЫКА” следует добавить дополнительные гиперправила для гиперпонятий формы „вставляемый сегмент на ЯЗЫКЕ в СРЕДЕ с новыми 7МОДУЛЯМИ выдающий ЗНАЧЕНИЕ”. Должен быть определен механизм £с помощью стандарта, определяющего этот другой язык ] , посредством которого все такие вст^вляемые-сегменты-на ЯЗЫКЕ могут быть преобразованы во вставляемые-сегменты-на АЛГОЛЕ 68 £ с тем же самым смыслом }.
сегмент определяющий модули через МОДУЛИ
в СРЕДЕ с новыми 7МОДУЛЯМИ1 МОДУЛЯМИ [А7а }:
знак сегмент [94d],
индикатор заготовки {56 d] ,
знак определяется как[94d} , описание модулей через МОДУЛИ
в СРЕДЕ с новыми 7МОДУЛЯМИ1 МОДУЛЯМИ £49a J, если МОДУЛИ не охвачены СРЕДОЙ [е] .
сегмент для вступления задающий МОДУЛИ
в новом СЛОЕ1 с новыми [ОПИСАНИЯМИ 7МОДУЛЯМИ1 [МОДУЛЯМИ { и } СТОПОМ {А7а] :
описание модулей через [МОДУЛИ в новом СЛОЕ1
с новыми [ОПИСАНИЯМИ 7МОДУЛЯМИ1 [МОДУЛЯМИ
[и] СТОПОМ [49а} ,
если [МОДУЛИ не охвачены новым СЛОЕМ 1 { е } .
ЕСЛИ 7МОДУЛИ МОДУЛЬ не охвачены СРЕДОЙ [c.d] :
ЕСЛИ 7МОДУЛИ не охвачены СРЕДОЙ [e,f} и МОДУЛЬ не зависит от 7ПАР [71а, Ь, с } , если в 7ПАРАХ собраны свойства из СРЕДЫ [g, h} .
ЕСЛИ ПУСТО не охвачено СРЕДОЙ [е } : ЕСЛИ истина.
ЕСЛИ в 7ПАРАХ1 7ПАРАХ2 собраны свойства
из СРЕДЫ с новыми 7ПАРАМИ2 [е, g} :
ЕСЛИ в 7ПАРАХ1 собраны свойства из СРЕДЫ fg, h] .
ЕСЛИ в ПУСТО собраны свойства из нового ПУСТО [е, g} : ЕСЛИ истина.
* сегмент в СРЕДЕ с новыми 7ПАРАМИ : вставляемый сегмент на ЯЗЫКЕ
в СРЕДЕ с новыми 7ПАРАМИ выдающий ЗНАЧЕНИЕ [a, b] ;
сегмент определяющий модули через [МОДУЛИ
в СРЕДЕ с новыми 7ПАРАМИ £ с } ;
собственно-программа в СРЕДЕ с новыми 7ПАРАМИ [Al g} ;
сегмент для вступления задающий [МОДУЛИ
в СРЕДЕ с новыми 7ПАРАМИ [d } .
j)*символ буква: символ БУКВА [94а] .
к) * символ цифра: символ ЦИФРА £94bJ .
£ Примеры:
а) сегмент ”а b с” = подкл а, Ь(х: = 1; у: = 2; печ(х + у))
сегмент ”а b с” = модуль а =мд откр.вещ х дм
модуль b =мд откр вещ g дм
Эти три примера могли бы представить собой согласованный набор сегментов (10.6.2.а), будучи объединены с собственно-программой
начало среда ”а b с” конец ]
[ В вышеприведенном правиле а 'МОДУЛИ', заложенные в '7МОДУЛИ', определяются всеми сегментами-определяющими-модули, которые должны вставляться вместе с данным вставляемым-сегментом. В правилах с и d требуется только, чтобы в '7МОДУЛИ1' были заложены 'МОДУЛИ' для всех тех модулей, которые на самом деле доступны изнутри данного сегмента. Нижеследующая семантика определена только в тех случаях, когда для набора совместно вставляемых сегментов, все 'МОДУЛИ', заложенные в различные '7МОДУЛИ1', заложены и в '7МОДУЛИ']
10.6 2. Семантика
£ Сегменты — это компоненты для раздельной трансляции. Необходимо определить смысл набора сегментов. Это осуществляется преобразованием набора в эквивалентную собственно-программу. Необходимо, конечно, чтобы сегменты в наборе были согласованы друг с другом. Ровно один сегмент й наборе должен быть собственно-программой.]
а) Смысл собственно-программы Р в контексте набора Т других присоединяемых сегментов f, не являющихся собственно-программами,] определяется следующим образом:
Личное вступление-с-?МОДУЛЯМИ UP из задачи-пользователя UT, наследником которой является Р { 1.1.1.е и 10.1.1 .f J , должно быть составлено следующим образом:
Для каждого сегмента-для-вступления-в-новом-СЛОЕ1-с-новыми-!ОПИ- САНИЯМИ-7МОДУЛЯМИ1-£ и»} СТОПОМ М, если таковое имеется, в Т,
UP содержит составляющее описание-моцулей-в-новом-СЛОЕ1-с новы- ми-!ОПИСАНИЯМИ-?МОДУЛЯМИ- { и=] СТОПОМ, подобное описа- нию-модулей из М; £ в '7МОДУЛИ' должны быть заложены все 'МОДУЛИ', заложенные во все такие и только такие '7МОДУЛИ1'. которые синтаксически корректны по отношению к личному-вступле- нию из UT; }
UP не содержит никаких иных составляющих описаний-ОБЪЕКТОВ. и его единственная составляющая основа состоит из пропуска £5.5.2.1.а] ;
Если Т содержит какие-либо вставляемые-сегменты-на-ЯЗЫКЕ, где 'ЯЗЫК' не есть 'АЛГОЛ68',
то эти сегменты преобразуются { 10.6.1-Ь } во вставляемые-сегменты-на- АЛГОЛЕ68 £ с тем же самым смыслом };
Пока в UT остаются какие-либо формальные-заготовки,
пусть Н есть такая формальная-заготовка-в-СРЕДЕ-вьщающая-
ЗНАЧЕНИЕ, и пусть I есть индикатор-эвлотовки;если I подобен какому-либо такому I, который уже рассматривался, то смысл Р не определяем;
Н замещается {в Ш1} виртуальной-заготовкой-в-СРЕДЕ-выдающей- ЗНАЧЕНИЕ, составляющее последо'вательное-предложение-в-СРЕДЕ S которой составляется следующим образом:
Для. каждого сегмента-определяющего-модуля-в-СРЕДЕ-с-новыми 7МОДУЛЯМИ1 М, если таковой имеется, в Т, индикатор-заготовки которого „соответствует” { b } I,
S содержит составляющее описание-модулей-в-СРЕДЕ-с-новыми- 7МОДУЛЯМИ, подобное описанию-модулей из М;
{в'7МОДУЛИ'должны быть заложены все 'МОДУЛИ', заложенные во все такие и только такие 7МОДУЛИ1', которые синтаксические кор- ректны по отношению к S;}
S не содержит никаких иных составляющих описаний-ОБЪЕКТОВ, и его единственная составляющая основа состоит из составляющего ЗАКРЫТОГО-предложения из { единственного } вставляемого-сег- мента-на-АЛГОЛЕ 68-в-СРЕДЕ-с-новыми-?МОДУЛЯМИ-выдающего- ЗНАЧЕНИЕ из Т, индикатор-заготовки которого соответствует Г.
Если в Т остались какие-либо сегменты, которые не были включены в UT,
то смысл Р не определен ;
иначе f в UT не содержится никаких формальных-заготовок, и поэтому} смысл Р таков, каким он определен в другом месте { l.l.l.ej семантикой стандарта.
Ь) Если { текстуально } первый составляющий элемент-строки из индикатора-заготовки I состоит из некоторого символа-буква, и всякий другой составляющий элемент-строки, если таковой имеется, состоит из некоторого символа-буква или некоторого символа-цифра, то I „соответствует” любому другому индикатору-заготовки, которому он подобен {; иначе его соответствие другим индикаторам-заготовок (подобным ему или нет) здесь не определяется, однако, оно может определяться местными соглашениями реализации, учитывающими особенности местной операционной языковой обстановки.}
[ Стандартная языковая обстановка расширяется включением личного- вступления для каждой собственно-программы, в которую пользователь может вставить свои собственным сегменты-для-вступления. J
ПРИЛОЖЕНИЕ 1
Справочное
ИСТОРИЧЕСКАЯ СПРАВКА
„Пересмотренное сообщение об алгоритмическом языке Алгол 68”, официально принятое в 1974 г. в качестве окончательного определяющего документа для языка
Алгол 68, не подлежало изменениям, но развитие программирования показало необходимость включения в язык дополнительных средств, обеспечивающих:
раздельную трансляцию фрагментов программ;
модульное программирование;
обработку исключительных ситуаций.
Были выдвинуты многочисленные предложения по реализации этих средств и некоторые из них реализованы.
В 1977 г. были опубликованы предложения Ч. Линдси и X. Боома по модулям и раздельной трансляции „А Modules and Separate Compilation Facility for ALGOL 68”.
Предложения были одобрены рабочей группой 2.1 (РГ2.1) Международной федерации по обработке информации (ИФИП) и, во избежание чрезмерного распространения диалектов, рекомендованы для преимущественного использования в реализациях, вводящих подобные средства. Настоящий стандарт включает предложения Ч. Линдси и X. Боома в переводе В.В. Броля.
Предложений по обработке исключительных ситуаций, имеющих такой же статус, как упомянутые выше, в настоящее время не существует. В связи с этим рабочая группа по алгоритмическому языку Алгол 68 (РГ А68) научно-технической комиссии по системам математического обеспечения при ГКВТ АН СССР решила разработать оригинальный вариант этих средств. Механизм обработки исключительных ситуаций был предложен Г.С. Цейтиным. Это предложение обсуждалось на заседаниях РГ А68, было одобрено и вошло в настоящий стандарт. От имени РГ 2.1 ИФИП это предложение рассматривал Ч. Линдси, сделавший ряд полезных замечаний.
ПРИЛОЖЕНИЕ 2 Обязательное
ТРЕБОВАНИЯ К МАШИННОМУ ПРЕДСТАВЛЕНИЮ ПРОГРАММЫ
Определения
Абстрактная литера - это одна из следующих 152 литер: буквы латинского алфавита:
А, В, С, D, Е, F, G, Н, I, J, К, L, М, N, О, Р, Q, R, S, Т, U, V, W, X, Y, Z, a, b, с, d, е, f, g, h, і, j, k, 1, m, n, o, p, q, r, s, t, u, v, w, x, у z.
буквы русского алфавита:
А, Б, В, Г, Д, Е, Ё, Ж, З, И, Й, К, Л, М, Н, О, П, Р, С, Т, У, Ф, X, Ц, Ч, Ш, Щ, Ъ, Ы. Ь, Э, Ю, Я; а, б, в, г, д, е, К ж, з, и, й, к, л, м, н, о, п, р,с, т, у, ф, х, ц, ч, ш, ш, ъ, ы, ь, э,ю, я цифры:
О, 1, 2, 3, 4,5,6, 7, 8, 9
прочие литеры:
пробел ” #,J5 %’() <=’>©[] - I
Представленные программы на Алголе 68 определяют как разделенную на строчки последовательность абстрактных литер.
1.2. К о н к р е т н а я литера - эта некоторая литера, имеющаяся на уст
ройстве ввода-вывода. Каждая такая литера составлена из множества знаков и кодов в соответствии с местными соглашениями.
Разделитель - это особенность типографского набора (подраздел 9 A. d), начало или конец текста программы, или любая абстрактная литера, отличная от буквы, цифры или знака подчеркивания. Слова и выделенные слова ограничиваются разделителями.Две строчки литер соприкасаются, если между ними нет литер или особенностей типографского набора. Если одна из строк литер следу е т за или предшествует другой, то они также соприкасаются.
Вы деленное слово - это:
любое представление, составленное из выделенных букв или цифр в эталонном языке (подраздел 9.4) (т. е. символы-выделенное-СЛОВО и представления, указанные в п. 9.4.1 как выделенные);
символ, представленный выделенным словом;
литеры, записывающие выделенное слово способом, специфицированным в подразделе 3.4. настоящего приложения.
С л о в о - это символ-СЛОВО (подпункт 9.4.2.2.а), например, - „конец файла” - это слово.
Слог - непустая последовательность букв и цифр (слово „конец файла”, использованное так, как в п. 3.4.1 настоящего приложения, состоит из двух слогов).
Представление конструктов алгола 68
Для каждой абстрактной литеры реализация должна предусматривать одну или несколько конкретных литер, отличающихся от конкретных литер для других абстрактных литер.
Если предусмотрено несколько конкретных литер (например, для „1” и „I ” и „ ! ”), то они должны эквивалентно обрабатываться всюду, кроме как в строках и при распечатке программ, где каждая представляет саму себя.