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