1: /* 2: * Initialization for arrays used to classify characters. 3: */ 4: 5: #include "char.h" 6: 7: /* 8: * chrtype - classifies each ASCII character as space (_S), 9: * upper-case letter (_U), lower-case letter (_L), or 10: * digit (_N), or other alphabetic (_A, e.g. "_"). 11: */ 12: 13: char chrtype[] = { 14: 0, 0, 0, 0, 0, 0, 0, 0, /* NUL-BEL */ 15: 0, _S, _S, _S, _S, _S, 0, 0, /* BS -SI */ 16: 0, 0, 0, 0, 0, 0, 0, 0, /* DLE-ETB */ 17: 0, 0, 0, 0, 0, 0, 0, 0, /* CAN-US */ 18: _S, 0, 0, 0, 0, 0, 0, 0, /* !"#$%&' */ 19: 0, 0, 0, 0, 0, 0, 0, 0, /* ()*+,-./ */ 20: _N, _N, _N, _N, _N, _N, _N, _N, /* 01234567 */ 21: _N, _N, 0, 0, 0, 0, 0, 0, /* 89:;<=>? */ 22: 0, _U, _U, _U, _U, _U, _U, _U, /* @ABCDEFG */ 23: _U, _U, _U, _U, _U, _U, _U, _U, /* HIJKLMNO */ 24: _U, _U, _U, _U, _U, _U, _U, _U, /* PQRSTUVW */ 25: _U, _U, _U, 0, 0, 0, 0, _A, /* XYZ[\]^_ */ 26: 0, _L, _L, _L, _L, _L, _L, _L, /* `abcdefg */ 27: _L, _L, _L, _L, _L, _L, _L, _L, /* hijklmno */ 28: _L, _L, _L, _L, _L, _L, _L, _L, /* pqrstuvw */ 29: _L, _L, _L, 0, 0, 0, 0, 0 /* xyz{|}~ */ 30: }; 31: 32: /* 33: * ctran - translation table for all input except in string literals. 34: */ 35: 36: char ctran[] = { 37: 000, 001, 002, 003, 004, 005, 006, 007, /* NUL-BEL */ 38: 010, 011, 012, 013, 014, 015, 016, 017, /* BS -SI */ 39: 020, 021, 022, 023, 024, 025, 026, 027, /* DLE-ETB */ 40: 030, 031, 032, 033, 034, 035, 036, 037, /* CAN-US */ 41: ' ', '!', '"', '#', '$', '%', '&', '\'', /* !"#$%&' */ 42: '(', ')', '*', '+', ',', '-', '.', '/', /* ()*+,-./ */ 43: '0', '1', '2', '3', '4', '5', '6', '7', /* 01234567 */ 44: '8', '9', ':', ';', '<', '=', '>', '?', /* 89:;<=>? */ 45: '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', /* @ABCDEFG */ 46: 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', /* HIJKLMNO */ 47: 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', /* PQRSTUVW */ 48: 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', /* XYZ[\]^_ */ 49: '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', /* `abcdefg */ 50: 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', /* hijklmno */ 51: 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', /* pqrstuvw */ 52: 'x', 'y', 'z', '{', '|', '}', '~', 0177, /* xyz{|}~ */ 53: }; 54: 55: /* 56: * esctab - translates single-character escapes in string literals. 57: */ 58: 59: char esctab[] = { 60: 000, 001, 002, 003, 004, 005, 006, 007, /* NUL-BEL */ 61: 010, 011, 012, 013, 014, 015, 016, 017, /* BS -SI */ 62: 020, 021, 022, 023, 024, 025, 026, 027, /* DLE-ETB */ 63: 030, 031, 032, 033, 034, 035, 036, 037, /* CAN-US */ 64: ' ', '!', '"', '#', '$', '%', '&', '\'', /* !"#$%&' */ 65: '(', ')', '*', '+', ',', '-', '.', '/', /* ()*+,-./ */ 66: 000, 001, 002, 003, 004, 005, 006, 007, /* 01234567 */ 67: 010, 011, ':', ';', '<', '=', '>', '?', /* 89:;<=>? */ 68: '@', 'A', '\b', 'C', 0177, 033, 014, 'G', /* @ABCDEFG */ 69: 'H', 'I', 'J', 'K', '\n', 'M', '\n', 'O', /* HIJKLMNO */ 70: 'P', 'Q', '\r', 'S', '\t', 'U', 013, 'W', /* PQRSTUVW */ 71: 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', /* XYZ[\]^_ */ 72: '`', 'a', '\b', 'c', 0177, 033, 014, 'g', /* `abcdefg */ 73: 'h', 'i', 'j', 'k', '\n', 'm', '\n', 'o', /* hijklmno */ 74: 'p', 'q', '\r', 's', '\t', 'u', 013, 'w', /* pqrstuvw */ 75: 'x', 'y', 'z', '{', '|', '}', '~', 0177, /* xyz{|}~ */ 76: };