описание.пакета :: = спецификация.пакета;

спецификация-пакета :: —

package идентификатор is

{основной-элемент.описания}

[private]

{основной_элемент_описания} ]

end [простое_имя_пакега]

тело—Пакета :: =

package body простое _имя_лакете is

[раздел-описаний]

[begin

последовательность-операторов

[exception

обработчик- включения

{обработчик.исключения}] ]

end [простое.имя .пакета] ;

7.4 описание-личного_типа ;: =

type идентификатор [раздел_дискриминантов] is [limited] private;

описание—субконстанты :: = список_идентификаторов : constant обозначение.типа; 8.4

спецификатор .использования :: = use имя. пакета {, имя.пакете}-; 8.5

описание.переименования :; =

идентификатор : обозначение.типа renames кмя-Объекта;

  1. идентификатор : exception renames имя-исключения;

I package идентификатор renames имя.пакета;

і спецификации-подпрограммы renames имя-подпрограммы _или-входа;

    описание .задачи :: = спецификация, задачи;

    спецификация-задачи :: =

    task [type] идентификатор [is

    {описание -входа}

    {спецификатор.пр ед ставлення}

    end [простое-имя-Задачи] ] ;

    тело-Задачи :: =

    task body простое—имя-Задачи is

    [раздел .описаний ]

    'begin

    последовательность-операторов

    [exception

    обработчик.исключения

    {обработчик-исключения} ]

    end [простое_имя_задачи] ;

    1. описание_входа:: =

    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

              оператор_кода :: = обозначение „типа' агрегат_записи;ИНФОРМАЦИОННЫЕ ДАННЫЕ

              1. ИСПОЛНИТЕЛИ

              АА. Красилов, д-р. техн, наук, проф.; BJM. Курочкин, канд. техн, наук (руководители темы); Ю.Н. Голубев, канд. техн, наук; В.И. Баранов, канд. техн, наук; ВЛ. Лейтес, канд, техн наук; ВА. Хитров; НБ. Богородская; ВЛ. Чепкасов; |ЕЛ. Фадеева|; А.П. Попов; В.В. Лукашев, канд. техн, наук; Н.Л. Жданова;

              В.Г. Коневских; ЛА. Андрианова; Т.С. Прокофьева; ОБ. Косы- рева; Е.Е. Полякова; ЮЛ. Пузей; ЕБ. Фадеева; А.Ф. Яблокова; ЕА. Обертынская; И.Ю. Гребенкина; О.Г. Кузьмина; Н.Г. Собо­лев; Н.М. Блохин; НК.Зубанова

              1. УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Постановлением Государственного комитета СССР по стандартам от 22.09.88 № 3217

              2. ВВЕДЕН ВПЕРВЫЕ

              3. Стандарт соответствует международному стандарту ИСО 8652-87

              5. ССЫЛОЧНЫЕ НОРМАТИВНО-ТЕХНИЧЕСКИЕ ДОКУМЕНТЫ

              Обозначение НТД, на который дана ссылка

              Номер раздела, приложения

              ГОСТ 27465-87

              2.1, приложение 3

              СОДЕРЖАНИЕ

              1. Общие положения 1

                1. Область действия стандарта г 1

                  1. Содержание стандарта 1

                  2. Согласованность реализации со стандартом 2

                2. Структура стандарта 3

                3. Цели и источники разработки 3

                4. Обзор свойств языка 4

                5. Метод описания и синтаксические обозначения 8

                6. Классификация ошибок 9

              2. Лексика 10

                1. Набор символов 10

                2. Лексемы, разделители и ограничители 11

                3. Идентификаторы 13

                4. Числовые литералы . . 13

                  1. Десятичные литералы 13

                  2. Литералы с основанием 13

                5. Символьные литералы 14

                6. Строковые литералы 14

                7. Комментарии 15

                8. Прагмы 15

                9. Зарезервированные слова 16

                10. Допустимые замены символов 17

              3. Описания и типы 18

                1. Описания 18

                2. Объекты и именованные числа 19

                  1. Описания объектов 21

                  2. Описание чисел 22

                3. Типыи подтипы 23

                  1. Описания типов 24

                  2. Описания подтипов 25

                  3. Классификация операций 26

                4. Производные типы 27

                5. Скалярные типы 29

                  1. Перечислимые типы 30

                  2. Символьные типы 31

                  3. Логические типы 31

                  4. Целыетипы 31

                  5. Операции над дискретными типами 33

                  6. Вещественные типы 35

                  7. Плавающие типы 36

                  8. Операции над плавающими типами 38

                  9. Фиксированные типы 40

                  10. Операции над фиксированными типами 42

                6. Индексируемые типы 44

                  1. Ограничения индекса и дискретные диапазоны 46

                  2. Операции над индексируемыми типами 47

                  3. Строковый тип 49

                7. Именуемые типы 49

                  1. Дискриминанты 51

                  2. Ограничения дискриминантов 52

                  3. Разделы вариантов 54

                  4. Операции над именуемыми типами 55

                8. Ссылочные типы 56

                  1. Неполные описания типов 57

                  2. Операции над ссылочными типами 58

                9. Разделы описаний 59

              4. Имена и выражения 60

                1. Имена 60

                  1. Индексируемые компоненты 61

                  2. Отрезки 61

                  3. Именуемые компоненты 62

                  4. Атрибуты 64

                2. Литералы 65

                3. Агрегаты 65

                  1. Агрегаты записей 66

                  2. Агрегаты массивов 67

                4. Выражения 69

                5. Операции и вычисление выражения 70

                  1. Логические операции и формы управления промежуточной провер­кой 71

                  2. Операции отношения и проверки принадлежности 73

                  3. Бинарные аддитивные операции 75

                  4. Унарные аддитивные операции 76

                  5. Мультипликативные операции 76

                  6. Операции высшего приоритета 78

                  7. Точность операций с вещественными операндами 79

                6. Преобразование типа 81

                7. Квалифицированные выражения . . 83

                8. Генераторы 84

                9. Статические выражения и статические подтипы 85

                10. Универсальные выражения 86

              5. Операторы 87

                1. Простые и составные операторы. Последовательности операторов .... 88

                2. Операторы присваивания 89

              5 2.1. Присваивания массивов 90

                1. Условные операторы 90

                2. Операторы выбора 91

                3. Операторы цикла 92

                4. Операторы блока 94

                5. Операторы выхода 95

                6. Операторы возврата 95

                7. Операторы перехода 96

              1. Подпрограммы 97

                1. Описание подпрограммы 97

                2. Виды формальных параметров 98

                3. Тела подпрограмм 100

                  1. Правила согласования 101

                  2. Подстановка подпрограмм 102

                4. Вызовы подпрограмм 102

                  1. Сопоставления параметров 103

                  2. Опущенные параметры ЮЗ

                5. Функции 105

                6. Профиль типов параметров и результатов. Совмещение подпрограмм 105

                1. Совмещение операций 106

              1. Пакеты 107

                1. Структура пакета 107

                2. Спецификации и описания пакетов 108

                3. Тела пакетов 109

                4. Описания личных типов и субконстант ПО

                  1. Личные типы 111

                  2. Операции над личным типом 112

                  3. Субконстанты 114

                  4. Лимитируемые типы 114

                5. Пример пакета работы с таблицами 116

                6. Пример пакета обработки текстов 117

              2. Правила видимости 119

                1. Зона описания 119

                2. Области действия описаний 120

                3. Видимость 121

                4. Спецификаторы использования 124

                5. Описание переименования 126

                6. Стандартный пакет 128

                7. Контекст разрешения совмещения 129

              3. Задачи 130

                1. Спецификации задач и тела задач 131

                2. Заданные типы и задачные объекты 133

                3. Выполнение и активизация задачи 133

                4. Зависимость и завершение задач 135

                5. Входы, вызовы входов и операторы принятия 137

                6. Операторы задержки, длительность и время 139

                7. Операторы отбора 141

                  1. Отбор с ожиданием 141

                  2. Условные вызовы входов 143

                  3. Временные вызовы входов 144

                8. Приоритеты 145

                9. Атрибуты задач и входов 146

                10. Операторы прекращения 146

                11. Разделяемые переменные 147

                12. Пример использования задачи 148

              4. Структура программы и результат компиляции 149

                1. Компилируемые модули. Библиотечные модули 149

                  1. Спецификаторы контекста. Спецификаторы совместности 151

                  2. Примеры компилируемых модулей 152

                2. Субмодули компилируемых модулей 154

                  1. Примеры субмодулей 155

                3. Порядок компиляции 157

                4. Программная библиотека 159

                5. Предвыполнение библиотечных модулей 159

                6. Оптимизация программы ' 160

              5. Исключения 160

                1. Описания исключений .161

                2. Обработчики исключений 162

                3. Операторы возбуждения 163

                4. Обработка исключения 163

                  1. Исключения, возбуждаемые при выполнении операторов 163

                5. Исключения, возбуждаемые при предвыполнения описаний 166Исключения, возбуждаемые при взаимодействии задач 167

                6. Исключения и оптимизация 167

                7. Подавление проверок 169

              6. Настраиваемые модули 171

                1. Описание настройки 171

                  1. Формальные объекты настройки 173

                  2. Формальные типы настройки 174

                  3. Формальные подпрограммы настройки 175

                2. Настраиваемые тела 176

                3. Конкретизация настройки 177

                  1. Правила сопоставления для формальных объектов .х . ... 180

                  2. Правила сопоставления для формальных личных типов 180