1 /* Copyright (c) 1980 Regents of the University of California */ 2 /* "@(#)astoks.H 4.3 02/14/82" */ 3 /* 4 * Message to the wary: The order of tokens has been 5 * hand optimized and assigned to that all switch statements 6 * are implemented by a casel instruction on the VAX. 7 * there are 4 switch statements that have to be worried about: 8 * l) Per character switch in the character scanner (scan_dot_s) 9 * 2) Per token switch in the buffer manager (yylex) 10 * 3) Per keyword switch in the parser (yyparse) 11 * 4) Leading token switch for argments to opcodes 12 * 13 * You can't just add new tokens willy-nilly; make sure that you 14 * add them into the proper order! 15 */ 16 # define FIRSTTOKEN AWKFIXESME 17 18 /* 19 * Tokens between ISPACE and INSTn are used by the per keyword switch 20 */ 21 # define ISPACE AWKFIXESME 22 # define IBYTE AWKFIXESME 23 # define IWORD AWKFIXESME 24 # define IINT AWKFIXESME 25 # define ILONG AWKFIXESME 26 # define IQUAD AWKFIXESME 27 # define IOCTA AWKFIXESME 28 # define IDATA AWKFIXESME 29 # define IGLOBAL AWKFIXESME 30 # define ISET AWKFIXESME 31 # define ITEXT AWKFIXESME 32 # define ICOMM AWKFIXESME 33 # define ILCOMM AWKFIXESME 34 # define IFFLOAT AWKFIXESME 35 # define IDFLOAT AWKFIXESME 36 # define IGFLOAT AWKFIXESME 37 # define IHFLOAT AWKFIXESME 38 # define IORG AWKFIXESME 39 # define IASCII AWKFIXESME 40 # define IASCIZ AWKFIXESME 41 # define ILSYM AWKFIXESME 42 # define IFILE AWKFIXESME 43 # define ILINENO AWKFIXESME 44 # define IABORT AWKFIXESME 45 # define IFILL AWKFIXESME 46 /* 47 * Tokens between ISTAB and REG are used in the per token switch 48 */ 49 # define ISTAB AWKFIXESME 50 # define ISTABSTR AWKFIXESME 51 # define ISTABNONE AWKFIXESME 52 # define ISTABDOT AWKFIXESME 53 # define IJXXX AWKFIXESME 54 # define IALIGN AWKFIXESME 55 # define INST0 AWKFIXESME 56 # define INSTn AWKFIXESME 57 58 # define BFINT AWKFIXESME 59 # define PARSEEOF AWKFIXESME 60 # define ILINESKIP AWKFIXESME 61 # define VOID AWKFIXESME 62 # define SKIP AWKFIXESME 63 # define INT AWKFIXESME 64 # define BIGNUM AWKFIXESME 65 # define NAME AWKFIXESME 66 # define STRING AWKFIXESME 67 /* 68 * Tokens between SIZESPEC and REGOP are used in the instruction 69 * argument switch 70 */ 71 # define SIZESPEC AWKFIXESME 72 # define REG AWKFIXESME 73 # define MUL AWKFIXESME 74 # define LITOP AWKFIXESME 75 # define LP AWKFIXESME 76 # define MP AWKFIXESME 77 /* 78 * Tokens between REGOP and DIV are used in the per character switch 79 */ 80 # define NEEDSBUF AWKFIXESME /*signal refilling the input buffer*/ 81 # define REGOP AWKFIXESME /*the percent sign*/ 82 # define NL AWKFIXESME 83 # define SCANEOF AWKFIXESME 84 # define BADCHAR AWKFIXESME 85 # define SP AWKFIXESME 86 # define ALPH AWKFIXESME 87 # define DIG AWKFIXESME 88 # define SQ AWKFIXESME 89 # define DQ AWKFIXESME 90 # define SH AWKFIXESME 91 # define LSH AWKFIXESME 92 # define RSH AWKFIXESME 93 # define MINUS AWKFIXESME 94 # define SIZEQUOTE AWKFIXESME 95 /* 96 * Tokens between XOR and RP are used at random (primarily by the 97 * expression analyzer), and not used in any switch 98 */ 99 # define XOR AWKFIXESME 100 # define DIV AWKFIXESME 101 102 # define SEMI AWKFIXESME 103 # define COLON AWKFIXESME 104 # define PLUS AWKFIXESME 105 # define IOR AWKFIXESME 106 # define AND AWKFIXESME 107 # define TILDE AWKFIXESME 108 # define ORNOT AWKFIXESME 109 # define CM AWKFIXESME 110 # define LB AWKFIXESME 111 # define RB AWKFIXESME 112 # define RP AWKFIXESME 113 114 # define LASTTOKEN AWKFIXESME 115