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