DocAda(tm) is a productivity tool of KSCE

____ | Up | Next | Back | Forward
About DocAda Light: Preface / Preliminary / Help / TOC / Copyright
DocAda Online at the Ada Home: Complete RM95 / Updates / News

3.2.1 Type Declarations

A type_declaration declares a type and its first subtype.

Syntax

   
       type_declaration ::=  full_type_declaration
          | incomplete_type_declaration
          | private_type_declaration
          | private_extension_declaration

       full_type_declaration ::=
            type defining_identifier [known_discriminant_part] is type_definition;
          | task_type_declaration
          | protected_type_declaration

       type_definition ::=
            enumeration_type_definition | integer_type_definition
          | real_type_definition        | array_type_definition
          | record_type_definition      | access_type_definition
          | derived_type_definition

Legality Rules

A given type shall not have a subcomponent whose type is the given type itself.

Static Semantics

The defining_identifier of a type_declaration denotes the first subtype of the type. The known_discriminant_part, if any, defines the discriminants of the type (see 3.7, ``Discriminants''). The remainder of the type_declaration defines the remaining characteristics of (the view of) the type.

A type defined by a type_declaration is a named type; such a type has one or more nameable subtypes. Certain other forms of declaration also include type definitions as part of the declaration for an object (including a parameter or a discriminant). The type defined by such a declaration is anonymous -- it has no nameable subtypes. For explanatory purposes, this International Standard sometimes refers to an anonymous type by a pseudo-name, written in italics, and uses such pseudo-names at places where the syntax normally requires an identifier. For a named type whose first subtype is T, this International Standard sometimes refers to the type of T as simply ``the type T.''

A named type that is declared by a full_type_declaration, or an anonymous type that is defined as part of declaring an object of the type, is called a full type. The type_definition, task_definition, protected_definition, or access_definition that defines a full type is called a full type definition. Types declared by other forms of type_declaration are not separate types; they are partial or incomplete views of some full type.

The definition of a type implicitly declares certain predefined operators that operate on the type, according to what classes the type belongs, as specified in 4.5, ``Operators and Expression Evaluation''.

The predefined types (for example the types Boolean, Wide_Character, Integer, root_integer, and universal_integer) are the types that are defined in a predefined library package called Standard; this package also includes the (implicit) declarations of their predefined operators. The package Standard is described in A.1.

Dynamic Semantics

The elaboration of a full_type_declaration consists of the elaboration of the full type definition. Each elaboration of a full type definition creates a distinct type and its first subtype.

Examples

Examples of type definitions:

    
       (White, Red, Yellow, Green, Blue, Brown, Black)
       range 1 .. 72
       array(1 .. 10) of Integer

Examples of type declarations:

    
       type Color  is (White, Red, Yellow, Green, Blue, Brown, Black);
       type Column is range 1 .. 72;
       type Table  is array(1 .. 10) of Integer;

About DocAda Light: Preface / Preliminary / Help / TOC / Copyright
DocAda Online at the Ada Home: Complete RM95 / Updates / News
____ | Up | Next | Back | Forward


Copyright © 1994-1997 by Kempe Software Capital Enterprises. All Rights Reserved. For comments on this DocAda(tm) hypertext document, please write to KSCE, at docada@ksce.com