Совмещение (overloading) - свойство понятия иметь несколько альтернативных назначений в данной точке программного текста. Например, совмещенным литералом перечисления может быть идентификатор, который появляется в определениях несколь­ких перечислимых типов. Реальный смысл совмещенного идентификатора определяет­ся по контексту. Совмещенными могут быть также подпрограммы, агрегаты, гене­раторы и строковые литералы.

Составной тип (composite type) - тип, значения которого имеют компоненты. Существуют две разновидности составного типа: индексируемые типы и именуемые типы.

Спецификатор использования (use clause) — средство, обеспечивающее прямую видимость описаний, которые находятся в видимых разделах именованных пакетов.

Спецификатор контекста (context clause) — см. компилируемый модуль.

Спецификатор представления (representation clause) - средство указания компи­лятору отображения типа, объекта или задачи на архитектуру объектной машины, на которой выполняется программа. В некоторых случаях спецификаторы представления полностью определяют отображение, в других случаях они создают критерии выбора отображения.

Спецификатор совместности (with clause) — см. компилируемый модуль.

Ссылочный тип (access type) - набор значений (ссылочные значения), которые могут быть либо пустым значением, либо значением, указывающим объект, создан­ный генератором. Значение указанного объекта может быть прочитано или измене­но через ссылочное значение. Определение ссылочного типа задает тип объектов, на которые указывают значения ссылочного типа. См. также набор.

Субмодуль (subunit) - см. тело.

Тело (body) - конструкция, определяющая процесс выполнения подпрограммы, пакета или задачи. След тела является синтаксической формой тела, которая указы­вает, что его выполнение определяется раздельно компилируемым субмодулем.

Тип (type) - набор значений и набор операций типа, применимых к этим значе­ниям. Определение типа - это языковая конструкция, которой вводится тип. Конк­ретный тип - это ссылочный тип, индексируемый тип, личный тип, именуемый тип, скалярный тип или задачный тип.

Удовлетворять (satisfy) - см. ограничение, подтип.

Указывать (designate) - см. ссылочный тип, задача.

Фактический параметр (actual parameter) - см. параметр.

Фиксированный тип (fixed point type) - см. вещественный тип.

Формальный параметр (formal parameter) — см. параметр.

Функция (function) - см. подпрограмма.

Целый тип (integer type)- дискретный тип, значения которого представляют все целые числа в заданном диапазоне.

Экземпляр (instance) - см. настраиваемый модуль.

ПРИЛОЖЕНИЕ 6 Справочное

СВОДКА СИНТАКСИСА

2.1

графический_символ основной_графический_символ

I строчная_буква | дополнительный_специальный_символ основной_графический_символ :: = прописная_буква | цифра | специальный_сим- вол I символ_пробела основной_символ :: = основной_графический_символ

I символ_управления_форматом 2.3

идентификатор ::= буква {[подчеркивание] буква_или_цифра} буква_или_цифра ::= буква | цифра буква ::= прописная_буква | строчная_буква

2.4

числовой—литерал ::= десятичный-литерал | литерал—с_основанием

2.4.1

десятичный-литерал целое [.целое] [порядок] целое ::= цифра { [подчеркивание] цифра} порядок : := Е [+] целое | Е - целое 2.4.2

литерал_с_основанием::=основание # целое_с_основанием

[. целое _с_основанием ] # [порядок] основание целое целое_с_основанием ::= расширенная_цифра -{[подчеркивание] расширенная_цифра} расширенная „цифра цифра | буква



2.5

символьный ^литерал ;:= ' графический.символ*

2.6

строковый_литерал {графический.символ} ’

2.8

прагма ::= pragma идентификатор [(сопоставление_аргумента

.£ , сопоставление.аргумента} )];

сопоставление .аргумента : [идентификатор .аргумента =>] имя

I [идентификатор .аргумента =>] выражение

3.1

о

I описание.числа

I описание-подтипа

I описание—пакета

I описание_настройки

I конкретизация-настройки

I описание—субконстанты

[constant] указание-подтипа [:= выражение];

сновное_описание описание.объекта I описание .типа I описание .подпрограммы I описание—задачи I описание.исключения І описание.переименования 3.2 описание—объекта ::=

список.идентификаторов :

I список-идентификаторов : [constant] ограниченный—индексируемый_тип [:= выражение] ; описание .числа ::= список- идентификаторов : constant : = универсальное ^статическое список -идентификаторов ::= идентификатор {.идентификатор} 3.3.1

описание—типа ::= полное.описание—типа

I неполное.описание_типа | описание_личного_типа полное-описание .типа ::=

type идентификатор [раздел.дискриминантов]

