Руководство по Ada (Ada 2022)
2.1 Набор символов
Набор символов для текста программы Ada состоит из всего кодировочного пространства, описанного в ISO/IEC 10646:2020 Universal Coded Character Set. Это кодировочное пространство организовано в плоскости, каждая плоскость содержит 65536 символов.
Синтаксис
Абзацы 2 и 3 были удалены.
Символ определяется в этом Руководстве для каждой ячейки в кодировочном пространстве, описанном в ISO/IEC 10646:2020, независимо от того, выделяет ли ISO/IEC 10646:2020 символ для этой ячейки.
Статическая семантика
Кодированное представление символов определяется реализацией (это может быть представление, не определенное в ISO/IEC 10646:2020). Символ, у которого относительный код в его плоскости равен 16#FFFE# или 16#FFFF#, не допускается в тексте программы. Единственными разрешёнными символами за пределами комментариев являются символы категорий other_format, format_effector и graphic_character.
Семантика программы Ada, текст которой не находится в Нормализованной форме C (как определено в разделе 22 ISO/IEC 10646:2020), определяется реализацией.
Описание определения языка в данном документе использует свойства символов «Общая категория», «Простое отображение прописных букв», «Отображение прописных букв» и «Особое условие» из документов, на которые ссылается пункт 2 ISO/IEC 10646:2020. Фактический набор графических символов, используемых реализацией для визуального представления текста программы 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:2020):
| графический символ | название | графический символ | название | |
| " | кавычка | : | двоеточие | |
| # | знак номера | ; | точка с запятой | |
| & | амперсанд | < | знак меньше | |
| ' | апостроф, тика | = | знак равенства | |
| ( | левая круглая скобка | > | знак больше | |
| ) | правая круглая скобка | _ | нижнее подчеркивание | |
| * | звездочка, умножить | | | вертикальная черта | |
| + | знак плюс | / | слеш, разделить | |
| , | запятая | ! | восклицательный знак | |
| – | дефис, минус | % | знак процента | |
| . | точка | [ | левая квадратная скобка | |
| @ | собачий символ | ] | правая квадратная скобка |
Требования к реализации
Реализация Ada должна принимать исходный код Ada в кодировке UTF-8, с или без BOM (см. A.4.11), где каждый символ представлен своим кодом. Пара символов ВОЗВРАТ КАРЕТКИ/ПЕРЕВОД СТРОКИ (коды 16#0D# 16#0A#) обозначает один символ конца строки (см. 2.2); любое другое вхождение format_effector, кроме символа с кодом 16#09# (ТАБУЛЯЦИЯ), также обозначает один символ конца строки.
Разрешения реализации
Вышеперечисленные категории, а также отображение и слияние регистров могут основываться на определенной реализацией версии ISO/IEC 10646 (издание 2003 года или более поздние).
ПРИМЕЧАНИЕ Символы категорий other_control, other_private_use и other_surrogate допускаются только в комментариях.