Справочник Ada 2012
3.5.2 Типы символов
Статическая семантика
Тип перечисления называется типом символов, если хотя бы одна из его перечислительных констант является символьной_константой.
Предопределенный тип Character является типом символов, значения которого соответствуют 256 кодам символов Строки 00 (также известной как Latin-1) из ISO/IEC 10646:2011 Базовой многоязычной плоскости (BMP). Каждый из графических символов Строки 00 BMP имеет соответствующую символьной_константой в типе Character. Каждый из неграфических символов Строки 00 имеет соответствующее определяемое языком имя, которое нельзя использовать в качестве перечислительной константы, но которое можно использовать с атрибутами Image, Wide_Image, Wide_Wide_Image, Value, Wide_Value и Wide_Wide_Value; эти имена приведены в определении типа Character в A.1, «Пакет Standard», но выделены курсивом.
Предопределенный тип Wide_Character является типом символов, значения которого соответствуют 65536 кодам символов ISO/IEC 10646:2011 Базовой многоязычной плоскости (BMP). Каждый из графических символов BMP имеет соответствующую символьной_константой в Wide_Character. Первые 256 значений Wide_Character имеют ту же символьной_константой или определяемое языком имя, что и в типе Character. Каждый из графических_символов имеет соответствующую символьной_константой.
Предопределенный тип Wide_Wide_Character является типом символов, значения которого соответствуют 2147483648 кодам символов набора символов ISO/IEC 10646:2011. Каждый из графических_символов имеет соответствующую символьной_константой в Wide_Wide_Character. Первые 65536 значений Wide_Wide_Character имеют ту же символьной_константой или определяемое языком имя, что и в Wide_Character.
Символы, код которых больше 16#FF# и которые не являются графическими_символами, имеют определяемые языком имена, которые образуются путем добавления к строке «Hex_» представления их кода точки в шестнадцатеричном формате как восьми расширенных цифр. Как и другие определяемые языком имена, эти имена могут использоваться только с атрибутами (Wide_)Wide_Image и (Wide_)Wide_Value; они не могут использоваться в качестве перечислительных констант.
Абзацы 6 и 7 были удалены.
ПРИМЕЧАНИЯ
31 Языковая библиотека-пакет Characters.Latin_1 (см. A.3.3) включает объявление констант, обозначающих управляющие символы, символы строчных букв и специальные символы предопределенного типа Character.
32 Набор символов, такой как EBCDIC, может быть объявлен как тип символов; внутренние коды символов могут быть указаны с помощью представления_перечисления, как описано в подпункте 13.4.
Примеры
Пример типа символов:
type Римская_цифра is ('I', 'V', 'X', 'L', 'C', 'D', 'M');