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