Справочник по Ada 95
3.5.2 Типы символов
Статическая семантика
Тип перечисления называется типом символов, если хотя бы одна из его констант перечисления является символьной_константой.
Предопределённый тип Character является типом символов, значения которого соответствуют 256 кодовым позициям Строки 00 (также известной как Latin-1) базовой многоязычной плоскости (BMP) ISO 10646. Каждый графический символ Строки 00 BMP имеет соответствующую символьной_константу в Character. Каждая из позиций без графического отображения Строки 00 (0000-001F и 007F-009F) имеет соответствующее определяемое языком имя, которое не может быть использовано как константа перечисления, но может быть использовано с атрибутами (Wide_)Image и (Wide_)Value; эти имена приведены в определении типа Character в A.1, «Пакет Standard», но напечатаны курсивом.
Предопределённый тип Wide_Character является типом символов, значения которого соответствуют 65536 кодовым позициям базовой многоязычной плоскости (BMP) ISO 10646. Каждый графический символ BMP имеет соответствующую символьной_константу в Wide_Character. Первые 256 значений Wide_Character имеют ту же символьной_константу или определяемое языком имя, что и в Character. Последние 2 значения Wide_Character соответствуют позициям без графического отображения FFFE и FFFF BMP и получают определяемые языком имена FFFE и FFFF. Как и другие определяемые языком имена для символов без графического отображения, имена FFFE и FFFF могут быть использованы только с атрибутами (Wide_)Image и (Wide_)Value; они не могут быть использованы как константы перечисления. Все остальные значения Wide_Character считаются графическими символами и имеют соответствующую символьной_константу.
Разрешения для реализации
В нестандартном режиме реализация может предоставить другие интерпретации для предопределённых типов Character и Wide_Character, чтобы соответствовать локальным соглашениям.
Рекомендации для реализации
Если реализация поддерживает режим с альтернативными интерпретациями для Character и Wide_Character, набор графических символов Character должен тем не менее оставаться надлежащим подмножеством набора графических символов Wide_Character. Любые «локальные настройки» наборов символов должны быть отражены в результатах подпрограмм, определённых в определяемом языком пакете Characters.Handling (см. A.3) в таком режиме. В режиме с альтернативной интерпретацией Character реализация также должна поддерживать соответствующую модификацию того, что является допустимой буквой_идентификатора.
ПРИМЕЧАНИЯ
23 Определяемый языком библиотечный пакет Characters.Latin_1 (см. A.3.3) включает объявление констант, обозначающих управляющие символы, строчные символы и специальные символы предопределённого типа Character.
24 Стандартный набор символов, такой как EBCDIC, может быть объявлен как тип символов; внутренние коды символов могут быть указаны с помощью раздела_представления_перечисления так, как объяснено в разделе 13.4.
Примеры
Пример типа символов:
type Римская_Цифра is ('I', 'V', 'X', 'L', 'C', 'D', 'M');