описание.пакета :: = спецификация.пакета;
спецификация-пакета :: —
package идентификатор is
{основной-элемент.описания}
[private]
{основной_элемент_описания} ]
end [простое_имя_пакега]
тело—Пакета :: =
package body простое _имя_лакете is
[раздел-описаний]
[begin
последовательность-операторов
[exception
обработчик- включения
{обработчик.исключения}] ]
end [простое.имя .пакета] ;
7.4 описание-личного_типа ;: =
type идентификатор [раздел_дискриминантов] is [limited] private;
описание—субконстанты :: = список_идентификаторов : constant обозначение.типа; 8.4
спецификатор .использования :: = use имя. пакета {, имя.пакете}-; 8.5
описание.переименования :; =
идентификатор : обозначение.типа renames кмя-Объекта;
идентификатор : exception renames имя-исключения;
I package идентификатор renames имя.пакета;
і спецификации-подпрограммы renames имя-подпрограммы _или-входа;
описание .задачи :: = спецификация, задачи;
спецификация-задачи :: =
task [type] идентификатор [is
{описание -входа}
{спецификатор.пр ед ставлення}
end [простое-имя-Задачи] ] ;
тело-Задачи :: =
task body простое—имя-Задачи is
[раздел .описаний ]
'begin
последовательность-операторов
[exception
обработчик.исключения
{обработчик-исключения} ]
end [простое_имя_задачи] ;
описание_входа:: =
entry идентификатор [ (дискретный_диапазон) ]
[раздел „формальных-Параметров] ;
оператор_вызова_входа :: = имя-входа [раздел_фактических_параметров] ; оператор_принятия :: =
accept простое_имя_входа [(индекс„входа) ]
[раздел „формальных „параметров] [do последовательность-операторов end [простое—имя „входа] ] ;
инДекс_входа :: = выражение
оператор „задержки :: = delay простое_выражение;
оператор_отбора :: = отбор_с_ожйданием | условный_вызов „входа
I временной_вызов_входа
9.7.1
отбор_с_ожиданием :: =
select
альтернатив а -отбора
{от
альтернатива_отбора}
[else
последовательность—операторов ]
end select;
альтернатива_отбора :: =
[when условие = >]
альтернатива_отбора_с_ожиданием
альтернатива_отбора_с „ожиданием :: = альтернатива_принятия
I альтернатива_задержки | альтернатива„завершения
альтернатива_принятия :: = оператор_принятия [последовательность-операторов] альтернатива_задержки :: = оператор „задержки [последовательность_операторов] альтернатива_завершения :: = terminate;
9.7.2
условный-вызов _входа :: =
select
оператор _вызова_ входа
[последовательность—операторов]
else
последовательность_операторов
end select;
9.7.3
временной-вызов-входа :: =
select
оператор _вызова_входа
[последовательность_операторов] or
альтернатива„задержки
end select;
9.10
оператор-прекращения :: = abort имя „задачи {, имя-задачи У;
10.1
компиляция :: = {компилируемый—модуль}
компилируемый-модуль :: = спецификатор-контекста библиотечный_модуль
I спецификатор .контекста вторичный_модуль
библиотечный-модуль :: = описание-подпрограммы
I описание.пакета | описание „настройки
I конкретизация-Настройки | тело.подпрограммы
вторичный_модуль :: = тело_библиотечного_модуля | субмодуль тело-библиотечного_модуля :: = тело-подпрограммы | тело_пакета 10.1.1
спецификатор-контекста :: =•
£ спецификатор-совместности < спецификатор-использования} }• спецификатор-совместности :: =
with простое—имя—модуля {, простое—имя—модуля}-;
10.2
след_тела :: = спецификация-Подпрограммы is separate;
I package body простое_имя_/шкега is separate;
I tack body простое_имя_зедвчи is separate;
субмодуль :: = separate (имя-родительского^модуля) соответствующее_тело
описание-исключения = список_идентификаторов : exception;
обработчик-исключения :: =
when выбор_исключения { I выбор-исключения }= > последовательность-операторов
выбор-исключения :: = имя-исключения | others
оператор-возбуждения = raise [имя-исключения ];
12.1
описание-настройки :: = спецификация_настройки;
спецификация-Настройки :: =
раздел -формальных -Параметров -настройки спецификация.подпрограммы
I раздел-формальных-параметров-Настройки спецификация-Пакета раздел—формальных— параметров—настройки:: =
generic -{описание-гіараметра_настройки J
описание_параметра_настройки :: —
список—идентификаторов:
[in [out] ] обозначение_типа [: = выражение] ;
I type идентификатор is определение_настраиваемого_типа;
I описание-Личного—типа
I with спецификации-подпрограммы [is имя] ;
I with спецификации-подпрограммы [is < >] ; определение_настраиваемого_типа :: =
(< >) I range < > I digits < > I delta < >
І определение_индексируемого_типа I определение ссылочного_типа 12.3
конкретизация-настройки :: =
package идентификатор is new имя-настраиваемого -пакета [раздел_фактических_параметров_настройки] ‘
I procedure идентификатор is new имя-настраиваемой-процедуры [раздел-фактических-параметров-настройки] ;
I function обозначение is new имя-настраиваемой-функции [раздел-фактических-параметров-настройки] ;
раздел-фактических-параметров-настройки :: =
(сопоставление_параметров -настройки сопоставление_параметров_настройки })
сопоставление-параметров-Настройки :: =
[формальный-параметр-настройки = > ] фактический-параметр_настройки формальный-параметр .настройки :: =
простое-имя-ядраметрд | знак_операции
фактический-параметр-Настройки :: = выражение
І имя_переменной I имя -подпрограммы
I имя „входа ( обозначение_типа
13.1
спецификатор_представления :: =
спецификатор _представления_типа | спецификатор „адреса
спецификатор_представления_типа :: = спецификатор_длины
I спецификатор_представления_перечисления
I спецификатор_представления_записи
13.2
спецификатор_длины :: = for атрибут use простое „выражение;
13.3
спецификатор_представления_перечисления :: = for простое_имя„типа use агрегат;
13.4
спецификатор_представления_записи :: =
for простое „имя _ типа use
record [спецификатор„выравнивания]
{спецификатор „компонента }
end record;
спецификатор.выравнивания:: =
at mod статическое_простое_выражение;
спецификатор „компонента :: =
шля-компонента at статическое „простое„выражение
range статический „диапазон;
13.5
спецификатор „адреса :: =
for простое_имя use at простое „выражение;
13.8
оператор_кода :: = обозначение „типа' агрегат_записи;ИНФОРМАЦИОННЫЕ ДАННЫЕ
ИСПОЛНИТЕЛИ
АА. Красилов, д-р. техн, наук, проф.; BJM. Курочкин, канд. техн, наук (руководители темы); Ю.Н. Голубев, канд. техн, наук; В.И. Баранов, канд. техн, наук; ВЛ. Лейтес, канд, техн наук; ВА. Хитров; НБ. Богородская; ВЛ. Чепкасов; |ЕЛ. Фадеева|; А.П. Попов; В.В. Лукашев, канд. техн, наук; Н.Л. Жданова;
В.Г. Коневских; ЛА. Андрианова; Т.С. Прокофьева; ОБ. Косы- рева; Е.Е. Полякова; ЮЛ. Пузей; ЕБ. Фадеева; А.Ф. Яблокова; ЕА. Обертынская; И.Ю. Гребенкина; О.Г. Кузьмина; Н.Г. Соболев; Н.М. Блохин; НК.Зубанова
УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Постановлением Государственного комитета СССР по стандартам от 22.09.88 № 3217
ВВЕДЕН ВПЕРВЫЕ
Стандарт соответствует международному стандарту ИСО 8652-87
5. ССЫЛОЧНЫЕ НОРМАТИВНО-ТЕХНИЧЕСКИЕ ДОКУМЕНТЫ
Обозначение НТД, на который дана ссылка |
Номер раздела, приложения |
2.1, приложение 3 |
СОДЕРЖАНИЕ
Общие положения 1
Область действия стандарта г 1
Содержание стандарта 1
Согласованность реализации со стандартом 2
Структура стандарта 3
Цели и источники разработки 3
Обзор свойств языка 4
Метод описания и синтаксические обозначения 8
Классификация ошибок 9
Лексика 10
Набор символов 10
Лексемы, разделители и ограничители 11
Идентификаторы 13
Числовые литералы . . 13
Десятичные литералы 13
Литералы с основанием 13
Символьные литералы 14
Строковые литералы 14
Комментарии 15
Прагмы 15
Зарезервированные слова 16
Допустимые замены символов 17
Описания и типы 18
Описания 18
Объекты и именованные числа 19
Описания объектов 21
Описание чисел 22
Типыи подтипы 23
Описания типов 24
Описания подтипов 25
Классификация операций 26
Производные типы 27
Скалярные типы 29
Перечислимые типы 30
Символьные типы 31
Логические типы 31
Целыетипы 31
Операции над дискретными типами 33
Вещественные типы 35
Плавающие типы 36
Операции над плавающими типами 38
Фиксированные типы 40
Операции над фиксированными типами 42
Индексируемые типы 44
Ограничения индекса и дискретные диапазоны 46
Операции над индексируемыми типами 47
Строковый тип 49
Именуемые типы 49
Дискриминанты 51
Ограничения дискриминантов 52
Разделы вариантов 54
Операции над именуемыми типами 55
Ссылочные типы 56
Неполные описания типов 57
Операции над ссылочными типами 58
Разделы описаний 59
Имена и выражения 60
Имена 60
Индексируемые компоненты 61
Отрезки 61
Именуемые компоненты 62
Атрибуты 64
Литералы 65
Агрегаты 65
Агрегаты записей 66
Агрегаты массивов 67
Выражения 69
Операции и вычисление выражения 70
Логические операции и формы управления промежуточной проверкой 71
Операции отношения и проверки принадлежности 73
Бинарные аддитивные операции 75
Унарные аддитивные операции 76
Мультипликативные операции 76
Операции высшего приоритета 78
Точность операций с вещественными операндами 79
Преобразование типа 81
Квалифицированные выражения . . 83
Генераторы 84
Статические выражения и статические подтипы 85
Универсальные выражения 86
Операторы 87
Простые и составные операторы. Последовательности операторов .... 88
Операторы присваивания 89
5 2.1. Присваивания массивов 90
Условные операторы 90
Операторы выбора 91
Операторы цикла 92
Операторы блока 94
Операторы выхода 95
Операторы возврата 95
Операторы перехода 96
Подпрограммы 97
Описание подпрограммы 97
Виды формальных параметров 98
Тела подпрограмм 100
Правила согласования 101
Подстановка подпрограмм 102
Вызовы подпрограмм 102
Сопоставления параметров 103
Опущенные параметры ЮЗ
Функции 105
Профиль типов параметров и результатов. Совмещение подпрограмм 105
Совмещение операций 106
Пакеты 107
Структура пакета 107
Спецификации и описания пакетов 108
Тела пакетов 109
Описания личных типов и субконстант ПО
Личные типы 111
Операции над личным типом 112
Субконстанты 114
Лимитируемые типы 114
Пример пакета работы с таблицами 116
Пример пакета обработки текстов 117
Правила видимости 119
Зона описания 119
Области действия описаний 120
Видимость 121
Спецификаторы использования 124
Описание переименования 126
Стандартный пакет 128
Контекст разрешения совмещения 129
Задачи 130
Спецификации задач и тела задач 131
Заданные типы и задачные объекты 133
Выполнение и активизация задачи 133
Зависимость и завершение задач 135
Входы, вызовы входов и операторы принятия 137
Операторы задержки, длительность и время 139
Операторы отбора 141
Отбор с ожиданием 141
Условные вызовы входов 143
Временные вызовы входов 144
Приоритеты 145
Атрибуты задач и входов 146
Операторы прекращения 146
Разделяемые переменные 147
Пример использования задачи 148
Структура программы и результат компиляции 149
Компилируемые модули. Библиотечные модули 149
Спецификаторы контекста. Спецификаторы совместности 151
Примеры компилируемых модулей 152
Субмодули компилируемых модулей 154
Примеры субмодулей 155
Порядок компиляции 157
Программная библиотека 159
Предвыполнение библиотечных модулей 159
Оптимизация программы ' 160
Исключения 160
Описания исключений .161
Обработчики исключений 162
Операторы возбуждения 163
Обработка исключения 163
Исключения, возбуждаемые при выполнении операторов 163
Исключения, возбуждаемые при предвыполнения описаний 166Исключения, возбуждаемые при взаимодействии задач 167
Исключения и оптимизация 167
Подавление проверок 169
Настраиваемые модули 171
Описание настройки 171
Формальные объекты настройки 173
Формальные типы настройки 174
Формальные подпрограммы настройки 175
Настраиваемые тела 176
Конкретизация настройки 177
Правила сопоставления для формальных объектов .х . ... 180
Правила сопоставления для формальных личных типов 180