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