xref: /original-bsd/old/as.tahoe/astoks.H (revision ee7c2623)
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