xref: /original-bsd/old/as.tahoe/asscan3.c (revision a9392a99)
1 /*
2  *	Copyright (c) 1982 Regents of the University of California
3  */
4 #ifndef lint
5 static char sccsid[] = "@(#)asscan3.c 4.4 6/30/83";
6 #endif not lint
7 
8 #include "asscanl.h"
9 
10 readonly short type[] = {
11 
12 /*hit the hard end of file*/	SCANEOF,
13 	/* '^@' 0x00 0000 */	SP,
14 	/* '^A' 0x01 0001 */	BADCHAR,
15 	/* '^B' 0x02 0002 */	BADCHAR,
16 	/* '^C' 0x03 0003 */	BADCHAR,
17 	/* '^D' 0x04 0004 */	BADCHAR,
18 	/* '^E' 0x05 0005 */	BADCHAR,
19 	/* '^F' 0x06 0006 */	BADCHAR,
20 	/* '^G' 0x07 0007 */	BADCHAR,
21 	/* '\b' 0x08 0010 */	BADCHAR,
22 	/* '\t' 0x09 0011 */	SP,
23 	/* '\n' 0x0a 0012 */	NL,
24 	/* '^K' 0x0b 0013 */	BADCHAR,
25 	/* '\f' 0x0c 0014 */	BADCHAR,
26 	/* '\r' 0x0d 0015 */	SP,
27 	/* '^N' 0x0e 0016 */	BADCHAR,
28 	/* '^O' 0x0f 0017 */	BADCHAR,
29 	/* '^P' 0x10 0020 */	BADCHAR,
30 	/* '^Q' 0x11 0021 */	BADCHAR,
31 	/* '^R' 0x12 0022 */	BADCHAR,
32 	/* '^S' 0x13 0023 */	BADCHAR,
33 	/* '^T' 0x14 0024 */	BADCHAR,
34 	/* '^U' 0x15 0025 */	BADCHAR,
35 	/* '^V' 0x16 0026 */	BADCHAR,
36 	/* '^W' 0x17 0027 */	BADCHAR,
37 	/* '^X' 0x18 0030 */	BADCHAR,
38 	/* '^Y' 0x19 0031 */	BADCHAR,
39 	/* '^Z' 0x1a 0032 */	BADCHAR,
40 	/* '^[' 0x1b 0033 */	BADCHAR,
41 	/* '^\' 0x1c 0034 */	BADCHAR,
42 	/* '^]' 0x1d 0035 */	BADCHAR,
43 	/* '^^' 0x1e 0036 */	BADCHAR,
44 	/* '^_' 0x1f 0037 */	BADCHAR,
45 	/* ' ' 0x20 0040 */	SP,
46 	/* '!' 0x21 0041 */	ORNOT,
47 	/* '"' 0x22 0042 */	DQ,
48 	/* '#' 0x23 0043 */	SH,
49 	/* '$' 0x24 0044 */	LITOP,
50 	/* '%' 0x25 0045 */	REGOP,
51 	/* '&' 0x26 0046 */	AND,
52 	/* ''' 0x27 0047 */	SQ,
53 	/* '(' 0x28 0050 */	LP,
54 	/* ')' 0x29 0051 */	RP,
55 	/* '*' 0x2a 0052 */	MUL,
56 	/* '+' 0x2b 0053 */	PLUS,
57 	/* ',' 0x2c 0054 */	CM,
58 	/* '-' 0x2d 0055 */	MINUS,
59 	/* '.' 0x2e 0056 */	ALPH,
60 	/* '/' 0x2f 0057 */	DIV,
61 	/* '0' 0x30 0060 */	DIG,
62 	/* '1' 0x31 0061 */	DIG,
63 	/* '2' 0x32 0062 */	DIG,
64 	/* '3' 0x33 0063 */	DIG,
65 	/* '4' 0x34 0064 */	DIG,
66 	/* '5' 0x35 0065 */	DIG,
67 	/* '6' 0x36 0066 */	DIG,
68 	/* '7' 0x37 0067 */	DIG,
69 	/* '8' 0x38 0070 */	DIG,
70 	/* '9' 0x39 0071 */	DIG,
71 	/* ':' 0x3a 0072 */	COLON,
72 	/* ';' 0x3b 0073 */	SEMI,
73 	/* '<' 0x3c 0074 */	LSH,
74 	/* '=' 0x3d 0075 */	BADCHAR,
75 	/* '>' 0x3e 0076 */	RSH,
76 	/* '?' 0x3f 0077 */	BADCHAR,
77 	/* '@' 0x40 0100 */	BADCHAR,
78 	/* 'A' 0x41 0101 */	ALPH,
79 	/* 'B' 0x42 0102 */	ALPH,
80 	/* 'C' 0x43 0103 */	ALPH,
81 	/* 'D' 0x44 0104 */	ALPH,
82 	/* 'E' 0x45 0105 */	ALPH,
83 	/* 'F' 0x46 0106 */	ALPH,
84 	/* 'G' 0x47 0107 */	ALPH,
85 	/* 'H' 0x48 0110 */	ALPH,
86 	/* 'I' 0x49 0111 */	ALPH,
87 	/* 'J' 0x4a 0112 */	ALPH,
88 	/* 'K' 0x4b 0113 */	ALPH,
89 	/* 'L' 0x4c 0114 */	ALPH,
90 	/* 'M' 0x4d 0115 */	ALPH,
91 	/* 'N' 0x4e 0116 */	ALPH,
92 	/* 'O' 0x4f 0117 */	ALPH,
93 	/* 'P' 0x50 0120 */	ALPH,
94 	/* 'Q' 0x51 0121 */	ALPH,
95 	/* 'R' 0x52 0122 */	ALPH,
96 	/* 'S' 0x53 0123 */	ALPH,
97 	/* 'T' 0x54 0124 */	ALPH,
98 	/* 'U' 0x55 0125 */	ALPH,
99 	/* 'V' 0x56 0126 */	ALPH,
100 	/* 'W' 0x57 0127 */	ALPH,
101 	/* 'X' 0x58 0130 */	ALPH,
102 	/* 'Y' 0x59 0131 */	ALPH,
103 	/* 'Z' 0x5a 0132 */	ALPH,
104 	/* '[' 0x5b 0133 */	LB,
105 	/* '\\' 0x5c 0134 */	BADCHAR,
106 	/* ']' 0x5d 0135 */	RB,
107 	/* '^' 0x5e 0136 */	XOR,
108 	/* '_' 0x5f 0137 */	ALPH,
109 	/* '`' 0x60 0140 */	SIZEQUOTE,
110 	/* 'a' 0x61 0141 */	ALPH,
111 	/* 'b' 0x62 0142 */	ALPH,
112 	/* 'c' 0x63 0143 */	ALPH,
113 	/* 'd' 0x64 0144 */	ALPH,
114 	/* 'e' 0x65 0145 */	ALPH,
115 	/* 'f' 0x66 0146 */	ALPH,
116 	/* 'g' 0x67 0147 */	ALPH,
117 	/* 'h' 0x68 0150 */	ALPH,
118 	/* 'i' 0x69 0151 */	ALPH,
119 	/* 'j' 0x6a 0152 */	ALPH,
120 	/* 'k' 0x6b 0153 */	ALPH,
121 	/* 'l' 0x6c 0154 */	ALPH,
122 	/* 'm' 0x6d 0155 */	ALPH,
123 	/* 'n' 0x6e 0156 */	ALPH,
124 	/* 'o' 0x6f 0157 */	ALPH,
125 	/* 'p' 0x70 0160 */	ALPH,
126 	/* 'q' 0x71 0161 */	ALPH,
127 	/* 'r' 0x72 0162 */	ALPH,
128 	/* 's' 0x73 0163 */	ALPH,
129 	/* 't' 0x74 0164 */	ALPH,
130 	/* 'u' 0x75 0165 */	ALPH,
131 	/* 'v' 0x76 0166 */	ALPH,
132 	/* 'w' 0x77 0167 */	ALPH,
133 	/* 'x' 0x78 0170 */	ALPH,
134 	/* 'y' 0x79 0171 */	ALPH,
135 	/* 'z' 0x7a 0172 */	ALPH,
136 	/* '{' 0x7b 0173 */	BADCHAR,
137 	/* '|' 0x7c 0174 */	IOR,
138 	/* '}' 0x7d 0175 */	BADCHAR,
139 	/* '~' 0x7e 0176 */	TILDE,
140 	/* '^[' 0x7f 0177 */	BADCHAR,
141 0
142 };
143 
144 readonly short charsets[] = {
145 	/* '^@' 0x00 0000 */	0,
146 	/* '^A' 0x01 0001 */	0,
147 	/* '^B' 0x02 0002 */	0,
148 	/* '^C' 0x03 0003 */	0,
149 	/* '^D' 0x04 0004 */	0,
150 	/* '^E' 0x05 0005 */	0,
151 	/* '^F' 0x06 0006 */	0,
152 	/* '^G' 0x07 0007 */	0,
153 	/* '\b' 0x08 0010 */	0,
154 	/* '\t' 0x09 0011 */	SPACE,
155 	/* '\n' 0x0a 0012 */	STRESCAPE,
156 	/* '^K' 0x0b 0013 */	0,
157 	/* '\f' 0x0c 0014 */	0,
158 	/* '\r' 0x0d 0015 */	0,
159 	/* '^N' 0x0e 0016 */	0,
160 	/* '^O' 0x0f 0017 */	0,
161 	/* '^P' 0x10 0020 */	0,
162 	/* '^Q' 0x11 0021 */	0,
163 	/* '^R' 0x12 0022 */	0,
164 	/* '^S' 0x13 0023 */	0,
165 	/* '^T' 0x14 0024 */	0,
166 	/* '^U' 0x15 0025 */	0,
167 	/* '^V' 0x16 0026 */	0,
168 	/* '^W' 0x17 0027 */	0,
169 	/* '^X' 0x18 0030 */	0,
170 	/* '^Y' 0x19 0031 */	0,
171 	/* '^Z' 0x1a 0032 */	0,
172 	/* '^[' 0x1b 0033 */	0,
173 	/* '^\' 0x1c 0034 */	0,
174 	/* '^]' 0x1d 0035 */	0,
175 	/* '^^' 0x1e 0036 */	0,
176 	/* '^_' 0x1f 0037 */	0,
177 	/* ' ' 0x20 0040 */	SPACE,
178 	/* '!' 0x21 0041 */	0,
179 	/* '"' 0x22 0042 */	STRESCAPE,
180 	/* '#' 0x23 0043 */	0,
181 	/* '$' 0x24 0044 */	ALPHA,
182 	/* '%' 0x25 0045 */	0,
183 	/* '&' 0x26 0046 */	0,
184 	/* ''' 0x27 0047 */	0,
185 	/* '(' 0x28 0050 */	0,
186 	/* ')' 0x29 0051 */	0,
187 	/* '*' 0x2a 0052 */	0,
188 	/* '+' 0x2b 0053 */	SIGN,
189 	/* ',' 0x2c 0054 */	0,
190 	/* '-' 0x2d 0055 */	SIGN,
191 	/* '.' 0x2e 0056 */	POINT+ALPHA,
192 	/* '/' 0x2f 0057 */	0,
193 	/* '0' 0x30 0060 */	DIGIT+REGDIGIT+OCTDIGIT,
194 	/* '1' 0x31 0061 */	DIGIT+REGDIGIT+OCTDIGIT,
195 	/* '2' 0x32 0062 */	DIGIT+REGDIGIT+OCTDIGIT,
196 	/* '3' 0x33 0063 */	DIGIT+REGDIGIT+OCTDIGIT,
197 	/* '4' 0x34 0064 */	DIGIT+REGDIGIT+OCTDIGIT,
198 	/* '5' 0x35 0065 */	DIGIT+REGDIGIT+OCTDIGIT,
199 	/* '6' 0x36 0066 */	DIGIT+OCTDIGIT,
200 	/* '7' 0x37 0067 */	DIGIT+OCTDIGIT,
201 	/* '8' 0x38 0070 */	DIGIT,
202 	/* '9' 0x39 0071 */	DIGIT,
203 	/* ':' 0x3a 0072 */	0,
204 	/* ';' 0x3b 0073 */	0,
205 	/* '<' 0x3c 0074 */	0,
206 	/* '=' 0x3d 0075 */	0,
207 	/* '>' 0x3e 0076 */	0,
208 	/* '?' 0x3f 0077 */	0,
209 	/* '@' 0x40 0100 */	0,
210 	/* 'A' 0x41 0101 */	ALPHA+HEXUDIGIT,
211 	/* 'B' 0x42 0102 */	ALPHA+HEXUDIGIT+SZSPECBEGIN,
212 	/* 'C' 0x43 0103 */	ALPHA+HEXUDIGIT,
213 	/* 'D' 0x44 0104 */	ALPHA+HEXUDIGIT+FLOATEXP+FLOATFLAG,
214 	/* 'E' 0x45 0105 */	ALPHA+HEXUDIGIT+FLOATEXP,
215 	/* 'F' 0x46 0106 */	ALPHA+HEXUDIGIT+FLOATFLAG+FLOATEXP,
216 	/* 'G' 0x47 0107 */	ALPHA+FLOATFLAG+FLOATEXP,
217 	/* 'H' 0x48 0110 */	ALPHA+FLOATFLAG+FLOATEXP,
218 	/* 'I' 0x49 0111 */	ALPHA,
219 	/* 'J' 0x4a 0112 */	ALPHA,
220 	/* 'K' 0x4b 0113 */	ALPHA,
221 	/* 'L' 0x4c 0114 */	ALPHA+SZSPECBEGIN,
222 	/* 'M' 0x4d 0115 */	ALPHA,
223 	/* 'N' 0x4e 0116 */	ALPHA,
224 	/* 'O' 0x4f 0117 */	ALPHA,
225 	/* 'P' 0x50 0120 */	ALPHA,
226 	/* 'Q' 0x51 0121 */	ALPHA,
227 	/* 'R' 0x52 0122 */	ALPHA,
228 	/* 'S' 0x53 0123 */	ALPHA,
229 	/* 'T' 0x54 0124 */	ALPHA,
230 	/* 'U' 0x55 0125 */	ALPHA,
231 	/* 'V' 0x56 0126 */	ALPHA,
232 	/* 'W' 0x57 0127 */	ALPHA+SZSPECBEGIN,
233 	/* 'X' 0x58 0130 */	ALPHA+HEXFLAG,
234 	/* 'Y' 0x59 0131 */	ALPHA,
235 	/* 'Z' 0x5a 0132 */	ALPHA,
236 	/* '[' 0x5b 0133 */	0,
237 	/* '\\' 0x5c 0134 */	STRESCAPE,
238 	/* ']' 0x5d 0135 */	0,
239 	/* '^' 0x5e 0136 */	0,
240 	/* '_' 0x5f 0137 */	ALPHA,
241 	/* '`' 0x60 0140 */	0,
242 	/* 'a' 0x61 0141 */	ALPHA+HEXLDIGIT,
243 	/* 'b' 0x62 0142 */	ALPHA+HEXLDIGIT+BSESCAPE+SZSPECBEGIN,
244 	/* 'c' 0x63 0143 */	ALPHA+HEXLDIGIT,
245 	/* 'd' 0x64 0144 */	ALPHA+HEXLDIGIT+FLOATEXP+FLOATFLAG,
246 	/* 'e' 0x65 0145 */	ALPHA+HEXLDIGIT+FLOATEXP,
247 	/* 'f' 0x66 0146 */	ALPHA+HEXLDIGIT+BSESCAPE+FLOATEXP+FLOATFLAG,
248 	/* 'g' 0x67 0147 */	ALPHA+FLOATEXP+FLOATFLAG,
249 	/* 'h' 0x68 0150 */	ALPHA+FLOATEXP+FLOATFLAG,
250 	/* 'i' 0x69 0151 */	ALPHA,
251 	/* 'j' 0x6a 0152 */	ALPHA,
252 	/* 'k' 0x6b 0153 */	ALPHA,
253 	/* 'l' 0x6c 0154 */	ALPHA+SZSPECBEGIN,
254 	/* 'm' 0x6d 0155 */	ALPHA,
255 	/* 'n' 0x6e 0156 */	ALPHA+BSESCAPE,
256 	/* 'o' 0x6f 0157 */	ALPHA,
257 	/* 'p' 0x70 0160 */	ALPHA,
258 	/* 'q' 0x71 0161 */	ALPHA,
259 	/* 'r' 0x72 0162 */	ALPHA+BSESCAPE,
260 	/* 's' 0x73 0163 */	ALPHA,
261 	/* 't' 0x74 0164 */	ALPHA+BSESCAPE,
262 	/* 'u' 0x75 0165 */	ALPHA,
263 	/* 'v' 0x76 0166 */	ALPHA,
264 	/* 'w' 0x77 0167 */	ALPHA+SZSPECBEGIN,
265 	/* 'x' 0x78 0170 */	ALPHA+HEXFLAG,
266 	/* 'y' 0x79 0171 */	ALPHA,
267 	/* 'z' 0x7a 0172 */	ALPHA,
268 	/* '{' 0x7b 0173 */	0,
269 	/* '|' 0x7c 0174 */	0,
270 	/* '}' 0x7d 0175 */	0,
271 	/* '~' 0x7e 0176 */	0,
272 	/* '^[' 0x7f 0177 */	0,
273 0
274 };
275