Chapter 4. Types, Subtypes, and Declarations

Table of Contents

4.1. Type Declarations
4.2. Subtype Declarations
4.3. Scalar Types
4.3.1. Enumeration Types
4.3.2. Integer Types
4.4. Array Types
4.5. Record Types

This chapter specifies the syntax and semantics of types and subtypes.

4.1. Type Declarations

Type Declarations
[33]Type_Declaration::= type Name is Type_Definition ;  
[34]Type_Definition::= Integer_Type_Definition | Enumeration_Type_Definition  

Type declarations create new types

4.2. Subtype Declarations

Subtype Declarations
[35]Subtype_Indication::= Name [ Subtype_Constraint ]  
[36]Subtype_Constraint::= Range_Constraint  
[37]Range_Constraint::= range Range  

4.3. Scalar Types

[38]Range::= Expression .. Expression | Range_Attribute_Mark  

4.3.1. Enumeration Types

Enumeration Type Definition
[39]Enumeration_Type_Definition::= ( Enumeration_Literal { , Enumeration_Literal } )  
[40]Enumeration_Literal::= Identifier | Input_Character  

4.3.2. Integer Types

Integer Type Definition
[41]Integer_Type_Definition::= Signed_Integer_Type_Definition | Unsigned_Integer_Type_Definition  
[42]Signed_Integer_Type_Definition::= range Expression .. Expression  
[43]Unsigned_Integer_Type_Definition::= mod Expression  

4.4. Array Types

Array Type Definition
[44]Array_Type_Definition::= Constrained_Array_Type_Definition | Unconstrained_Array_Type_Definition  
[45]Constrained_Array_Type_Definition::= array ( Discrete_Subtype_Definition { , Discrete_Subtype_Definition } ) of Name  
[46]Discrete_Subtype_Definition::= Subtype_Indication Range  
[47]Unconstrained_Array_Type_Definition::= array ( Name range <> { , Name range <> } ) of Name  

4.5. Record Types

Record Type Definition
[48]Record_Type_Definition::= record Record_Component_Definition ; { Record_Component_Definition ; } end record  
[49]Record_Component_Definition::= Identifier : Subtype_Indication