is определение_типа;

определение.типа ::= определение .перечислимого .типа

I определение_целого.типа | определение— вещественного-Типа

I определение—индексируемого—типа I определение-именуемого .типа

I определение—ссылочного— типа | определение—производного.типа 3.3.2

описание .подтипа ::= subtype идентификатор is указание.подтипа;

указание.подтипа ::= обозначение .типа [ограничение] обозначение_типа ::= имя.гала | имя. подтипа

ограничение ::= ограничение .диапазона

I ограничение .плавающего .типа I ограничение.фиксированного.типа

I ограничение-индекса | ограничение, дискриминанта 3.4

определение .производного .типа ::= new указание.подтипа 3.5

ограничение .диапазона ::= range диапазон

диапазон ::= атрибут .диапазона | простое.выражение . . простое.выражение

определение .перечислимого _типа ::= (спецификация_литерала_перечисления

{, спецификация-литерала.перечисления})

спецификация—литерала.перечисления : := литерал.перечисления

литерал.перечисления ::= идентификатор | символьный-литерал 3.5.4

определение .целого .типа ::= ограничение .диапазона

3.5.6

определение„вещественного „типа ::=

ограничение_плавающего_типа | ограничение_фиксированного_типа 3.5.7 ограничение_плавающего_типа ::=

определение_точности_плавающего_типа [ограничение-диапазона] определение „точности-Плавающего „типа ::=

digits статическое „простое „выражение 3.5.9

ограничение_фиксированного_типа ::=

определение_точности_фиксированного_типа [ограничение„диапазона] определение„точности-фиксированного„типа : :=

delta статическое-простое_выражение

3.6

определение_индексируемого_типа ::=

определение „неограниченного _индексируемого_гипа

I определение „ограниченного „индексируемого „типа определение_неограниченного_индексируемого_типа : :=

array (определение_подтипа_индекса

определение_подтипа_индекса}-) of

указание_подтипа_камлоиентв

определение „ограниченного _индексируемого_типа : :=

array ограничение „индекса of

указание_подтипа_кол<йонектс

определение_подтипа_индекса : :=

обозначение_типа range О ограничение „индекса ::=

(дискретный-Диапазон {, дискретный диапазон}-)

дискретный-диапазон

указание -дискретного„подтипа | диапазон 3.7

определение „именуемого „типа ::=

record

список_компонентов

end record

список„компоненгов ::=

описание-компонента {описание„компонента}*

I |-£Ьписание_компонента} раздел_вариантов | null;

описание-компонента:: =

