|
|
1.1 root 1: union pNodeBodies {
2:
3: struct IntNode {
4: long IntValue;
5: };
6:
7: struct RealNode {
8: float RealValue;
9: };
10:
11: /*
12: * these are actually allocated by
13: * pNewNode( StringTAG , strlen( string ) + 1 )
14: */
15: struct StringNode {
16: char StringValue[1];
17: };
18:
19: struct ListNode {
20: pPointer ListUp;
21: pPointer ListDown;
22: pPointer ListItem;
23: };
24:
25: struct ThreadNode {
26: pPointer ThreadPointer;
27: };
28:
29: /*
30: * note that the first several GlobNodes fields are
31: * one pPointer off from PorFNodes.
32: * this so the simple-minded code in fdec works,
33: * attaching the program to GlobProg as a PorFPFs
34: */
35: struct GlobNode {
36: pPointer GlobaAlign;
37: pPointer GlobbAlign;
38: pPointer GlobConsts;
39: pPointer GlobTypes;
40: pPointer GlobVars;
41: pPointer GlobPFs;
42: pPointer GlobProg;
43: };
44:
45:
46: struct PorFNode {
47: pPointer PorFName;
48: pPointer PorFParams;
49: pPointer PorFLabels;
50: pPointer PorFConsts;
51: pPointer PorFTypes;
52: pPointer PorFVars;
53: pPointer PorFPFs;
54: pPointer PorFBody;
55: pPointer PorFReturns;
56: short PorFForward;
57: };
58:
59: struct BConstNode {
60: pPointer BConstName;
61: };
62:
63: struct BTypeNode {
64: pPointer BTypeName;
65: };
66:
67: struct BVarNode {
68: pPointer BVarName;
69: };
70:
71: struct BFuncNode {
72: pPointer BFuncName;
73: };
74:
75: struct BProcNode {
76: pPointer BProcName;
77: };
78:
79: struct LabelDNode {
80: pPointer LabelDName;
81: };
82:
83: struct ConstDNode {
84: pPointer ConstDName;
85: pPointer ConstDValue;
86: };
87:
88: /*
89: * used to head lists of identically typed names: e.g. vars and fields.
90: * also for overlays with TypeDNodes, VarDNodes, FieldDNodes, etc.
91: */
92: struct TypedNode {
93: pPointer TypedNames;
94: pPointer TypedType;
95: };
96:
97: struct TypeDNode {
98: pPointer TypeDName;
99: pPointer TypeDType;
100: };
101:
102: struct EnumTNode {
103: pPointer EnumTScalars;
104: };
105:
106: struct ScalDNode {
107: pPointer ScalDName;
108: };
109:
110: struct RangeTNode {
111: pPointer RangeTLower;
112: pPointer RangeTUpper;
113: };
114:
115: struct SetTNode {
116: pPointer SetTType;
117: };
118:
119: struct FileTNode {
120: pPointer FileTType;
121: };
122:
123: struct PtrTNode {
124: pPointer PtrTType;
125: };
126:
127: struct PackTNode {
128: pPointer PackTType;
129: };
130:
131: struct ArrayTNode {
132: pPointer ArrayTDims;
133: pPointer ArrayTType;
134: };
135:
136: struct RecTNode {
137: pPointer RecTFldlst;
138: };
139:
140: struct FldlstNode {
141: pPointer FldlstFixed;
142: pPointer FldlstVariants;
143: };
144:
145: struct FieldDNode {
146: pPointer FieldDName;
147: pPointer FieldDType;
148: };
149:
150: struct VarntNode {
151: pPointer VarntTag;
152: pPointer VarntCases;
153: };
154:
155: struct VCaseNode {
156: pPointer VCaseConst;
157: pPointer VCaseRec;
158: };
159:
160: struct VarDNode {
161: pPointer VarDName;
162: pPointer VarDType;
163: };
164:
165: /*
166: * not really in the tree,
167: * used as an overlay for ValPNodes and VarPNodes in ParamCopy
168: */
169: struct ParamDNode {
170: pPointer ParamDName;
171: pPointer ParamDType;
172: };
173:
174: struct ValPNode {
175: pPointer ValPName;
176: pPointer ValPType;
177: };
178:
179: struct VarPNode {
180: pPointer VarPName;
181: pPointer VarPType;
182: };
183:
184: struct AssignNode {
185: pPointer AssignVar;
186: pPointer AssignExpr;
187: };
188:
189: struct PCallNode {
190: pPointer PCallId;
191: pPointer PCallActuals;
192: };
193:
194: struct IfNode {
195: pPointer IfCond;
196: pPointer IfThen;
197: pPointer IfElse;
198: };
199:
200: struct WhileNode {
201: pPointer WhileExpr;
202: pPointer WhileStat;
203: };
204:
205: struct RepeatNode {
206: pPointer RepeatStat;
207: pPointer RepeatExpr;
208: };
209:
210: struct ForUNode {
211: pPointer ForUAssign;
212: pPointer ForUExpr;
213: pPointer ForUStat;
214: };
215:
216: struct ForDNode {
217: pPointer ForDAssign;
218: pPointer ForDExpr;
219: pPointer ForDStat;
220: };
221:
222: struct CaseSNode {
223: pPointer CaseSExpr;
224: pPointer CaseSStat;
225: };
226:
227: struct CasedNode {
228: pPointer CasedLabel;
229: pPointer CasedStat;
230: };
231:
232: struct GotoNode {
233: pPointer GotoLabel;
234: };
235:
236: struct LabelNode {
237: pPointer LabelLabel;
238: };
239:
240: struct WithNode {
241: pPointer WithVars;
242: pPointer WithStat;
243: };
244:
245: struct AssertNode {
246: pPointer AssertExpr;
247: };
248:
249: /*
250: * not actually in the tree,
251: * for use as overlay with binary operator pNodes
252: */
253: struct BinOpNode {
254: pPointer BinOpLeft;
255: pPointer BinOpRight;
256: };
257:
258: struct AndNode {
259: pPointer AndLeft;
260: pPointer AndRight;
261: };
262:
263: struct OrNode {
264: pPointer OrLeft;
265: pPointer OrRight;
266: };
267:
268: struct EqNode {
269: pPointer EqLeft;
270: pPointer EqRight;
271: };
272:
273: struct NeNode {
274: pPointer NeLeft;
275: pPointer NeRight;
276: };
277:
278: struct LtNode {
279: pPointer LtLeft;
280: pPointer LtRight;
281: };
282:
283: struct GtNode {
284: pPointer GtLeft;
285: pPointer GtRight;
286: };
287:
288: struct LeNode {
289: pPointer LeLeft;
290: pPointer LeRight;
291: };
292:
293: struct GeNode {
294: pPointer GeLeft;
295: pPointer GeRight;
296: };
297:
298: struct InNode {
299: pPointer InLeft;
300: pPointer InRight;
301: };
302:
303: struct AddNode {
304: pPointer AddLeft;
305: pPointer AddRight;
306: };
307:
308: struct SubNode {
309: pPointer SubLeft;
310: pPointer SubRight;
311: };
312:
313: struct MultNode {
314: pPointer MultLeft;
315: pPointer MultRight;
316: };
317:
318: struct DivdNode {
319: pPointer DivdLeft;
320: pPointer DivdRight;
321: };
322:
323: struct DivNode {
324: pPointer DivLeft;
325: pPointer DivRight;
326: };
327:
328: struct ModNode {
329: pPointer ModLeft;
330: pPointer ModRight;
331: };
332:
333: /*
334: * not actually in the tree,
335: * for use as overlay with unary operator pNodes
336: */
337: struct UnOpNode {
338: pPointer UnOpExpr;
339: };
340:
341: struct PlusNode {
342: pPointer PlusExpr;
343: };
344:
345: struct MinusNode {
346: pPointer MinusExpr;
347: };
348:
349: struct NotNode {
350: pPointer NotExpr;
351: };
352:
353: struct FCallNode {
354: pPointer FCallId;
355: pPointer FCallActuals;
356: };
357:
358: struct SetNode {
359: pPointer SetElements;
360: };
361:
362: struct RangeNode {
363: pPointer RangeLower;
364: pPointer RangeUpper;
365: };
366:
367: struct VarNode {
368: pPointer VarId;
369: pPointer VarQuals;
370: };
371:
372: /*
373: * one of these indicates pointer indirection.
374: * they are actually allocated by pNewNode( PtrTAG , 0 )
375: */
376: struct PtrNode {
377: char PtrPrescence;
378: };
379:
380: struct SubscNode {
381: pPointer SubscSubsc;
382: };
383:
384: struct SelNode {
385: pPointer SelField;
386: };
387:
388: /*
389: * one of these indicates the value NIL
390: * they are actually allocated by pNewNode( NilTAG , 0 )
391: */
392: struct NilNode {
393: char NilValue;
394: };
395:
396: struct WidthNode {
397: pPointer WidthExpr;
398: pPointer WidthWidth;
399: pPointer WidthPlaces;
400: pPointer WidthRadix;
401: };
402:
403: /*
404: * one of these indicates octal radix conversion
405: * they are actually allocated by pNewNode( OctTAG , 0 )
406: */
407: struct OctNode {
408: char OctRadix;
409: };
410:
411: /*
412: * one of these indicates hexadecimal radix conversion
413: * they are actually allocated by pNewNode( HexTAG , 0 )
414: */
415: struct HexNode {
416: char HexRadix;
417: };
418:
419: };
420:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.