Modula-2 || Compiler & Tools || Library || Search Engine


Ulm's Modula-2 Library:
Chars


NAME

Chars - character classifications

SYNOPSIS

CONST
   (* control characters as by HREF="ASCII.html">ASCII *)
   nul  =  0C; soh  =  1C; stx =  2C; etx =  3C; eot =   4C;
   enq  =  5C; ack  =  6C; bel =  7C; bs  = 10C; ht  =  11C;
   lf   = 12C; vt   = 13C; ff  = 14C; cr  = 15C; so  =  16C;
   si   = 17C; dle  = 20C; dc1 = 21C; dc2 = 22C; dc3 =  23C;
   dc4  = 24C; nak  = 25C; syn = 26C; etb = 27C; can =  30C;
   em   = 31C; sub  = 32C; esc = 33C; fs  = 34C; gs  =  35C;
   us   = 37C; rs   = 36C; sp  = 40C;            del = 177C;

   null = nul; bell = bel; tab =  ht; nl  =  lf; np   =  ff;

   (* names easy to remember *)
   CtrlA =  1C; CtrlB =  2C; CtrlC =  3C; CtrlD = 4C;
   CtrlE =  5C; CtrlF =  6C; CtrlG =  7C; CtrlH = 10C;
   CtrlI = 11C; CtrlJ = 12C; CtrlK = 13C; CtrlL = 14C;
   CtrlM = 15C; CtrlN = 16C; CtrlO = 17C; CtrlP = 20C;
   CtrlQ = 21C; CtrlR = 22C; CtrlS = 23C; CtrlT = 24C;
   CtrlU = 25C; CtrlV = 26C; CtrlW = 27C; CtrlX = 30C;
   CtrlY = 31C; CtrlZ = 32C;


TYPE CharSet = SET OF CHAR; CharClass = (nullc, letter, digit, punct, space, control, nonascii);

CONST (* character sets *) UpperS = CharSet {'A'..'Z'}; LowerS = CharSet {'a'..'z'}; LetterS = UpperS + LowerS; OctDigitS = CharSet {'0'..'7'}; DigitS = OctDigitS + CharSet {'8','9'}; HexDigitS = DigitS + CharSet {'a'..'f','A'..'F'}; AlphaNumS = LetterS + DigitS; SpaceS = CharSet {sp,ht,nl}; WhiteS = CharSet {sp,ht}; AsciiS = CharSet {0C..177C}; ControlS = CharSet {1C..37C, del}; NonControlS = CharSet {40C..176C}; PrintS = NonControlS + SpaceS; NonPrintS = AsciiS - PrintS; PunctS = NonControlS - CharSet {sp} - AlphaNumS;

PROCEDURE Lower(VAR ch : CHAR); PROCEDURE Upper(VAR ch : CHAR); PROCEDURE Class(ch : CHAR) : CharClass;

DESCRIPTION

Lower substitutes an upper case letter ch by the corresponding lower case letter, Upper works the other way round. Both procedures have no effect on other arguments.

Class returns the class of a character due to the following mapping rules (ch in set -> value returned):

{nul} -> nullc
LetterS -> letter
DigitS -> digit
SpaceS -> space
PunctS -> punct
ControlS - SpaceS -> control
{200C..MAX(CHAR)} -> nonascii

SEE ALSO

ASCII

AUTHOR

Werner Stanglow
Edited by: borchert, last change: 1997/02/25, revision: 1.2, converted to HTML: 1997/04/28

Modula-2 || Compiler & Tools || Library || Search Engine