Static Semantics
- (1)
- The library package Characters.Handling has the following declaration:
(2)
package Ada.Characters.Handling is
pragma Preelaborate(Handling);
(3)
--Character classification functions
(4)
function Is_Control (Item : in Character) return Boolean;
function Is_Graphic (Item : in Character) return Boolean;
function Is_Letter (Item : in Character) return Boolean;
function Is_Lower (Item : in Character) return Boolean;
function Is_Upper (Item : in Character) return Boolean;
function Is_Basic (Item : in Character) return Boolean;
function Is_Digit (Item : in Character) return Boolean;
function Is_Decimal_Digit (Item : in Character) return Boolean renames Is_Digit;
function Is_Hexadecimal_Digit (Item : in Character) return Boolean;
function Is_Alphanumeric (Item : in Character) return Boolean;
function Is_Special (Item : in Character) return Boolean;
(5)
--Conversion functions for Character and String
(6)
function To_Lower (Item : in Character) return Character;
function To_Upper (Item : in Character) return Character;
function To_Basic (Item : in Character) return Character;
(7)
function To_Lower (Item : in String) return String;
function To_Upper (Item : in String) return String;
function To_Basic (Item : in String) return String;
(8)
--Classifications of and conversions between Character and ISO 646
(9)
subtype ISO_646 is
Character range Character'Val(0) .. Character'Val(127);
(10)
function Is_ISO_646 (Item : in Character) return Boolean;
function Is_ISO_646 (Item : in String) return Boolean;
(11)
function To_ISO_646 (Item : in Character;
Substitute : in ISO_646 := ' ')
return ISO_646;
(12)
function To_ISO_646 (Item : in String;
Substitute : in ISO_646 := ' ')
return String;
(13)
--Classifications of and conversions between Wide_Character and Character.
(14)
function Is_Character (Item : in Wide_Character) return Boolean;
function Is_String (Item : in Wide_String) return Boolean;
(15)
function To_Character (Item : in Wide_Character;
Substitute : in Character := ' ')
return Character;
(16)
function To_String (Item : in Wide_String;
Substitute : in Character := ' ')
return String;
(17)
function To_Wide_Character (Item : in Character) return Wide_Character;
(18)
function To_Wide_String (Item : in String) return Wide_String;
(19)
end Ada.Characters.Handling;
- (20)
- In the description below for each function that returns a Boolean
result, the effect is described in terms of the conditions under which the
value True is returned. If these conditions are not met, then the function
returns False.
- (21)
- Each of the following classification functions has a formal Character
parameter, Item, and returns a Boolean result.
- (22)
- Is_Control
True if Item is a control character. A control character is
a character whose position is in one of the ranges 0..31 or
127..159.
- (23)
- Is_Graphic
True if Item is a graphic character. A graphic character is
a character whose position is in one of the ranges 32..126 or
160..255.
- (24)
- Is_Letter
True if Item is a letter. A letter is a character that is in
one of the ranges 'A'..'Z' or 'a'..'z', or whose position is
in one of the ranges 192..214, 216..246, or 248..255.
- (25)
- Is_Lower
True if Item is a lower-case letter. A lower-case letter is
a character that is in the range 'a'..'z', or whose position
is in one of the ranges 223..246 or 248..255.
- (26)
- Is_Upper
True if Item is an upper-case letter. An upper-case letter
is a character that is in the range 'A'..'Z' or whose
position is in one of the ranges 192..214 or 216.. 222.
- (27)
- Is_Basic
True if Item is a basic letter. A basic letter is a
character that is in one of the ranges 'A'..'Z' and 'a'..'z',
or that is one of the following: an upper- or lower-case AE
diphthong, an upper- or lower-case Icelandic eth, an upper--
or lower-case Icelandic thorn, or a sharp-s.
- (28)
- Is_Digit
True if Item is a decimal digit. A decimal digit is a
character in the range '0'..'9'.
- (29)
- Is_Decimal_Digit
- (30)
- Is_Hexadecimal_Digit
True if Item is a hexadecimal digit. A hexadecimal digit is
a character that is either a decimal digit or that is in one
of the ranges 'A' .. 'F' or 'a' .. 'f'.
- (31)
- Is_Alphanumeric
True if Item is an alphanumeric character. An alphanumeric
character is a character that is either a letter or a decimal
digit.
- (32)
- Is_Special
True if Item is a special graphic character. A special
graphic character is a graphic character that is not
alphanumeric.
- (33)
- Each of the names To_Lower, To_Upper, and To_Basic refers to two
functions: one that converts from Character to Character, and the other that
converts from String to String. The result of each Character-to-Character
function is described below, in terms of the conversion applied to Item, its
formal Character parameter. The result of each String-to-String conversion
is obtained by applying to each element of the function's String parameter
the corresponding Character-to-Character conversion; the result is the null
String if the value of the formal parameter is the null String. The lower
bound of the result String is 1.
- (34)
- To_Lower
Returns the corresponding lower-case value for Item if Is_Upper(Item), and returns Item otherwise.
- (35)
- To_Upper
Returns the corresponding upper-case value for Item if Is_Lower(Item) and Item has an upper-case form, and returns Item
otherwise. The lower case letters sharp-s and y-diaeresis do
not have upper case forms.
- (36)
- To_Basic
Returns the letter corresponding to Item but with no
diacritical mark, if Item is a letter but not a basic letter;
returns Item otherwise.
- (37)
- The following set of functions test for membership in the ISO 646
character range, or convert between ISO 646 and Character.
- (38)
- Is_ISO_646
The function whose formal parameter, Item, is of type
Character returns True if Item is in the subtype ISO_646.
- (39)
- Is_ISO_646
The function whose formal parameter, Item, is of type String
returns True if Is_ISO_646(Item(I)) is True for each I in
Item'Range.
- (40)
- To_ISO_646
The function whose first formal parameter, Item, is of type
Character returns Item if Is_ISO_646(Item), and returns the
Substitute ISO_646 character otherwise.
- (41)
- To_ISO_646
The function whose first formal parameter, Item, is of type
String returns the String whose Range is 1..Item'Length and
each of whose elements is given by To_ISO_646 of the
corresponding element in Item.
- (42)
- The following set of functions test Wide_Character values for membership
in Character, or convert between corresponding characters of Wide_Character
and Character.
- (43)
- Is_Character
Returns True if Wide_Character'Pos(Item) <=
Character'Pos(Character'Last).
- (44)
- Is_String
Returns True if Is_Character(Item(I)) is True for each I in
Item'Range.
- (45)
- To_Character
Returns the Character corresponding to Item if Is_Character(Item), and returns the Substitute Character
otherwise.
- (46)
- To_String
Returns the String whose range is 1..Item'Length and each of
whose elements is given by To_Character of the corresponding
element in Item.
- (47)
- To_Wide_Character
Returns the Wide_Character X such that Character'Pos(Item) =
Wide_Character'Pos(X).
- (48)
- To_Wide_String
Returns the Wide_String whose range is 1..Item'Length and
each of whose elements is given by To_Wide_Character of the
corresponding element in Item.
Implementation Advice
- (49)
- If an implementation provides a localized definition of Character or Wide_Character,
then the effects of the subprograms in Characters.Handling should reflect
the localizations. See also 3.5.2.
-
- (50)
(5) A basic letter is a letter without a diacritical mark.
- (51)
(6) Except for the hexadecimal digits, basic letters, and ISO_646
characters, the categories identified in the classification functions
form a strict hierarchy:
- (52)
- (53)
- (54)
- (55)
- (56)
- (57)
- (58)
- (59)
- Special graphic characters
-- Email comments, additions, corrections, gripes, kudos, etc. to:
Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Copyright statement
Page last generated: 95-03-12