|
|
1.1 root 1: /*
2: * Copyright (c) 1980 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: *
6: * @(#)data.h 5.1 (Berkeley) 6/7/85
7: */
8:
9: /* Forms of data list elements */
10:
11: #define SIMPLE 1
12: #define NESTED 2
13:
14:
15: /* data expression block types */
16:
17: #define DVALUE 1
18: #define DVAR 2
19: #define DNAME 3
20: #define DEXPR 4
21: #define DERROR 5
22:
23:
24: /* status codes for integer values */
25:
26: #define NORMAL 1
27: #define MAXPLUS1 2
28: #define MINLESS1 3
29: #define ERRVAL 4
30:
31:
32:
33: /* data types for data statements */
34:
35:
36: typedef
37: struct Dvalue
38: {
39: char tag;
40: char status;
41: ftnint value;
42: }
43: dvalue;
44:
45:
46: typedef
47: struct Dvar
48: {
49: char tag;
50: struct Dvalue *valp;
51: }
52: dvar;
53:
54:
55: typedef
56: struct Dname
57: {
58: char tag;
59: int len;
60: char *repr;
61: }
62: dname;
63:
64:
65: typedef
66: struct Dexpr
67: {
68: char tag;
69: char opcode;
70: union Vexpr *left;
71: union Vexpr *right;
72: }
73: dexpr;
74:
75:
76: typedef
77: struct Derror
78: {
79: char tag;
80: }
81: derror;
82:
83:
84: typedef
85: union Vexpr
86: {
87: char tag;
88: struct Dvalue dvalue;
89: struct Dvar dvar;
90: struct Dname dname;
91: struct Dexpr dexpr;
92: struct Derror derror;
93: }
94: vexpr;
95:
96:
97: typedef
98: struct Elist
99: {
100: struct Elist *next;
101: union Delt *elt;
102: }
103: elist;
104:
105:
106: typedef
107: struct Aelt
108: {
109: char tag;
110: Namep var;
111: struct Vlist *subs;
112: struct Rpair *range;
113: }
114: aelt;
115:
116:
117: typedef
118: struct DoList
119: {
120: char tag;
121: struct Elist *elts;
122: union Vexpr *dovar;
123: union Vexpr *init;
124: union Vexpr *limit;
125: union Vexpr *step;
126: }
127: dolist;
128:
129:
130: typedef
131: union Delt
132: {
133: char tag;
134: struct Aelt simple;
135: struct DoList nested;
136: }
137: delt;
138:
139:
140: typedef
141: struct Rpair
142: {
143: union Vexpr *low;
144: union Vexpr *high;
145: }
146: rpair;
147:
148:
149: typedef
150: struct ValList
151: {
152: struct ValList *next;
153: char status;
154: int repl;
155: Constp value;
156: }
157: vallist;
158:
159:
160: typedef
161: struct Vlist
162: {
163: struct Vlist *next;
164: union Vexpr *val;
165: }
166: vlist;
167:
168:
169: typedef
170: struct DoVars
171: {
172: struct DoVars *next;
173: int len;
174: char *repr;
175: dvalue *valp;
176: }
177: dovars;
178:
179:
180:
181: /* Global variables */
182:
183: extern int badvalue;
184: extern flag overlapflag;
185:
186:
187: /* Global procedures */
188:
189: extern frvexpr();
190: extern frvlist();
191: extern elist *revelist();
192: extern vlist *revvlist();
193: extern vlist *prepvexpr();
194: extern elist *preplval();
195: extern delt *mkdlval();
196: extern delt *mkdatado();
197: extern rpair *mkdrange();
198: extern vallist *mkdrval();
199: extern vexpr *evicon();
200: extern vexpr *mkdname();
201: extern expptr ivaltoicon();
202: extern expptr evparam();
203: extern vexpr *evaldname();
204: extern vexpr *mkdexpr();
205: extern vexpr *addivals();
206: extern vexpr *subivals();
207: extern vexpr *mulivals();
208: extern vexpr *divivals();
209: extern vexpr *powivals();
210: extern vexpr *negival();
211: extern expptr convconst();
212: extern savedata();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.