Справочник Ada 2012
2.1 Набор символов
Репертуар символов для текста программы Ada состоит из всего кодировочного пространства, описанного в стандарте ISO/IEC 10646:2011 Universal Multiple-Octet Coded Character Set. Это кодировочное пространство организовано в плоскости, каждая из которых содержит 65536 символов.
Синтаксис
Абзацы 2 и 3 были удалены.
Символ определяется этим международным стандартом для каждой ячейки кодировочного пространства, описанного в ISO/IEC 10646:2011, независимо от того, назначил ли ISO/IEC 10646:2011 символ этой ячейке.
Статическая семантика
Кодированное представление символов определяется реализацией (оно не обязательно должно быть определено в ISO/IEC 10646:2011). Символ, чьё относительное кодовое значение в своей плоскости равно 16#FFFE# или 16#FFFF#, не допускается в тексте программы. Единственными разрешёнными символами вне комментариев являются символы из категорий other_format, format_effector и graphic_character.
Семантика программы Ada, текст которой не находится в нормальной форме KC (как определено в разделе 21 ISO/IEC 10646:2011), определяется реализацией.
Описание языка в данном международном стандарте использует свойства символов «Общей категории», «Простое отображение в заглавные буквы», «Отображение в заглавные буквы» и «Особое условие» из документов, на которые ссылается примечание в разделе 1 ISO/IEC 10646:2011. Конкретный набор графических символов, используемых реализацией для визуального представления текста программы Ada, не задан.
Символы классифицируются следующим образом:
Этот абзац был удалён.
letter_uppercase
Любой символ, чья общая категория определена как «Буква, заглавная».
letter_lowercase
Любой символ, чья общая категория определена как «Буква, строчная».
letter_titlecase
Любой символ, чья общая категория определена как «Буква, прописная».
letter_modifier
Любой символ, чья общая категория определена как «Буква, модификатор».
letter_other
Любой символ, чья общая категория определена как «Буква, другая».
mark_non_spacing
Любой символ, чья общая категория определена как «Маркер, без пробела».
mark_spacing_combining
Любой символ, чья общая категория определена как «Маркер, с пробелом, комбинирующий».
number_decimal
Любой символ, чья общая категория определена как «Число, десятичное».
number_letter
Любой символ, чья общая категория определена как «Число, буквенное».
punctuation_connector
Любой символ, чья общая категория определена как «Пунктуация, соединительная».
other_format
Любой символ, чья общая категория определена как «Другое, форматирование».
separator_space
Любой символ, чья общая категория определена как «Разделитель, пробел».
separator_line
Любой символ, чья общая категория определена как «Разделитель, строка».
separator_paragraph
Любой символ, чья общая категория определена как «Разделитель, абзац».
format_effector
Символы с кодовыми точками 16#09# (ТАБУЛЯЦИЯ), 16#0A# (ПЕРЕВОД СТРОКИ), 16#0B# (ТАБУЛЯЦИЯ СТРОКИ), 16#0C# (ФОРМАТНЫЙ ПЕРЕВОД СТРАНИЦЫ), 16#0D# (ВОЗВРАТ КАРЕТКИ), 16#85# (СЛЕДУЮЩАЯ СТРОКА), и символы из категорий separator_line и separator_paragraph.
other_control
Любой символ, чья общая категория определена как «Другое, управляющий», и который не определён как format_effector.
other_private_use
Любой символ, чья общая категория определена как «Другое, частное использование».
other_surrogate
Любой символ, чья общая категория определена как «Другое, суррогатное».
graphic_character
Любой символ, который не принадлежит категориям other_control, other_private_use, other_surrogate, format_effector, и чьё относительное кодовое значение в своей плоскости не равно 16#FFFE# и не равно 16#FFFF#.
Следующие имена используются при ссылке на определенные символы (первое имя взято из ISO/IEC 10646:2011):
| графический символ | название | графический символ | название | |
| " | кавычка | : | двоеточие | |
| # | знак номера | ; | точка с запятой | |
| & | амперсанд | < | знак меньше | |
| ' | апостроф, тильд | = | знак равенства | |
| ( | левая круглая скобка | > | знак больше | |
| ) | правая круглая скобка | _ | нижнее подчеркивание | |
| * | звездочка, умножение | | | вертикальная черта | |
| + | плюс | / | слеш, деление | |
| , | запятая | ! | восклицательный знак | |
| – | тире, минус | % | процент | |
| . | точка |
Требования к реализации
Реализация Ada должна принимать исходный код Ada в кодировке UTF-8, с или без BOM (см. A.4.11), где каждый символ представлен своим кодовым значением. Пара символов «ВОЗВРАТ КАРЕТКИ/ПЕРЕВОД СТРОКИ» (кодовые точки 16#0D# 16#0A#) обозначает один символ конца строки (см. 2.2); любое другое вхождение format_effector, кроме символа с кодовой точкой 16#09# (ТАБУЛЯЦИЯ), также обозначает один символ конца строки.
Разрешения реализации
Вышеупомянутые категории, а также отображение и свёртку регистров, могут быть основаны на определении ISO/IEC 10646 (издание 2003 года или более позднее), определённом реализацией.
ПРИМЕЧАНИЯ
1 Символы из категорий other_control, other_private_use и other_surrogate разрешены только в комментариях.