4.2 Literals
1
A
literal represents a
value literally, that is, by means of notation suited to its kind. A
literal is either a
numeric_literal, a
character_literal,
the literal
null, or a
string_literal.
Name Resolution Rules
2/2
This paragraph was
deleted.
3
For a
name
that consists of a
character_literal, either
its expected type shall be a single character type, in which case it
is interpreted as a parameterless
function_call
that yields the corresponding value of the character type, or its expected
profile shall correspond to a parameterless function with a character
result type, in which case it is interpreted as the name of the corresponding
parameterless function declared as part of the character type's definition
(see
3.5.1). In either case, the
character_literal
denotes the
enumeration_literal_specification.
4
The expected type for a
primary
that is a
string_literal shall be a single
string type.
Legality Rules
5
A character_literal that
is a name shall correspond to a defining_character_literal
of the expected type, or of the result type of the expected profile.
6
For each character of a string_literal
with a given expected string type, there shall be a corresponding defining_character_literal
of the component type of the expected string type.
7/2
This paragraph was
deleted.
Static Semantics
8/2
An integer literal is of type universal_integer.
A real literal is of type universal_real. The literal null
is of type universal_access.
Dynamic Semantics
9
The
evaluation of a numeric literal, or the literal
null, yields the
represented value.
10
The evaluation of a
string_literal
that is a
primary yields an array value containing
the value of each character of the sequence of characters of the
string_literal,
as defined in
2.6. The bounds of this array
value are determined according to the rules for
positional_array_aggregates
(see
4.3.3), except that for a null string
literal, the upper bound is the predecessor of the lower bound.
11
For the evaluation
of a
string_literal of type
T, a check
is made that the value of each character of the
string_literal
belongs to the component subtype of
T. For the evaluation of a
null string literal, a check is made that its lower bound is greater
than the lower bound of the base range of the index type.
The
exception Constraint_Error is raised if either of these checks fails.
12
6 Enumeration literals that are
identifiers
rather than
character_literals follow the
normal rules for
identifiers when used in
a
name (see
4.1
and
4.1.3).
Character_literals
used as
selector_names follow the normal rules
for expanded names (see
4.1.3).
Examples
13
Examples of literals:
14
3.14159_26536 -- a real literal
1_345 -- an integer literal
'A' -- a character literal
"Some Text" -- a string literal