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