|
|
1.1 root 1: #
2: /*
3: * UNIX shell
4: *
5: * S. R. Bourne
6: * Bell Telephone Laboratories
7: *
8: */
9:
10:
11: /* table 1 */
12: #define T_SUB 01
13: #define T_MET 02
14: #define T_SPC 04
15: #define T_DIP 010
16: #define T_EOF 020
17: #define T_EOR 040
18: #define T_QOT 0100
19: #define T_ESC 0200
20:
21: /* table 2 */
22: #define T_BRC 01
23: #define T_DEF 02
24: #define T_AST 04
25: #define T_DIG 010
26: #define T_FNG 020
27: #define T_SHN 040
28: #define T_IDC 0100
29: #define T_SET 0200
30:
31: /* for single chars */
32: #define _TAB (T_SPC)
33: #define _SPC (T_SPC)
34: #define _UPC (T_IDC)
35: #define _LPC (T_IDC)
36: #define _DIG (T_DIG)
37: #define _EOF (T_EOF)
38: #define _EOR (T_EOR)
39: #define _BAR (T_DIP)
40: #define _HAT (T_MET)
41: #define _BRA (T_MET)
42: #define _KET (T_MET)
43: #define _SQB (T_FNG)
44: #define _AMP (T_DIP)
45: #define _SEM (T_DIP)
46: #define _LT (T_DIP)
47: #define _GT (T_DIP)
48: #define _LQU (T_QOT|T_ESC)
49: #define _BSL (T_ESC)
50: #define _DQU (T_QOT)
51: #define _DOL1 (T_SUB|T_ESC)
52:
53: #define _CBR T_BRC
54: #define _CKT T_DEF
55: #define _AST (T_AST|T_FNG)
56: #define _EQ (T_DEF)
57: #define _MIN (T_DEF|T_SHN)
58: #define _PCS (T_SHN)
59: #define _NUM (T_SHN)
60: #define _DOL2 (T_SHN)
61: #define _PLS (T_DEF|T_SET)
62: #define _AT (T_AST)
63: #define _QU (T_DEF|T_FNG|T_SHN)
64:
65: /* abbreviations for tests */
66: #define _IDCH (T_IDC|T_DIG)
67: #define _META (T_SPC|T_DIP|T_MET|T_EOR)
68:
69: char _ctype1[];
70:
71: /* nb these args are not call by value !!!! */
72: #define space(c) (((c)"E)==0 ANDF _ctype1[c]&(T_SPC))
73: #define eofmeta(c) (((c)"E)==0 ANDF _ctype1[c]&(_META|T_EOF))
74: #define qotchar(c) (((c)"E)==0 ANDF _ctype1[c]&(T_QOT))
75: #define eolchar(c) (((c)"E)==0 ANDF _ctype1[c]&(T_EOR|T_EOF))
76: #define dipchar(c) (((c)"E)==0 ANDF _ctype1[c]&(T_DIP))
77: #define subchar(c) (((c)"E)==0 ANDF _ctype1[c]&(T_SUB|T_QOT))
78: #define escchar(c) (((c)"E)==0 ANDF _ctype1[c]&(T_ESC))
79:
80: char _ctype2[];
81:
82: #define digit(c) (((c)"E)==0 ANDF _ctype2[c]&(T_DIG))
83: #define fngchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_FNG))
84: #define dolchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_AST|T_BRC|T_DIG|T_IDC|T_SHN))
85: #define defchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_DEF))
86: #define setchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_SET))
87: #define digchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_AST|T_DIG))
88: #define letter(c) (((c)"E)==0 ANDF _ctype2[c]&(T_IDC))
89: #define alphanum(c) (((c)"E)==0 ANDF _ctype2[c]&(_IDCH))
90: #define astchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_AST))
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.