|
|
1.1 root 1: /* -*- Mode: C -*- Begin node_classes.H */
2: /*
3: $Source: /usr3/lang/benson/work/stripped_cfront/RCS/node_classes.H,v $ $RCSfile: node_classes.H,v $
4: $Revision: 1.1 $ $Date: 89/11/20 08:50:41 $
5: $Author: benson $ $Locker: $
6: $State: Exp $
7: */
8:
9: #ifndef _node_classes
10: #define _node_classes
11:
12: enum discriminator_error {
13: discrim_none_valid = 0,
14: discrim_bad_index = -1,
15: discrim_inconsistent_node = -2,
16: };
17:
18: enum node_class {
19: nc_unused = 0,
20: nc_eof = 1,
21: nc_virt = 2,
22: nc_nlist = 3,
23: nc_gen = 4,
24: nc_vec = 5,
25: nc_ptr = 6,
26: nc_fct = 7,
27: nc_table = 8,
28: nc_basetype = 9,
29: nc_name = 10,
30: nc_expr = 11,
31: nc_stmt = 12,
32: nc_enumdef = 13,
33: nc_classdef = 14,
34: nc_baseclass = 15,
35: nc_iline = 16,
36: nc_ia = 17,
37: };
38:
39: /* searching this is slower than a directly indexed array,
40: but this is more maintainable. We can speed it up later. */
41:
42: #ifdef DEFINE_TOKEN_CLASS_TABLE
43: struct token_class {
44: TOK token;
45: node_class nclass;
46: } token_classes[] = {
47: { EOFTOK, nc_eof },
48: { ASM, nc_stmt },
49: { AUTO, nc_basetype },
50: { BREAK, nc_stmt },
51: { CASE, nc_stmt },
52: { CHAR, nc_basetype },
53: { CLASS, nc_classdef },
54: { CONTINUE, nc_stmt },
55: { DEFAULT, nc_stmt },
56: { DELETE, nc_expr },
57: { DO, nc_stmt },
58: { DOUBLE, nc_basetype },
59: { ELSE, nc_stmt },
60: { ENUM, nc_enumdef },
61: { EXTERN, nc_basetype },
62: { FLOAT, nc_basetype },
63: { FOR, nc_stmt },
64: { FORTRAN, nc_unused },
65: { FRIEND, nc_basetype },
66: { GOTO, nc_stmt },
67: { IF, nc_stmt },
68: { INT, nc_basetype },
69: { LONG, nc_basetype },
70: { NEW, nc_expr },
71: { OPERATOR, nc_fct },
72: { RETURN, nc_stmt },
73: { PUBLIC, nc_name },
74: { CONST, nc_basetype },
75: { REGISTER, nc_basetype },
76: { RETURN, nc_stmt },
77: { SHORT, nc_basetype },
78: { SIZEOF, nc_expr },
79: { STATIC, nc_basetype },
80: { STRUCT, nc_unused },
81: { SWITCH, nc_stmt },
82: { THIS, nc_expr },
83: { TYPEDEF, nc_basetype },
84: { UNION, nc_unused },
85: { UNSIGNED, nc_basetype },
86: { VOID, nc_basetype },
87: { WHILE, nc_stmt },
88: { LP, nc_unused },
89: { RP, nc_unused },
90: { LB, nc_unused },
91: { RB, nc_unused },
92: { REF, nc_expr },
93: { DOT, nc_expr },
94: { NOT, nc_expr },
95: { COMPL, nc_expr },
96: { INCR, nc_expr },
97: { DECR, nc_expr },
98: { MUL, nc_expr },
99: { DIV, nc_expr },
100: { AND, nc_expr },
101: { MOD, nc_expr },
102: { PLUS, nc_expr },
103: { MINUS, nc_expr },
104: { LS, nc_expr },
105: { RS, nc_expr },
106: { LT, nc_expr },
107: { LE, nc_expr },
108: { GT, nc_expr },
109: { GE, nc_expr },
110: { EQ, nc_expr },
111: { NE, nc_expr },
112: { ER, nc_expr },
113: { OR, nc_expr },
114: { ANDAND, nc_expr },
115: { OROR, nc_expr },
116: { QUEST, nc_expr },
117: { COLON, nc_unused },
118: { ASSIGN, nc_expr },
119: { CM, nc_expr },
120: { SM, nc_stmt },
121: { SM_PARAM, nc_stmt },
122: { LC, nc_unused },
123: { RC, nc_unused },
124: { INLINE, nc_fct },
125: { OVERLOAD, nc_gen },
126: { VIRTUAL, nc_fct }, /* but might be a basecl */
127: { COERCE, nc_unused },
128: { PROTECTED, nc_name },
129: { ID, nc_unused },
130: { STRING, nc_expr },
131: { ICON, nc_expr },
132: { FCON, nc_expr },
133: { CCON, nc_expr },
134: { NAME, nc_name }, /* but might be basecl */
135: { ZERO, nc_expr },
136: { ICTOR, nc_unused },
137: { IDTOR, nc_unused },
138: { ASOP, nc_expr },
139: { RELOP, nc_expr },
140: { EQUOP, nc_expr },
141: { DIVOP, nc_expr },
142: { SHIFTOP, nc_expr },
143: { ICOP, nc_expr },
144: { UNOP, nc_expr },
145: { TYPE, nc_basetype },
146: { UMINUS, nc_expr },
147: { FCT, nc_fct },
148: { CALL, nc_expr },
149: { VEC, nc_vec },
150: { DEREF, nc_expr },
151: { ADDROF, nc_expr },
152: { CAST, nc_expr },
153: { FIELD, nc_basetype },
154: { LABEL, nc_stmt },
155: { BLOCK, nc_stmt },
156: { DCL, nc_stmt },
157: { QUA, nc_unused },
158: { COBJ, nc_basetype },
159: { EOBJ, nc_basetype },
160: { TNAME, nc_name },
161: { ILIST, nc_expr },
162: { PTR, nc_ptr },
163: { ASPLUS, nc_expr },
164: { ASMINUS, nc_expr },
165: { ASMUL, nc_expr },
166: { ASDIV, nc_expr },
167: { ASMOD, nc_expr },
168: { ASAND, nc_expr },
169: { ASOR, nc_expr },
170: { ASER, nc_expr },
171: { ASLS, nc_expr },
172: { ASRS, nc_expr },
173: { ARG, nc_basetype },
174: { KNOWN, nc_unused },
175: { ZTYPE, nc_basetype },
176: { ARGT, nc_basetype },
177: { ELIST, nc_expr },
178: { ANY, nc_basetype },
179: { TABLE, nc_table },
180: { LOC, nc_unused },
181: { DUMMY, nc_expr },
182: { G_ADDROF, nc_expr },
183: { G_CALL, nc_expr },
184: { G_CM, nc_expr },
185: { IVAL, nc_expr },
186: { FVAL, nc_expr },
187: { LVAL, nc_expr },
188: { ELLIPSIS, nc_unused },
189: { AGGR, nc_unused },
190: { RPTR, nc_ptr },
191: { HIDDEN, nc_unused },
192: { MEM, nc_expr },
193: { CTOR, nc_unused },
194: { DTOR, nc_unused },
195: { CONST_PTR, nc_ptr },
196: { CONST_RPTR, nc_ptr },
197: { TEXT, nc_expr },
198: { PAIR, nc_stmt },
199: { ANON, nc_unused },
200: { ICALL, nc_expr },
201: { ANAME, nc_expr },
202: { VOLATILE, nc_basetype },
203: { SIGNED, nc_basetype },
204: { UPLUS, nc_expr },
205: { MEMPTR, nc_unused },
206: { PRIVATE, nc_name },
207: { PR, nc_unused },
208: { MDOT, nc_expr },
209: { TSCOPE, nc_unused },
210: { DECL_MARKER, nc_unused },
211: { REFMUL, nc_expr },
212: { LDOUBLE, nc_basetype },
213: { LINKAGE, nc_unused },
214: { LOCAL, nc_basetype },
215: { GNEW, nc_expr },
216: { TEMPLATE, nc_unused },
217: { STAT_INIT, nc_unused },
218: { CATCH, nc_unused },
219: { GDELETE, nc_expr },
220: { CONVERT, nc_unused },
221: { XVIRT, nc_virt },
222: { XNLIST, nc_nlist },
223: { XILINE, nc_iline },
224: { XIA, nc_ia },
225: { VALUE, nc_expr },
226: { XDELETED_NODE, nc_unused },
227: };
228: #endif
229:
230:
231: node_class classify_node (Pnode, int&);
232: node_class classify_node (Pnode);
233:
234: #endif
235:
236: /* End node_classes.H */
237:
238: /*
239: $Log: node_classes.H,v $
240: Revision 1.1 89/11/20 08:50:41 benson
241: Initial revision
242:
243: Revision 1.6 89/10/10 08:41:43 benson
244: add missing entries.
245:
246: Revision 1.5 89/10/05 11:40:50 benson
247: add declaration of the one-arg form of classify_node.
248:
249:
250:
251: end_log
252: */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.