Скалярные типы
Под скалярными типами подразумеваются перечислимые, целые и вещественные типы. Перечислимые и целые типы называются дискретными типами; каждое значение дискретного типа имеет номер позиции — целое значение. Целые и вещественные типы называются числовыми типами. Все скалярные типы упорядочены, т.е. для их значений предопределены все операции отношения.
ограничение-диапазона ::= range диапазон диапазон ::= атрибут-диапазона |простое-выражение .. простое-выражение
Диапазон определяет подмножество значений скалярного типа. Диапазон L. .R определяет значения от L до R включительно, если истинно отношение L < = R. Значения L и R называются соответственно нижней границей и верхней границей диапазона. Значение V удовлетворяет ограничению диапазона, если оно принадлежит диапазону; говорят, что значение V принадлежит диапазону, если одновременно истинны отношения L<=V и V<=R. Пустой диапазон — это диапазон, для которого истинно отношение R < L; пустому диапазону не принадлежит никакое значение. Операции < = и < в вышеприведенных определениях являются предопределенными операциями над скалярными типами.
Если ограничение диапазона используется в указании подтипа либо непосредственно, либо как часть ограничения плавающего или фиксированного типа, тип простых выражений (а также границ атрибута диапазона) должен быть тем же, что и базовый тип в обозначении типа указания подтипа. Ограничение диапазона совместимо с подтипом, если каждая граница диапазона принадлежит подтипу или если ограничение диапазона определяет пустой диапазон; иначе ограничение диапазона не совместимо с подтипом.
Предвыполнение ограничения диапазона состоит из вычисления диапазона. Вычисление диапазона определяет его нижнюю и верхнюю границы. Если границы заданы простыми выражениями, вычисление диапазона вычисляет эти выражения в порядке, который не определен в языке.
Атрибуты
Для любого скалярного типа Т или для любого подтипа Т скалярного типа определены следующие атрибуты:
Т'FIRST | Вырабатывает значение нижней границы Т. Значение этого атрибута имеет тип Т. |
Т'LAST | Вырабатывает значение верхней границы Т. Значение этого атрибута имеет тип Т. |
. Индексирование и правила итерации используют значения дискретных типов.
Ссылки: атрибут 4, атрибут диапазона 2, вещественный тип 6, вычисление 4.5, индекс 3.6, обозначение типа 2, ограничение 3.3, ограничение плавающего типа 7, ограничение фиксированного типа 9, оператор цикла 5.5, операция отношения 4.5, 2, ошибочный 1.6, перечислимый тип 1, простое выражение 4.4, удовлетворяет ограничению 3.3, указание подтипа 2, целый тип 4.
1. ПЕРЕЧИСЛИМЫЕ ТИПЫ
Определение перечислимого типа задает перечислимый тип
определение - перечислимого - типа:: =
(спецификация -литерала-перечисления (, спецификация - литерала - перечисления))
спецификация-литерала-перечисления ::= литерал-перечисления литерал-перечисления ::= идентификатор|символьный-литерал
Идентификаторы и символьные литералы, перечисленные в определении перечислимого типа, должны быть различными. Каждая спецификация литерала перечисления является его описанием; это описание эквивалентно описанию функции без параметров, обозначение которой — литерал перечисления, а тип результата — перечислимый тип. Предвыполнение определения перечислимого типа создает перечислимый тип; это Предвыполнение включает пред-выполнение каждой спецификации литерала перечисления.
Каждый литерал перечисления вырабатывает отличное от других перечислимое значение. Предопределенные операции отношения упорядоченности между перечислимыми значениями следуют порядку, соответствующему номерам позиций; номер позиции первого значения в списке литералов перечисления равен нулю; номер каждого следующего литерала перечисления на единицу больше номера предыдущего литерала в списке.
Если один и тот же идентификатор или символьный литерал задан в нескольких определениях перечислимого типа, соответствующие литералы называются совмещенными. В тексте программы тип совмещенного литерала перечисления должен быть определимым из контекста (см. 8.7).