Справочник по Ada 2012
4.2 Литералы
Литерал представляет значение буквально, то есть с помощью обозначения, подходящего для его типа. Литерал может быть числовым литералом, символьным литералом, литералом null или строковым литералом.
Правила разрешения имён
Этот абзац был удалён.
Для имени, состоящего из символьного литерала, ожидаемый тип должен быть типом одиночного символа, в этом случае он интерпретируется как безаргументный вызов функции, возвращающий соответствующее значение типа символа, или его ожидаемый профиль должен соответствовать безаргументной функции с типом результата — символом, в этом случае он интерпретируется как имя соответствующей безаргументной функции, объявленной как часть определения типа символа (см. 3.5.1). В любом случае, символьный литерал обозначает спецификацию литерала перечисления.
Ожидаемый тип для первичного элемента, являющегося строковым литералом, должен быть типом одиночной строки.
Правила допустимости
Символьный литерал, являющийся именем, должен соответствовать определяющему символьному литералу ожидаемого типа или типа результата ожидаемого профиля.
Для каждого символа строкового литерала с заданным ожидаемым типом строки, должен быть соответствующий определяющий символьный литерал типа компонента ожидаемого типа строки.
Этот абзац был удалён.
Статическая семантика
Целочисленный литерал имеет тип universal_integer. Вещественный литерал имеет тип universal_real. Литерал null имеет тип universal_access.
Динамическая семантика
Вычисление числового литерала или литерала null возвращает представленное значение.
Вычисление строкового литерала, являющегося первичным, возвращает массивное значение, содержащее значение каждого символа последовательности символов строкового литерала, как определено в 2.6. Границы этого массива определяются по правилам для позиционных агрегатов массивов (см. 4.3.3), за исключением того, что для нулевого строкового литерала верхняя граница является предшественником нижней границы.
При вычислении строкового литерала типа T проверяется, что значение каждого символа строкового литерала принадлежит типу компонента T. При вычислении нулевого строкового литерала проверяется, что его нижняя граница больше нижней границы базового диапазона типа индекса. Если какой-либо из этих проверок не пройден, то возникает исключение Constraint_Error.
ПРИМЕЧАНИЯ
7 Литералы перечисления, которые являются идентификаторами, а не символьными литералами, следуют обычным правилам для идентификаторов при использовании в имени (см. 4.1 и 4.1.3). Символьные литералы, используемые как имена селекторов, следуют обычным правилам для расширенных имён (см. 4.1.3).
Примеры
Примеры литералов:
3.14159_26536 -- вещественный литерал
1_345 -- целочисленный литерал
'A' -- символьный литерал
"Некоторая Текст" -- строковый литерал
1_345 -- целочисленный литерал
'A' -- символьный литерал
"Некоторая Текст" -- строковый литерал