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