ГОСТ Стандарт

ГОСТ 21551-76

Язык программирования АЛГАМС

2 680 переглядів

Завантажити документ

Формат .docx · доступно зареєстрованим користувачам

Увійти та завантажити

Текст документа

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

СОЮЗА ССР

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

АЛ ГАМС

ГОСТ 21551-76

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

ГОСУДАРСТВЕННЫЙ КОМИТЕТ СССР ПО СТАНДАРТАМ

Москва

УДК 681.3.065.4:006.354

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

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

АЛГАМС

Programming languages ALGAMS
Постановлением Государственного комитета стандартов Совета Министров СССР от 6 февраля 1976 г. № 353 срок действия установлен
с 01.07.1977 г.
до 01.07,1982 г.
Настоящий стандарт устанавливает описание языка програм­мирования АЛГАМС*, предназначенного для автоматизации про­граммирования при решении научных и инженерно-технических за­дач, а также для обмена алгоритмами.
Установленное настоящим стандартом описание языка АЛГАМС должно применяться при создании алгоритмов на языке АЛГАМС и трансляторов с АЛГАМСа.
В алгоритмах на АЛГАМСе должны использоваться только те языковые средства, которые установлены настоящим стандартом.
Транслятор с АЛГАМСа должен обеспечивать трансляцию лю­бого алгоритма, разработанного в соответствии с настоящим стан­дартом.
Указатель определенных в стандарте понятий и синтаксических единиц приведен в справочном приложении 1.

1. СТРУКТУРА ЯЗЫКА

Назначением алгоритмического языка является списание вы­числительных процессов. Описания правил вычислений основыва­ются на хорошо известном понятии арифметического выражения, содержащего в качестве составных частей числа, переменные и функции. Из таких выражений путем применения правил арифме-
* История создания языка АЛГАМС и его отличия от языка АЛГОЛ-60 приведены и справочных приложениях 4 и 5.
Издание официальное Перепечатка воспрещена
Переиздание. Феврали 1979 г.

