1 /* Copyright (c) 1980 Regents of the University of California */ 2 /* "@(#)astoks.H 4.4 6/30/83" */ 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 IDATA AWKFIXESME 28 # define IGLOBAL AWKFIXESME 29 # define ISET AWKFIXESME 30 # define ITEXT AWKFIXESME 31 # define ICOMM AWKFIXESME 32 # define ILCOMM AWKFIXESME 33 # define IFFLOAT AWKFIXESME 34 # define IDFLOAT AWKFIXESME 35 # define IORG AWKFIXESME 36 # define IASCII AWKFIXESME 37 # define IASCIZ AWKFIXESME 38 # define ILSYM AWKFIXESME 39 # define IFILE AWKFIXESME 40 # define ILINENO AWKFIXESME 41 # define IABORT AWKFIXESME 42 # define IFILL AWKFIXESME 43 /* 44 * Tokens between ISTAB and REG are used in the per token switch 45 */ 46 # define ISTAB AWKFIXESME 47 # define ISTABSTR AWKFIXESME 48 # define ISTABNONE AWKFIXESME 49 # define ISTABDOT AWKFIXESME 50 # define IJXXX AWKFIXESME 51 # define IALIGN AWKFIXESME 52 # define INST0 AWKFIXESME 53 # define INSTn AWKFIXESME 54 55 # define BFINT AWKFIXESME 56 # define PARSEEOF AWKFIXESME 57 # define ILINESKIP AWKFIXESME 58 # define VOID AWKFIXESME 59 # define SKIP AWKFIXESME 60 # define INT AWKFIXESME 61 # define BIGNUM AWKFIXESME 62 # define NAME AWKFIXESME 63 # define STRING AWKFIXESME 64 /* 65 * Tokens between SIZESPEC and REGOP are used in the instruction 66 * argument switch 67 */ 68 # define SIZESPEC AWKFIXESME 69 # define REG AWKFIXESME 70 # define MUL AWKFIXESME 71 # define LITOP AWKFIXESME 72 # define LP AWKFIXESME 73 # define MP AWKFIXESME 74 /* 75 * Tokens between REGOP and DIV are used in the per character switch 76 */ 77 # define REGOP AWKFIXESME /*the percent sign*/ 78 # define NL AWKFIXESME 79 # define SCANEOF AWKFIXESME 80 # define BADCHAR AWKFIXESME 81 # define SP AWKFIXESME 82 # define ALPH AWKFIXESME 83 # define DIG AWKFIXESME 84 # define SQ AWKFIXESME 85 # define DQ AWKFIXESME 86 # define SH AWKFIXESME 87 # define LSH AWKFIXESME 88 # define RSH AWKFIXESME 89 # define MINUS AWKFIXESME 90 # define SIZEQUOTE AWKFIXESME 91 /* 92 * Tokens between XOR and RP are used at random (primarily by the 93 * expression analyzer), and not used in any switch 94 */ 95 # define XOR AWKFIXESME 96 # define DIV AWKFIXESME 97 98 # define SEMI AWKFIXESME 99 # define COLON AWKFIXESME 100 # define PLUS AWKFIXESME 101 # define IOR AWKFIXESME 102 # define AND AWKFIXESME 103 # define TILDE AWKFIXESME 104 # define ORNOT AWKFIXESME 105 # define CM AWKFIXESME 106 # define LB AWKFIXESME 107 # define RB AWKFIXESME 108 # define RP AWKFIXESME 109 110 # define LASTTOKEN AWKFIXESME 111