паспорт ((1,п)) и
п элементов, выбираемых по (і), принимающих значение ложь, если 1 < і < п — т, и (і + т — п) -е истинностное значение из { последовательности} W в противном случае.
Естественное логическое значение последовательности-ДВОИЧНЫХ- цифр S есть кратчайшая последовательность истинностных значений, которая, рассматривается как двоичное число (истина соответствует 1, а ложь — 0), совпадает с естественным целочисленным значением { с } последовательности S.
Естественное целочисленное значение последовательности-двоичных- (-четверичных-, -восьмеричных-, -шестнадцатеричных-) цифр S есть целое число, двоичным (четверичным, восьмеричным, шестнадцатеричным) представлением которого в эталонном языке является S {9.3.bJ, где представления а (а), b (б), с (ц), d (д), е (е) и f (ф) рассматриваются как цифры, имеющие значения 10, И, 12,13,14и 15 соответственно.
8.3. Изображения строки
{ Изображения-строки дают удобный способ спецификации „строк” т.е. массивов вида ’вектор из литерных'.
Пример:
строк сообщение := ’’все в порядке”.}
Синтаксис
изображение вектора из литерных {80а} :
символ кавычка { 94b}, возможная строка {b}, символ кавычка {94b} .
строка {а} : элемент строки {814bJ ,
последовательность элементов строки {814b} .
с)* изображение строки : изображение вектора из литерных { а} .
{ Примеры:
а) ”абв” Ь) абв}
Семантика
Выдача изображения-строки Ь есть массив V, определяемый следующим образом:
пусть п — число элементов-строки, содержащихся в D;
паспорт V есть ((1, п));
для і = 1, ..., п элементом этого V с индексом (і) является естественное значение (8.1.4.2.b} і-го составляющего символа строки этого D.
{ ”а” есть изображение-литерного, а не изображение-строки. Однако во всех сильных позициях, например строк S := ”а”, оно может векторизоваться до некоторого массива (6.6) . Во всех остальных местах, где требуется массив, можно использовать ядро (5.5.1.1.а),
например,
об (лит, строк) cs := строк (”a”).J
9. ЗНАКИ И СИМВОЛЫ
Знаки
{ Знаки (9.1.1.f) — это символы (9.1.1.h), возможно предшествуемые пояснениями (9.2.1.а). Следовательно, пояснения могут встречаться между символами повсюду, где синтаксис порождает непрерывный ряд знаков. Однако в нескольких местах синтаксис порождает исключительно символы, а не знаки, а именно в изображениях (8), текстах-формата (10.3.4.1.1.а) и, конечно, внутри пояснений. Поэтому на таких местах пояснения встречаться не могут. }
Синтаксис
старт ВЫБИРАЮЩЕГО ОФОРМЛЕННЫЙ {34а}.
если (ВЫБИРАЮЩЕЕ) есть (выбирающее по логическому), знак если ОФОРМЛЕННЫЙ { 94f, ;
если (ВЫБИРАЮЩЕЕ) есть (ВАРИАНТНОЕ),
знак выбрать ОФОРМЛЕННЫЙ { 94f, -} .
вход в собственно ВЫБИРАЮЩЕЕ ОФОРМЛЕННЫЙ {34е}:
если (ВЫБИРАЮЩЕЕ) есть (выбирающее по логическому), знак то ОФОРМЛЕННЫЙ { 94f, -} ;
если (ВЫБИРАЮЩЕЕ) есть (ВАРИАНТНОЕ), знак в ОФОРМЛЕННЫЙ f 94f, J.
продолжатель ВЫБИРАЮЩЕГО ОФОРМЛЕННЫЙ { 341}:
если (ВЫБИРАЮЩЕЕ) есть (выбирающее по логическому), знак иначе если ОФОРМЛЕННЫЙ { 94f, -} ;
если (ВЫБИРАЮЩЕЕ) есть (ВАРИАНТНОЕ),
знак либо выбрать ОФОРМЛЕННЫЙ { 94f, -}. , ,
выход собственно ВЫБИРАЮЩЕГО ОФОРМЛЕННЫЙ і 341} :
если (ВЫБИРАЮЩЕЕ) есть (выбирающее по логическому), знак иначе ОФОРМЛЕННЫЙ {94f, -};
если (ВЫБИРАЮЩЕЕ) есть (ВАРИАНТНОЕ),
знак либо ОФОРМЛЕННЫЙ { 94 f, -} .
финиш ВЫБИРАЮЩЕГО ОФОРМЛЕННЫЙ (34а) :
если (ВЫБИРАЮЩЕЕ) есть (выбирающее по логическому),
знак все ОФОРМЛЕННЫЙ [ 94f, -} ;
если (ВЫБИРАЮЩЕЕ) есть (ВАРИАНТНОЕ), знак конец выбора ОФОРМЛЕННЫЙ (94f, ■}. f) знак ПОНЯТИЕ:
возможная последовательность пояснений (92а} , символ ПОНЯТИЕ (94а, b, с, d, е, f, g, hj .
g)* знак : знак ПОНЯТИЕ {fj.
h)* символ : символ ПОНЯТИЕ { 94а, b, с, d, е, f, g, h} .
Примечания и прагматы
(Всякое пояснение есть или примечание, или прагмат. Семантика пояснений не задается, и, следовательно, смысл (2.1.4.1.а) любой программы полностью не зависит от их присутствия. В действительности предполагается, что все примечания должны полностью игнорироваться реализацией, их единственное назначение — помочь человеку, интерпретирующему программу.
С другой стороны, прагматы могут снабжать реализацию некоторым количеством информации, затрагивающей какие-то аспекты смысла данной программы, не определенные настоящим стандартом, например:
действие, которое следует предпринять при переполнении (2.1.4.3.11) или при нарушении правила об областях действия (, как в 5.2.1.2.Ь), например прагм включить проверку переполнения прагм, прагм выключить проверку переполнения прагм, прагм включить проверку областей действия прагм или прагм выключить проверку областей действия прагм;
действие, которое следует предпринять по завершении процесса трансляции, например прагм только транслировать прагм, прагм выдать содержимое памяти прагм или прагм запустить прагм;
что язык, который надо реализовать, является некоторым подъязыком или надъязыком Алгола 68, например прагм нерекурсивная прагм (для текста-процедуры, предполагаемой нерекурсивной);
что трансляция может проверить истинность или попытаться доказать правильность некоторого утверждения, например;
цел а, Ь: чит ((а, Ь)) прагм здесь а > О АЬ > 0 прагм;
цел q : = 0, г : = а;
пока г > b прагм здесь а=ЬХ q + г А 0 < г прагм
цк (q +: = 1, г -: = Ь) кц
прагм здесь а = b X q+rA0<r<b прагм.
Прагматы можно также использовать, чтобы указать реализации, что данный входной текст надо дополнить каким-то другим текстом или отредактировать, например:
надо вызвать некоторую, предварительно оттранслированную порцию данной собственно-ирограммы, например прагм с модулем из библиотеки прагм;
данный входной текст продолжается на некотором другом носителе, например прагм читать из другого файла прагм;
достигнут конец входного текста, например прагм конец прагм. 9.2.1. Синтаксис
А) ПОЯСНЕНИЕ :: прагмат; примечание.
пояснение {80а, 9If, A341b, h,
А348а, b, с, А349а, А34А b] : ПОЯСНЕНИЕ [ b] .
ПОЯСНЕНИЕ £а/:
символ ПОЯСНЕНИЕ ОФОРМЛЕННЫЙ {94h, -} , возможная последовательность элементов
ПОЯСНЕНИЯ ОФОРМЛЕННЫХ {с}, символ ПОЯСНЕНИЕ ОФОРМЛЕННЫЙ [94h, -} .
{ОФОРМЛЕННЫЙ :: краткий; выделенный; стиля НОМЕР.}
элемент ПОЯСНЕНИЯ ОФОРМЛЕННЫЙ {b} : элемент основного набора {814с} ;
добавочный элемент ПОЯСНЕНИЯ ОФОРМЛЕННЫЙ { d} .
Для каждого понятия, обозначаемого 'добавочным элементом ПОЯС- НИЯ ОФОРМЛЕННЫМ' { с, для которого не задано никакого гиперправила в настоящем стандарте }гможно добавить порождающее правило, каждой альтернативой которого будет какой-нибудь символ {1.1.3.1.f}, отличный от любого терминального порождения понятия 'элемент основного набора' {8.1.4.1.с} и такой, что никакое терминальное порождение 'добавочного элемента ПОЯСНЕНИЯ ОФОРМЛЕННОГО' не совпадает с соответствующим 'символом ПОЯСНЕНИЕ ОФОРМЛЕННЫМ' ( 94h, -}.
{Так, например, примечанием может быть прим 0прим, но не
{ Примеры:
а) прагм листинг прагм •
т/і исходная программа будет распечатана $
с) 1 ° ?}
Представления
Всякий конструкт в строгом языке должен быть представлен в каком нибудь „языке представления”, таком, как „эталонный язык”, используемый в настоящем стандарте. Другие языки представления, специально приспособленные к предполагаемым склонностям интерпретирующего их человека, можно назвать языками „публикации”.
{Назначение настоящего эталонного языка — использование его для представления собственно-программы и их наследных конструктов. Однако в разд. 10 он также применяется для определения стандартной языковой обстановки. Язык представления, приспособленный для использования в машине, называется языком реализации. Требования к языку реализации содержатся в приложении 2. }
Всякий „конструкт в языке представления” получается из терми- Нального порождения Т {1.1.3.2.f } соответствующего конструкта в строгом языке {1.1.3.2-е J заменой всех символов в Т их представлениями, которые для данного эталонного языка заданы в подразделе 9.4.
[Так, например, собственно-программа в строгом языке с терминальным порождением
'символ начало стиля f
'символ пропуск'
'символ конец стиля I
создает в эталонном языке собственно-программу начало пропуск конец./
Эталонный язык
Настоящий эталонный язык предусматривает представления для различных символов, включая произвольно большое число символов- ОБОЗНАЧЕНИЕ [, где ОБОЗНАЧЕНИЕ :: СЛОВО; ИНДИКАНТ; ИНФИКС- ПРЕФИКС.}. Представления для некоторых из них заданы ниже £9.4.1 J , и к ним можно добавить подходящие представления для симво- лов-буква - АЛФАВИТА-стиля-НОМЕР и символов-префиксный-стиля-НО- МЕР, а также любые терминальные порождения 'добавочных элементов ПОЯСНЕНИЯ ОФОРМЛЕННЫХ' {9.2.1.(1}и 'добавочных элементов строки' {8.1.4.1.d}. Ни для одного из них не предусмотрено представлений {, но эти представления могут вводиться отдельными реализациями, чтобы весь набор имеющихся у них знаков был доступен для использования в качестве литер, чтобы обеспечить дополнительные или расширенные алфавиты для построения символов-СЛОВО и символов-ИНДИКАНТ и предусмотреть дополнительные символы для использования в качестве обозначений-операций}. Однако нет/, и не должно быть,} никакого представления для сим- вола-буква-алеф и символа-первичный, за исключением представлений стандартного-вступления и других вступлений {10.1.3.Шаг б} . /Относительно прочих символов-ОБОЗНАЧЕНИЕ см. 9.4.2. Имеются также отдельные порождаемые синтаксисом символы, для которых вообще не предусмотрено представлений, например символ-прагмат-краткий. Это не препятствует представлению таких символов в других языках представления}
Если для некоторого символа задано более одного представления, то может выбираться любое из них. Более того, для какой-нибудь реализации эталонного языка достаточно обеспечить только одно из них. Также не обязательно предусматривать представление для каждого конкретного символа-ПРЕФИКСНЫЙ или символа-НЕПРЕФИКСНЫЙ при том условии, что обеспечивается представление по крайней мере для одной версии /10.1.3.Шаг з} каждого обозначения-операции, описанного в стандартном- вступлении.
/Для некоторых разных символов заданы одинаковые или почти одинаковые представления; например, представление „задано для символа- признак-процедуры, символа-двоеточие и символа-вплоть-до, а „ : ” — для символа-метка. Вне пределов примечаний, прагматов или изображений- строки из синтаксиса однозначно вытекает, какой из этих четырех символов представлен вхождением любого знака, подобного одному из этих представлений. В этом случае также можно без какой бы то ни было двусмысленности использовать для любого из них представление „ .. и для реализаций с ограниченным набором знаков это действительно может оказаться необходимым. Можно отметить, что в таких реализациях не возникнет никакой двусмысленности и в случае, когда „(/” и „/)" будут представлять симвоп-открыть-индексы-стиля-П и символ-закрыть-индексы-сти- ля-П соответственно.
Кроме того, некоторые из заданных представлений кажутся составными: так например, представление для символа-присвоить кажется состоящим из „ : ”, представления для символа-признак-процедуры и т.п., и , представления для символа-равно и символа-определяется-как. Тем не менее из синтаксиса следует, что за пределами примечаний, прагма- тов и изображенйй-строки „ : = ” может встречаться только в качестве представления символа-присвоить (, поскольку „ = ” не может употребляться в качестве представления обозначения-унарной-операции). Точно так же и другие заданные составные представления не приводят к двусмысленности.}
Тот факт, что о заданных [9.4.1.а} представлениях символов-бук- ва-АЛФАВИТА обычно говорится как о малых буквах, не означает, что нельзя использовать соответствующие большие буквы.
Пробел, переход на новую строчку или страницу — это „особенности типографского набора”. Эти особенности не принимаются во внимание и, когда они появляются между символами какого-нибудь конструкта в эталонном языке, они не оказывают влияния на смысл этого конструкта. Однако пробелы, содержащиеся в пределах изображения-строки или изображения-литерного, являются одним из представлений символа-пробел { 9.4.1.b} , а не особенностью типографского набора. Когда представление символа в эталонном языке состоит из нескольких знаков [, например, до, : = }, эти знаки образуют один {неделимый }символ, и, если явно не оговорено противное { 9.4.2.2.а, с} , особенности типографского набора не могут разделять их.
. Представления символов а) Символы для букв символ представление
символ буква а [814с, 82к, 942В, A346b} а
символ буква б { 814с, 82к, 942В, A344b} б
символ буква в { 814с, 942В } в
символ буква г { 814с, 942В } г
символ буква д { 814с, 82к, 942В, A342f } д
символ буква е { 812h, 814с, 82k,"942В, А343е{ е
символ буква ж { 814с, 942В} ж
символ буква з {814с, 942В } з
символ буква и ( 814с, 942В, А345Ь_/ и
символ буква й (814с, 942В J й
символ буква к £ 814с, 942В, A341fJ к
символ буква л {814с, 942В, A341fj л
символ буква м { 814c, 942B j м
символ буква и {814с, 942В, A341hJ н
символ буква о {814с, 942В} о
символ буква п {814с, 942В, A341f] п
символ буква р {814с, 942В, А347с } р
символ буква с {814с, 82к, 942В, А348а} с
символ буква т {814с, 942В } т
символ буква у [814с, 942В, А341 f} у