xref: /csrg-svn/old/as.tahoe/astoks.H (revision 40598)
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