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