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