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