Contents Index Previous Next
3.3.2 Number Declarations
1
A number_declaration
declares a named number.
1.a
Discussion: {static} If
a value or other property of a construct is required to be static that
means it is required to be determined prior to execution. A static expression
is an expression whose value is computed at compile time and is usable in contexts
where the actual value might affect the legality of the construct. This is fully
defined in clause 4.9.
Syntax
2
number_declaration
::=
defining_identifier_list :
constant :=
static_expression;
Name Resolution Rules
3
{expected type (number_declaration
expression) [partial]} The
static_expression
given for a
number_declaration is
expected to be of any numeric type.
Legality Rules
4
The
static_expression
given for a number declaration shall be a static expression, as defined by clause
4.9.
Static Semantics
5
The named number denotes a value of type universal_integer
if the type of the static_expression
is an integer type. The named number denotes a value of type universal_real
if the type of the static_expression
is a real type.
6
The value denoted by the named number is the value
of the
static_expression,
converted to the corresponding universal type.
{implicit
subtype conversion (named number value) [partial]}
Dynamic Semantics
7
{elaboration (number_declaration)
[partial]} The elaboration of a
number_declaration
has no effect.
7.a
Proof: Since the static_expression
was evaluated at compile time.
Examples
8
Examples of number
declarations:
9
Two_Pi : constant := 2.0*Ada.Numerics.Pi; -- a real number (see A.5)
10
Max : constant := 500; -- an integer number
Max_Line_Size : constant := Max/6 -- the integer 83
Power_16 : constant := 2**16; -- the integer 65_536
One, Un, Eins : constant := 1; -- three different names for 1
Extensions to Ada 83
10.a
{extensions to Ada 83}
We now allow a static expression of any numeric type
to initialize a named number. For integer types, it was possible in Ada
83 to use 'Pos to define a named number, but there was no way to use
a static expression of some non-universal real type to define a named
number. This change is upward compatible because of the preference rule
for the operators of the root numeric types.
Wording Changes from Ada 83
10.b
We have moved the syntax rule
into this subclause.
10.c
AI83-00263 describes the elaboration
of a number declaration in words similar to that of an object_declaration.
However, since there is no expression to be evaluated and no object to
be created, it seems simpler to say that the elaboration has no effect.
Contents Index Previous Next Legal