Contents   Index   Search   Previous   Next
 3.1 Declarations
1
   The language defines several
kinds of named 
entities that are declared by declarations. 
The
entity's 
name is defined by the declaration, usually by a 
defining_identifier,
but sometimes by a 
defining_character_literal
or 
defining_operator_symbol.
 
2
   There are several forms of declaration. A basic_declaration
is a form of declaration defined as follows. 
Syntax
3
basic_declaration
::= 
     type_declaration | 
subtype_declaration
   | 
object_declaration | 
number_declaration
   | 
subprogram_declaration | 
abstract_subprogram_declaration
   | 
package_declaration | 
renaming_declaration
   | 
exception_declaration | 
generic_declaration
   | 
generic_instantiation 
4
defining_identifier
::= identifier 
Static Semantics
5
   A 
declaration is a
language construct that associates a name with (a view of) an entity.
A declaration may appear explicitly
in the program text (an 
explicit declaration), or may be supposed
to occur at a given place in the text as a consequence of the semantics
of another construct (an 
implicit declaration). 
 
6
   Each of the following is defined
to be a declaration: any 
basic_declaration;
an 
enumeration_literal_specification;
a 
discriminant_specification; a
component_declaration; a 
loop_parameter_specification;
a 
parameter_specification; a 
subprogram_body;
an 
entry_declaration; an 
entry_index_specification;
a 
choice_parameter_specification;
a 
generic_formal_parameter_declaration.
 
7
   All declarations
contain a 
definition for a 
view of an entity. A view consists
of an identification of the entity (the entity 
of the view), plus
view-specific characteristics that affect the use of the entity through
that view (such as mode of access to an object, formal parameter names
and defaults for a subprogram, or visibility to components of a type).
In most cases, a declaration also contains the definition for the entity
itself (a 
renaming_declaration is
an example of a declaration that does not define a new entity, but instead
defines a view of an existing entity (see 
8.5)).
 
8
   For each declaration, the
language rules define a certain region of text called the 
scope
of the declaration (see 
8.2). Most declarations
associate an 
identifier with a declared
entity. Within its scope, and only there, there are places where it is
possible to use the 
identifier to
refer to the declaration, the view it defines, and the associated entity;
these places are defined by the visibility rules (see 
8.3).
At such places the 
identifier
is said to be a 
name of the entity (the 
direct_name
or 
selector_name); 
the
name is said to 
denote the declaration, the view, and the associated
entity (see 
8.6). 
The declaration
is said to 
declare the name, the view, and in most cases, the
entity itself.
 
9
   As an alternative to an 
identifier,
an enumeration literal can be declared with a 
character_literal
as its name (see 
3.5.1), and a function can
be declared with an 
operator_symbol
as its name (see 
6.1).
 
10
    The syntax rules use the
terms 
defining_identifier, 
defining_character_literal,
and 
defining_operator_symbol for
the defining occurrence of a name; these are collectively called 
defining
names. 
The terms 
direct_name
and 
selector_name are used for usage
occurrences of 
identifiers, 
character_literals,
and 
operator_symbols. These are
collectively called 
usage names. 
 
Dynamic Semantics
11
    The process by which a construct
achieves its run-time effect is called 
execution. 
This
process is also called 
elaboration for declarations and 
evaluation
for expressions. One of the terms execution, elaboration, or evaluation
is defined by this International Standard for each construct that has
a run-time effect. 
 
12
1  At
compile time, the declaration of an entity declares the entity.
At run time, the elaboration of the declaration creates
the entity.  
Contents   Index   Search   Previous   Next   Legal