Совмещение (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