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