список—идентификаторов : определение_подтипа_компонента [:= выражение] ; определение_подтипа_компонента ::= указание_подтипа

    раздел „дискриминантов ::=

    спецификация_дискриминанта

    список—идентификаторов : обозначение„типа [:= выражение] 3.7.2

    ограничение -Дискриминанта ::= (сопоставление„дискриминанта

    •£, сопоставление „Дискриминанта} )

    сопоставление .дискриминанта ::= [простое— имя-дискриминанта

    {| простов-ИМЯ-дискриминанта}-=>] выражение

    3.7.3

    раздел „вариантов ::=

    case простое -Имя-дискриминанта is

    вариант {вариант} end case;

    вариант

    when выбор {| выбор} => список_ компонентов выбор простое_выражение

    I дискретный_диапазон | others

    I простое_ямя_компонента 3.8 определение-ссылочного .типа access указание.подтипа 3.8.1 неполное_описание_типа ::= type идентификатор [раздел_дискриминантов]; 3.9 раздел-описаний ::= {основной.элемент.описания} {дополнительный .элемент .описания } основной.элемент.описания ::= основное .описание

    I спецификатор .представления [ спецификатор .использования дополнительный.элемент.описания ::= тело

    I описание.подпрограммы I описание.пакета

    I описание .задачи | описание .настройки

    I спецификатор-использования | конкретизация.настройки тело соответствующее .тело | след.тела соответствующее.тело ::= тело .подпрограммы | тепо.пакета | тело.задачи 4.1 имя ::= простое.имя

    I символьный .литерал | знак.операции

    I индексируемый .компонент I отрезок

    I именуемый .компонент I атрибут простое .имя ::= идентификатор префикс имя | вызов .функции 4.1.1 индексируемый.компонент ::= префикс (выражение {.выражение}) 4.1.2 отрезок префикс (дискретный-диапазон) 4.1.3 именуемый .компонент -.:= префикс, постфикс постфикс ::= простое.имя | символьный—литерал | знак.операции | all 4.1.4 атрибут ::= префикс' обозначение .атрибута обозначение .атрибута простое.имя [(универсальное—статическое—выражение)]

    4.3 агрегат ::= (сопоставление.компонентов {, сопоставление.компонентов}) сопоставление.компонентов ::= [выбор {| выбор} =>] выражение 4.4 выражение ::= отношение {and отношение}

    I отношение {and then отношение} | отношение {or отношение}

    I отношение {or else отношение} I отношение {хог отношение} отношение ::=

    простое.выражеиие [операция.отношения простое.выражеиие]

    I простое .выражение [not] in диапазон

    I простое „выражение [not] іпобозначение.типа простое .выражение

    [унарная.аддитивная.операция] слагаемое {бинарная_аддитивная_операция слагаемое}

    слагаемое ::=

    множитель {мультипликативная.операция множитель}

    множитель первичное [»* первичное] Iabs первичное| not первичное

    первичное числовой.литерал | null | агрегат | строковый_литерал| имя | генератор I вызов.функции І преобразование.типа I кв алифициров энное .выражение | I (выражение)

    4.5

    логическая.операция ::= and | or | хог

    операция.отношения ::= = | / = | <| < = | >| > = бинарная.адцитивная.операция ::= +| — | & унарная_аддитивная_операция :: — +| — мультипликативная.операция : := * | / | mod | rem операция_высшего_приоритета :: = *♦ | abs | not 4.6

    преобразование .типа ::= обозначение „типа (выражение) 4.7

    квалифицированное.выражение : := обозначение.типа' (выражение) | обозначение .типа' агрегат

    4.8

    генератор ::= new указатель-подтипа | new квалифицированное.выражение 5.1

    последовательность—операторов ::= оператор {оператор}

    оператор ::= {метка} простой-оператор | {метка} составной.оператор простой—оператор ::= пустой-оператор

    I оператор .присваивания | оператор .вызова-процедуры

    I оператор .выхода | оператор-возврата

    I оператор-перехода | оператор.вызова.входа

    I оператор .задержки | оператор.прекращения

    I оператор.возбуждения | оператор.кода составной.оператор ::= условный .оператор | оператор .выбора I оператор .цикла | оператор .блока I оператор .принятия | оператор .отбора

    метка ::=<<простое_имя_л«ег№» ; пустой .оператор ::= null;

    5.2

    оператор.присваивания : := юля ^переменной: — выражение; 5.3

    условный.оператор ::= ,

    if условие then

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

    {els if условие then

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

    [else

    последовательность.операторов ] end if;

    условие логическое ^выражение 5.4

    оператор .выбора ::=

    case выражение is

    альтернатива.оператора.выбора {альтернатива.оператора.выбора}

    end case;

    альтернатива.оператора.выбора :: = when выбор { I выбор }= >

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

      оператор „цикла :: =

      [простое_имя_цикла :]

      [схема_итерации] loop

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

      end loop [простое_имя_цикла];

      схема_итерации :: = while условие ] for спецификация_параметра_цикла спецификаиия_параметра_цикла : : =

      идентификатор in [reverse] дискретный_диапазон

        оператор_блока :: —

        [простое_имя_блока :]

        [declare

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

        begin

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

        [exception

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

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

        end [простое-ИМЯ_блокд];

          оператор-выхода = exit [имя „цикла] [when условие] ;

            оператор-возврата :: = return [выражение] ;

              оператор_перехода :: = goto имя_мегки,-

              6.1

              описание—подпрограммы ::= спецификация—подпрограммы;

              спецификации-подпрограммы :: =

              procedure идентификатор [раздел_формальных_параметров]

              I function обозначение [раздел-формальных-параметров ] return обозначение_типа

              обозначение :: = идентификатор [ знак_операции

              знак_операции :: = строковый_литерал раздел-формальных-параметров ;; =

              (спецификация-параметра спецификация-параметра})

              спецификации-параметра :: = список_идентификаторов : вид обозначение_типа [: = выражение]

              вид :: = [in] | in out | out

                тело_подпрограммы :: =

                спецификации-подпрограммы is

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

                begin

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

                [exception

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

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

                end [обозначение];

                  оператор_вызова_процедуры :: —

                  жля_процедуры [раздел-фактических-параметров];

                  вызов_функции = юля-функции [раздел-фактических-Параметров] раздел _фактических„параметров :: = (сопоставление_параметров

                  £ , сопоставление-Параметров'}) сопоставление_параметров =

                  [формальный.параметр = > ] фактический-параметр

                  формальный.параметр :: = простое-Имя-параметра

                  фактический-параметр :: = выражение | имя.переменной

                  I обозначение_типа (кмя_переменной) 7.1