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