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