3.5.1 Enumeration Types
Syntax
Legality Rules
Static Semantics
Each enumeration literal corresponds to a distinct 
value of the enumeration type, and to a distinct position number. 
The 
position number of the value of the first listed enumeration literal 
is zero; the position number of the value of each subsequent enumeration 
literal is one more than that of its predecessor in the list.
 
The predefined order relations between values of 
the enumeration type follow the order of corresponding position numbers.
Dynamic Semantics
The 
elaboration of an 
enumeration_type_definition 
creates the enumeration type and its first subtype, which is constrained 
to the base range of the type. 
 
When called, the parameterless function associated 
with an enumeration literal returns the corresponding value of the enumeration 
type. 
30  If an enumeration literal occurs in 
a context that does not otherwise suffice to determine the type of the 
literal, then qualification by the name of the enumeration type is one 
way to resolve the ambiguity (see 
4.7). 
 
Examples
Examples of enumeration 
types and subtypes: 
type Day    is (Mon, Tue, Wed, Thu, Fri, Sat, Sun);
type Suit   is (Clubs, Diamonds, Hearts, Spades);
type Gender is (M, F);
type Level  is (Low, Medium, Urgent);
type Color  is (White, Red, Yellow, Green, Blue, Brown, Black);
type Light  is (Red, Amber, Green); -- Red and Green are overloaded
type Hexa   is ('A', 'B', 'C', 'D', 'E', 'F');
type Mixed  is ('A', 'B', '*', B, None, '?', '%');
subtype Weekday is Day   range Mon .. Fri;
subtype Major   is Suit  range Hearts .. Spades;
subtype Rainbow is Color range Red .. Blue;  --  the Color Red, not the Light
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe