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