©Издательство стандартов, 1979
тической композиции образуются самостоятельные единицы языка — явные формулы, называемые операторами присваивания.
Для того, чтобы указать ход вычислительных процессов, добав­ляются некоторые неарифметические и условные операторы, кото­рые могут, например, описывать альтернативы или циклические повторения вычислительных операторов. Ввиду того, что для функ­ционирования этих операторов возникает необходимость их взаи­мосвязи, операторы могут снабжаться метками. Чтобы образовать составной оператор, последовательность операторов можно заклю­чить в операторные скобки begin1 и end.
Операторы дополняются описаниями, которые сами по себе не являются предписаниями о вычислениях, но информируют транс­лятор о существовании и некоторых свойствах объектов, фигури­рующих в операторах. Этими свойствами могут быть, например, класс чисел, используемых в качестве значений переменной, раз­мерность массива чисел или даже совокупность правил, определя­ющих некоторую функцию. Последовательность описаний и следу­ющая за ней последовательность операторов, заключенные между begin и end, составляют блок. Каждое описание вводится в бло­ки таким путем и действительно только для этого блока.
Программа является блоком или составным оператором, кото­рый не содержится внутри другого оператора и который не ис­пользует других операторов, не содержащихся в нем.
Ниже будут приведены синтаксис и семантика языка2.
1.1. Формализм для синтаксического описания Синтаксис описывается с помощью металингвистических фор­мул. Их интерпретацию лучше всего можно объяснить на примере:
<ab>:( I [ | <ab>( j <ab><d>
Последовательности знаков, заключенные в скобки <>, пред­ставляют собой металингвистические переменные, значениями ко­торых являются последовательности символов. Знаки ::= и | (по­следний со значением «или») —это металингвистические связки. Любой знак в формуле, который не является переменной или связ­кой, обозначает самого себя (или класс знаков, ему подобных). Соединение знаков и (или) переменных в формуле означает сое­динение обозначаемых последовательностей. Таким образом, фор­мула, приведенная выше, задает рекурсивное правило для обра­зования значений переменной <ab>. Она указывает, что <ab> может иметь значение либо (, либо [, или же, если дано некоторое допустимое значение <ab>, то еще одно значение можно полу­чить, поставив за <ab> символ (, или некоторое значение пере­менной <d>. Если значениями <d> являются десятичные циф­ры, то некоторые из значений <ab> суть:
[ ( ( ( Н з 7 (
( 1 2 3 4 5 (
Чтобы облегчить изучение, символы, используемые для разли­чения металингвистических переменных (то есть последовательно­стей знаков, стоящих внутри скобок <>, подобно ab, в приведен­ном выше примере), выбраны в виде слов, приблизительно описы­вающих природу соответствующей переменной. Там, где слова, вве­денные таким способом, используются где-либо в тексте, они все­гда, если не оговорено противное, относятся к соответствующему синтаксическому определению. Кроме того, некоторые формулы приведены по нескольку раз.
Определение:
<пусто>::=
(то есть строка, не содержащая символов).

2. ОСНОВНЫЕ СИМВОЛЫ, ИДЕНТИФИКАТОРЫ, ЧИСЛА И СТРОКИ.

ОСНОВНЫЕ ПОНЯТИЯ

Язык строится из следующих основных символов:
Сосновной символ>::= <буква> | <цифра> | <логическое значение> <ограничитель>
2.1. Буквы
<буква>: : =
А І В I С I D I Е I F I G 1111! I J I К I L I М I N І О I Р I Q | Р | 8 | Т |U| V[ W|X|Y|Z Буквы не имеют индивидуального смысла. Они используются для образования идентификаторов и строк (см. пп. 2.4 и 2.6).
2.2. Цифр ы. Л о г и ч с с к и е з н а ч е и и я
2.2.1. Цифры
<цифра > : : = 01 1 | 21314 15 | (’> | 7 | 8 | 9
Цифры используются для образования чисел, идентификаторов и строк.
2.2.2. Логические значения
<логическое значение> : : = true | false
Логические значения имеют фиксированный очевидный смысл3.

2.3. Ограничители
<ограничитель> :: = <знак операцииХ | <разделитель> |
<скобка> І <описатель> і <спецификаторХ
<знак операциях :: = <знак арифметической операции> |
<знак операции отношениях/ <зпак логической операции>|
<знак операции следования>
<знак арифметической операцииХ:: = + | — 1X1/ Г
<знак операции отношениях :: = < | < | = | > | х 7=
<знак логической операцииХ: : = I I V I A I П
<знак операции следованиях :: = go to [if [then [else [for [do
<разделительХ:: = , |.|I(I|: |; j: =| — [step [until [while | comment СскобкаХ:: = (|) |[ |]| ’ | begin )end
<описатель>:: = Booleanjinteger [real [array [switch | procedure
•< спецификатор X -: = string | label | value
Ограничители имеют фиксированный смысл, который в боль­шинстве случаев очевиден4, а в остальных случаях будет указан ниже. Пробел или переход на новую строку, в языке не принима­ются во внимание. Однако для облегчения чтения их можно сво­бодно использовать.
Для возможности включения текста между символами програм­мы имеют место следующие правила для примечаний:
Последовательность основных сим.Х'.ъ'в:
: comment <любая последовательность, не содержащая символа “;“ X ;
begin comment <любая последовательно'-г;>, пс содержащая символа “;“ X ;
end С.тюбая последовательность, не содержащая ;.щ сим­вола ,,end“, , пи символа “ ; “, пи символа ,,eise">
Эквивалентность здесь означает, что любую из трех конструк­ций, указанных в левой колонке, если она встречается вне некото­рой строки, можно заменять соответствующим ей символом, ука­занным в правой колонке. Эта замена нс оказывает никакого вли­яния па работу программы. При этом считается, что конструкцию примечания, встретившуюся раньше при чтении текста слева на­право. следует заменять прежде, нежели более поздние конструк­ции, содержащиеся в этой последовательности.
2.4. Идентификаторы
2.4.1. Синтаксис
<идентификатор> :: = Сбуква>| <идентнфикатор> <буква> |
<идентификатор> Сцифра>)
2.4.2. Примеры
Q

SOUP

V17A

A34KTMNS

MARILYN

2.4.3. Семантика
Для описания языка удобно под термином идентификатор по­нимать не только определенную в п. 2.4.1 и дальнейшим синтакси­сом синтаксическую единицу, но и специальные последовательно­сти букв и цифр, начинающиеся с букв ЕХ или PART и изобража­ющие синтаксические единицы Свнешний идентификатор > (пп. 3.1.1 и 5.2.6) и <идентификатор части> (пн. 4.1.1 и 4.1.3).
Идентификаторы не имеют неизменно присущего им смысла, а служат для обозначения простых переменных, массивов, меток, идентификаторов части, процедур и формальных параметров. Их можно выбирать произвольно (рекомендуется при этом учитывать разд. 6, а также указанные в пп. 4.1.3 и 5.2.G ограничения на упо­требление идентификаторов с первыми буквами ЕХ или PART).
Один и тот же идентификатор нельзя использовать для обозна­чения двух различных объектов, за исключением случая, когда эти объекты имеют несовместные области действия (п. 2.7 и разд. 5).
2.5. Ч и с л а
2.5.1. Синтаксис
Сцелое без знака> :: = <цифра>| Сцелое без знака> <ци- фра>
Сцелое> = Сцелое без знака>| + Сцелое без знака>| — <целое без знака>
Справнльная дробь>::= . <целое без знака>
<порядок> :: = ю <целое>
Сдесятичное число>:: = <целое без знака> ) Справнльная дробь> I
<целое без знака> Справнльная дробь>
Счисло без знака >:: = Сдесятичное число> | <порядок>[
Сдесятичное чис.ло> <порядок>
<число>: : = Счисло без знака> f + Счисло без знака>|
— Счисло без знака>
2.5.2. Примеры
О -200.084 — .083,0—02
177 +07.43ю8 —ю7
.5384 9.34(о + Ю ]0—4
+ 0.7300 210—4 +io + 5
2.5.3. Семантика
Десятичные числа имеют свой обычный смысл. Порядок — это масштабный множитель, выраженный как целая степень десяти.
2.5.4. Типы
Целые имеют тип integer. Остальные числа имеют тип real (п. 5.1).
2.6. Строки
2.6.1. Синтаксис
<строка> :: =‘<любая последовательность символов, не со­держащая ‘ или ’> ’ I
2.6.2. Пример

THIS IS . . А STRING’

2.6.3. Семантика
Для того, чтобы в языке можно было иметь дело с произволь­ными последовательностями основных символов, введены кавычки для строк: ‘и’. Символ । , обозначает пробел. Вне строк он не
имеет смысла.
Строки используют в качестве фактических параметров проце­дур (см. пп. 3.2 и 4.7).
2.7. Величины, классы и области действия
Различают следующие классы величин: простые переменные, массивы, метки, идентификаторы части, переключатели и процеду­ры.
Область действия величины — совокупность операторов и вы­ражений, внутри которых определена связь этой величины и изо­бражающего ее идентификатора. Для всех величин, кроме стан­дартных процедур и функций, меток и