xref: /csrg-svn/old/as.vax/asscan3.c (revision 19830)
15799Srrh /*
2*19830Sdist  * Copyright (c) 1982 Regents of the University of California.
3*19830Sdist  * All rights reserved.  The Berkeley software License Agreement
4*19830Sdist  * specifies the terms and conditions for redistribution.
55799Srrh  */
6*19830Sdist 
75799Srrh #ifndef lint
8*19830Sdist static char sccsid[] = "@(#)asscan3.c	5.1 (Berkeley) 04/30/85";
95799Srrh #endif not lint
105799Srrh 
115799Srrh #include "asscanl.h"
125799Srrh 
135799Srrh readonly short type[] = {
145799Srrh 
155799Srrh /*hit the hard end of file*/	SCANEOF,
165799Srrh 	/* '^@' 0x00 0000 */	SP,
175799Srrh 	/* '^A' 0x01 0001 */	BADCHAR,
185799Srrh 	/* '^B' 0x02 0002 */	BADCHAR,
195799Srrh 	/* '^C' 0x03 0003 */	BADCHAR,
205799Srrh 	/* '^D' 0x04 0004 */	BADCHAR,
215799Srrh 	/* '^E' 0x05 0005 */	BADCHAR,
225799Srrh 	/* '^F' 0x06 0006 */	BADCHAR,
235799Srrh 	/* '^G' 0x07 0007 */	BADCHAR,
245799Srrh 	/* '\b' 0x08 0010 */	BADCHAR,
255799Srrh 	/* '\t' 0x09 0011 */	SP,
265799Srrh 	/* '\n' 0x0a 0012 */	NL,
275799Srrh 	/* '^K' 0x0b 0013 */	BADCHAR,
285799Srrh 	/* '\f' 0x0c 0014 */	BADCHAR,
295799Srrh 	/* '\r' 0x0d 0015 */	SP,
305799Srrh 	/* '^N' 0x0e 0016 */	BADCHAR,
315799Srrh 	/* '^O' 0x0f 0017 */	BADCHAR,
325799Srrh 	/* '^P' 0x10 0020 */	BADCHAR,
335799Srrh 	/* '^Q' 0x11 0021 */	BADCHAR,
345799Srrh 	/* '^R' 0x12 0022 */	BADCHAR,
355799Srrh 	/* '^S' 0x13 0023 */	BADCHAR,
365799Srrh 	/* '^T' 0x14 0024 */	BADCHAR,
375799Srrh 	/* '^U' 0x15 0025 */	BADCHAR,
385799Srrh 	/* '^V' 0x16 0026 */	BADCHAR,
395799Srrh 	/* '^W' 0x17 0027 */	BADCHAR,
405799Srrh 	/* '^X' 0x18 0030 */	BADCHAR,
415799Srrh 	/* '^Y' 0x19 0031 */	BADCHAR,
425799Srrh 	/* '^Z' 0x1a 0032 */	BADCHAR,
435799Srrh 	/* '^[' 0x1b 0033 */	BADCHAR,
445799Srrh 	/* '^\' 0x1c 0034 */	BADCHAR,
455799Srrh 	/* '^]' 0x1d 0035 */	BADCHAR,
465799Srrh 	/* '^^' 0x1e 0036 */	BADCHAR,
475799Srrh 	/* '^_' 0x1f 0037 */	BADCHAR,
485799Srrh 	/* ' ' 0x20 0040 */	SP,
495799Srrh 	/* '!' 0x21 0041 */	ORNOT,
505799Srrh 	/* '"' 0x22 0042 */	DQ,
515799Srrh 	/* '#' 0x23 0043 */	SH,
525799Srrh 	/* '$' 0x24 0044 */	LITOP,
535799Srrh 	/* '%' 0x25 0045 */	REGOP,
545799Srrh 	/* '&' 0x26 0046 */	AND,
555799Srrh 	/* ''' 0x27 0047 */	SQ,
565799Srrh 	/* '(' 0x28 0050 */	LP,
575799Srrh 	/* ')' 0x29 0051 */	RP,
585799Srrh 	/* '*' 0x2a 0052 */	MUL,
595799Srrh 	/* '+' 0x2b 0053 */	PLUS,
605799Srrh 	/* ',' 0x2c 0054 */	CM,
615799Srrh 	/* '-' 0x2d 0055 */	MINUS,
625799Srrh 	/* '.' 0x2e 0056 */	ALPH,
635799Srrh 	/* '/' 0x2f 0057 */	DIV,
645799Srrh 	/* '0' 0x30 0060 */	DIG,
655799Srrh 	/* '1' 0x31 0061 */	DIG,
665799Srrh 	/* '2' 0x32 0062 */	DIG,
675799Srrh 	/* '3' 0x33 0063 */	DIG,
685799Srrh 	/* '4' 0x34 0064 */	DIG,
695799Srrh 	/* '5' 0x35 0065 */	DIG,
705799Srrh 	/* '6' 0x36 0066 */	DIG,
715799Srrh 	/* '7' 0x37 0067 */	DIG,
725799Srrh 	/* '8' 0x38 0070 */	DIG,
735799Srrh 	/* '9' 0x39 0071 */	DIG,
745799Srrh 	/* ':' 0x3a 0072 */	COLON,
755799Srrh 	/* ';' 0x3b 0073 */	SEMI,
765799Srrh 	/* '<' 0x3c 0074 */	LSH,
775799Srrh 	/* '=' 0x3d 0075 */	BADCHAR,
785799Srrh 	/* '>' 0x3e 0076 */	RSH,
795799Srrh 	/* '?' 0x3f 0077 */	BADCHAR,
805799Srrh 	/* '@' 0x40 0100 */	BADCHAR,
815799Srrh 	/* 'A' 0x41 0101 */	ALPH,
825799Srrh 	/* 'B' 0x42 0102 */	ALPH,
835799Srrh 	/* 'C' 0x43 0103 */	ALPH,
845799Srrh 	/* 'D' 0x44 0104 */	ALPH,
855799Srrh 	/* 'E' 0x45 0105 */	ALPH,
865799Srrh 	/* 'F' 0x46 0106 */	ALPH,
875799Srrh 	/* 'G' 0x47 0107 */	ALPH,
885799Srrh 	/* 'H' 0x48 0110 */	ALPH,
895799Srrh 	/* 'I' 0x49 0111 */	ALPH,
905799Srrh 	/* 'J' 0x4a 0112 */	ALPH,
915799Srrh 	/* 'K' 0x4b 0113 */	ALPH,
925799Srrh 	/* 'L' 0x4c 0114 */	ALPH,
935799Srrh 	/* 'M' 0x4d 0115 */	ALPH,
945799Srrh 	/* 'N' 0x4e 0116 */	ALPH,
955799Srrh 	/* 'O' 0x4f 0117 */	ALPH,
965799Srrh 	/* 'P' 0x50 0120 */	ALPH,
975799Srrh 	/* 'Q' 0x51 0121 */	ALPH,
985799Srrh 	/* 'R' 0x52 0122 */	ALPH,
995799Srrh 	/* 'S' 0x53 0123 */	ALPH,
1005799Srrh 	/* 'T' 0x54 0124 */	ALPH,
1015799Srrh 	/* 'U' 0x55 0125 */	ALPH,
1025799Srrh 	/* 'V' 0x56 0126 */	ALPH,
1035799Srrh 	/* 'W' 0x57 0127 */	ALPH,
1045799Srrh 	/* 'X' 0x58 0130 */	ALPH,
1055799Srrh 	/* 'Y' 0x59 0131 */	ALPH,
1065799Srrh 	/* 'Z' 0x5a 0132 */	ALPH,
1075799Srrh 	/* '[' 0x5b 0133 */	LB,
1085799Srrh 	/* '\\' 0x5c 0134 */	BADCHAR,
1095799Srrh 	/* ']' 0x5d 0135 */	RB,
1105799Srrh 	/* '^' 0x5e 0136 */	XOR,
1115799Srrh 	/* '_' 0x5f 0137 */	ALPH,
1125799Srrh 	/* '`' 0x60 0140 */	SIZEQUOTE,
1135799Srrh 	/* 'a' 0x61 0141 */	ALPH,
1145799Srrh 	/* 'b' 0x62 0142 */	ALPH,
1155799Srrh 	/* 'c' 0x63 0143 */	ALPH,
1165799Srrh 	/* 'd' 0x64 0144 */	ALPH,
1175799Srrh 	/* 'e' 0x65 0145 */	ALPH,
1185799Srrh 	/* 'f' 0x66 0146 */	ALPH,
1195799Srrh 	/* 'g' 0x67 0147 */	ALPH,
1205799Srrh 	/* 'h' 0x68 0150 */	ALPH,
1215799Srrh 	/* 'i' 0x69 0151 */	ALPH,
1225799Srrh 	/* 'j' 0x6a 0152 */	ALPH,
1235799Srrh 	/* 'k' 0x6b 0153 */	ALPH,
1245799Srrh 	/* 'l' 0x6c 0154 */	ALPH,
1255799Srrh 	/* 'm' 0x6d 0155 */	ALPH,
1265799Srrh 	/* 'n' 0x6e 0156 */	ALPH,
1275799Srrh 	/* 'o' 0x6f 0157 */	ALPH,
1285799Srrh 	/* 'p' 0x70 0160 */	ALPH,
1295799Srrh 	/* 'q' 0x71 0161 */	ALPH,
1305799Srrh 	/* 'r' 0x72 0162 */	ALPH,
1315799Srrh 	/* 's' 0x73 0163 */	ALPH,
1325799Srrh 	/* 't' 0x74 0164 */	ALPH,
1335799Srrh 	/* 'u' 0x75 0165 */	ALPH,
1345799Srrh 	/* 'v' 0x76 0166 */	ALPH,
1355799Srrh 	/* 'w' 0x77 0167 */	ALPH,
1365799Srrh 	/* 'x' 0x78 0170 */	ALPH,
1375799Srrh 	/* 'y' 0x79 0171 */	ALPH,
1385799Srrh 	/* 'z' 0x7a 0172 */	ALPH,
1395799Srrh 	/* '{' 0x7b 0173 */	BADCHAR,
1405799Srrh 	/* '|' 0x7c 0174 */	IOR,
1415799Srrh 	/* '}' 0x7d 0175 */	BADCHAR,
1425799Srrh 	/* '~' 0x7e 0176 */	TILDE,
1435799Srrh 	/* '^[' 0x7f 0177 */	BADCHAR,
1445799Srrh 0
1455799Srrh };
1465799Srrh 
1475799Srrh readonly short charsets[] = {
1485799Srrh 	/* '^@' 0x00 0000 */	0,
1495799Srrh 	/* '^A' 0x01 0001 */	0,
1505799Srrh 	/* '^B' 0x02 0002 */	0,
1515799Srrh 	/* '^C' 0x03 0003 */	0,
1525799Srrh 	/* '^D' 0x04 0004 */	0,
1535799Srrh 	/* '^E' 0x05 0005 */	0,
1545799Srrh 	/* '^F' 0x06 0006 */	0,
1555799Srrh 	/* '^G' 0x07 0007 */	0,
1565799Srrh 	/* '\b' 0x08 0010 */	0,
1575799Srrh 	/* '\t' 0x09 0011 */	SPACE,
1585799Srrh 	/* '\n' 0x0a 0012 */	STRESCAPE,
1595799Srrh 	/* '^K' 0x0b 0013 */	0,
1605799Srrh 	/* '\f' 0x0c 0014 */	0,
1615799Srrh 	/* '\r' 0x0d 0015 */	0,
1625799Srrh 	/* '^N' 0x0e 0016 */	0,
1635799Srrh 	/* '^O' 0x0f 0017 */	0,
1645799Srrh 	/* '^P' 0x10 0020 */	0,
1655799Srrh 	/* '^Q' 0x11 0021 */	0,
1665799Srrh 	/* '^R' 0x12 0022 */	0,
1675799Srrh 	/* '^S' 0x13 0023 */	0,
1685799Srrh 	/* '^T' 0x14 0024 */	0,
1695799Srrh 	/* '^U' 0x15 0025 */	0,
1705799Srrh 	/* '^V' 0x16 0026 */	0,
1715799Srrh 	/* '^W' 0x17 0027 */	0,
1725799Srrh 	/* '^X' 0x18 0030 */	0,
1735799Srrh 	/* '^Y' 0x19 0031 */	0,
1745799Srrh 	/* '^Z' 0x1a 0032 */	0,
1755799Srrh 	/* '^[' 0x1b 0033 */	0,
1765799Srrh 	/* '^\' 0x1c 0034 */	0,
1775799Srrh 	/* '^]' 0x1d 0035 */	0,
1785799Srrh 	/* '^^' 0x1e 0036 */	0,
1795799Srrh 	/* '^_' 0x1f 0037 */	0,
1805799Srrh 	/* ' ' 0x20 0040 */	SPACE,
1815799Srrh 	/* '!' 0x21 0041 */	0,
1825799Srrh 	/* '"' 0x22 0042 */	STRESCAPE,
1835799Srrh 	/* '#' 0x23 0043 */	0,
1845799Srrh 	/* '$' 0x24 0044 */	ALPHA,
1855799Srrh 	/* '%' 0x25 0045 */	0,
1865799Srrh 	/* '&' 0x26 0046 */	0,
1875799Srrh 	/* ''' 0x27 0047 */	0,
1885799Srrh 	/* '(' 0x28 0050 */	0,
1895799Srrh 	/* ')' 0x29 0051 */	0,
1905799Srrh 	/* '*' 0x2a 0052 */	0,
1915799Srrh 	/* '+' 0x2b 0053 */	SIGN,
1925799Srrh 	/* ',' 0x2c 0054 */	0,
1935799Srrh 	/* '-' 0x2d 0055 */	SIGN,
1945799Srrh 	/* '.' 0x2e 0056 */	POINT+ALPHA,
1955799Srrh 	/* '/' 0x2f 0057 */	0,
1965799Srrh 	/* '0' 0x30 0060 */	DIGIT+REGDIGIT+OCTDIGIT,
1975799Srrh 	/* '1' 0x31 0061 */	DIGIT+REGDIGIT+OCTDIGIT,
1985799Srrh 	/* '2' 0x32 0062 */	DIGIT+REGDIGIT+OCTDIGIT,
1995799Srrh 	/* '3' 0x33 0063 */	DIGIT+REGDIGIT+OCTDIGIT,
2005799Srrh 	/* '4' 0x34 0064 */	DIGIT+REGDIGIT+OCTDIGIT,
2015799Srrh 	/* '5' 0x35 0065 */	DIGIT+REGDIGIT+OCTDIGIT,
2025799Srrh 	/* '6' 0x36 0066 */	DIGIT+OCTDIGIT,
2035799Srrh 	/* '7' 0x37 0067 */	DIGIT+OCTDIGIT,
2045799Srrh 	/* '8' 0x38 0070 */	DIGIT,
2055799Srrh 	/* '9' 0x39 0071 */	DIGIT,
2065799Srrh 	/* ':' 0x3a 0072 */	0,
2075799Srrh 	/* ';' 0x3b 0073 */	0,
2085799Srrh 	/* '<' 0x3c 0074 */	0,
2095799Srrh 	/* '=' 0x3d 0075 */	0,
2105799Srrh 	/* '>' 0x3e 0076 */	0,
2115799Srrh 	/* '?' 0x3f 0077 */	0,
2125799Srrh 	/* '@' 0x40 0100 */	0,
2135799Srrh 	/* 'A' 0x41 0101 */	ALPHA+HEXUDIGIT,
2145799Srrh 	/* 'B' 0x42 0102 */	ALPHA+HEXUDIGIT+SZSPECBEGIN,
2155799Srrh 	/* 'C' 0x43 0103 */	ALPHA+HEXUDIGIT,
2165799Srrh 	/* 'D' 0x44 0104 */	ALPHA+HEXUDIGIT+FLOATEXP+FLOATFLAG,
2175799Srrh 	/* 'E' 0x45 0105 */	ALPHA+HEXUDIGIT+FLOATEXP,
2185799Srrh 	/* 'F' 0x46 0106 */	ALPHA+HEXUDIGIT+FLOATFLAG+FLOATEXP,
2195799Srrh 	/* 'G' 0x47 0107 */	ALPHA+FLOATFLAG+FLOATEXP,
2205799Srrh 	/* 'H' 0x48 0110 */	ALPHA+FLOATFLAG+FLOATEXP,
2215799Srrh 	/* 'I' 0x49 0111 */	ALPHA,
2225799Srrh 	/* 'J' 0x4a 0112 */	ALPHA,
2235799Srrh 	/* 'K' 0x4b 0113 */	ALPHA,
2245799Srrh 	/* 'L' 0x4c 0114 */	ALPHA+SZSPECBEGIN,
2255799Srrh 	/* 'M' 0x4d 0115 */	ALPHA,
2265799Srrh 	/* 'N' 0x4e 0116 */	ALPHA,
2275799Srrh 	/* 'O' 0x4f 0117 */	ALPHA,
2285799Srrh 	/* 'P' 0x50 0120 */	ALPHA,
2295799Srrh 	/* 'Q' 0x51 0121 */	ALPHA,
2305799Srrh 	/* 'R' 0x52 0122 */	ALPHA,
2315799Srrh 	/* 'S' 0x53 0123 */	ALPHA,
2325799Srrh 	/* 'T' 0x54 0124 */	ALPHA,
2335799Srrh 	/* 'U' 0x55 0125 */	ALPHA,
2345799Srrh 	/* 'V' 0x56 0126 */	ALPHA,
2355799Srrh 	/* 'W' 0x57 0127 */	ALPHA+SZSPECBEGIN,
2365799Srrh 	/* 'X' 0x58 0130 */	ALPHA+HEXFLAG,
2375799Srrh 	/* 'Y' 0x59 0131 */	ALPHA,
2385799Srrh 	/* 'Z' 0x5a 0132 */	ALPHA,
2395799Srrh 	/* '[' 0x5b 0133 */	0,
2405799Srrh 	/* '\\' 0x5c 0134 */	STRESCAPE,
2415799Srrh 	/* ']' 0x5d 0135 */	0,
2425799Srrh 	/* '^' 0x5e 0136 */	0,
2435799Srrh 	/* '_' 0x5f 0137 */	ALPHA,
2445799Srrh 	/* '`' 0x60 0140 */	0,
2455799Srrh 	/* 'a' 0x61 0141 */	ALPHA+HEXLDIGIT,
2465799Srrh 	/* 'b' 0x62 0142 */	ALPHA+HEXLDIGIT+BSESCAPE+SZSPECBEGIN,
2475799Srrh 	/* 'c' 0x63 0143 */	ALPHA+HEXLDIGIT,
2485799Srrh 	/* 'd' 0x64 0144 */	ALPHA+HEXLDIGIT+FLOATEXP+FLOATFLAG,
2495799Srrh 	/* 'e' 0x65 0145 */	ALPHA+HEXLDIGIT+FLOATEXP,
2505799Srrh 	/* 'f' 0x66 0146 */	ALPHA+HEXLDIGIT+BSESCAPE+FLOATEXP+FLOATFLAG,
2515799Srrh 	/* 'g' 0x67 0147 */	ALPHA+FLOATEXP+FLOATFLAG,
2525799Srrh 	/* 'h' 0x68 0150 */	ALPHA+FLOATEXP+FLOATFLAG,
2535799Srrh 	/* 'i' 0x69 0151 */	ALPHA,
2545799Srrh 	/* 'j' 0x6a 0152 */	ALPHA,
2555799Srrh 	/* 'k' 0x6b 0153 */	ALPHA,
2565799Srrh 	/* 'l' 0x6c 0154 */	ALPHA+SZSPECBEGIN,
2575799Srrh 	/* 'm' 0x6d 0155 */	ALPHA,
2585799Srrh 	/* 'n' 0x6e 0156 */	ALPHA+BSESCAPE,
2595799Srrh 	/* 'o' 0x6f 0157 */	ALPHA,
2605799Srrh 	/* 'p' 0x70 0160 */	ALPHA,
2615799Srrh 	/* 'q' 0x71 0161 */	ALPHA,
2625799Srrh 	/* 'r' 0x72 0162 */	ALPHA+BSESCAPE,
2635799Srrh 	/* 's' 0x73 0163 */	ALPHA,
2645799Srrh 	/* 't' 0x74 0164 */	ALPHA+BSESCAPE,
2655799Srrh 	/* 'u' 0x75 0165 */	ALPHA,
2665799Srrh 	/* 'v' 0x76 0166 */	ALPHA,
2675799Srrh 	/* 'w' 0x77 0167 */	ALPHA+SZSPECBEGIN,
2685799Srrh 	/* 'x' 0x78 0170 */	ALPHA+HEXFLAG,
2695799Srrh 	/* 'y' 0x79 0171 */	ALPHA,
2705799Srrh 	/* 'z' 0x7a 0172 */	ALPHA,
2715799Srrh 	/* '{' 0x7b 0173 */	0,
2725799Srrh 	/* '|' 0x7c 0174 */	0,
2735799Srrh 	/* '}' 0x7d 0175 */	0,
2745799Srrh 	/* '~' 0x7e 0176 */	0,
2755799Srrh 	/* '^[' 0x7f 0177 */	0,
2765799Srrh 0
2775799Srrh };
278