Implementation of Character Classes
Character class names are defined as small-integer constants. A character class array is initialized to map from a character code to the appropriate class.
#define ALPHA 1 /* char class names */
#define NUMERIC 2
#define SPECIAL 3
int CHARCLASS[256]; /* char class array */
char specchar[] = "+-*/:=<>^.,;()[]{}";
for (i = 'a'; i <= 'z'; ++i) /* init */
CHARCLASS[i] = ALPHA;
for (i = '0'; i <= '9'; ++i)
CHARCLASS[i] = NUMERIC;
for (i = 0 ; specchar[i] != '\0'; ++i)
CHARCLASS[specchar[i]] = SPECIAL;
The class of a character is looked up in the array:
c = peekchar();
if (CHARCLASS[c] == ALPHA) ...