xref: /csrg-svn/usr.bin/f77/pass1.vax/data.h (revision 47955)
1*47955Sbostic /*-
2*47955Sbostic  * Copyright (c) 1980 The Regents of the University of California.
3*47955Sbostic  * All rights reserved.
422804Smckusick  *
5*47955Sbostic  * %sccs.include.proprietary.c%
6*47955Sbostic  *
7*47955Sbostic  *	@(#)data.h	5.2 (Berkeley) 04/12/91
822804Smckusick  */
922804Smckusick 
1022804Smckusick /*  Forms of data list elements  */
1122804Smckusick 
1222804Smckusick #define	SIMPLE	1
1322804Smckusick #define NESTED	2
1422804Smckusick 
1522804Smckusick 
1622804Smckusick /*  data expression block types  */
1722804Smckusick 
1822804Smckusick #define	DVALUE	1
1922804Smckusick #define	DVAR	2
2022804Smckusick #define	DNAME	3
2122804Smckusick #define DEXPR	4
2222804Smckusick #define	DERROR	5
2322804Smckusick 
2422804Smckusick 
2522804Smckusick /*  status codes for integer values  */
2622804Smckusick 
2722804Smckusick #define	NORMAL	 1
2822804Smckusick #define MAXPLUS1 2
2922804Smckusick #define MINLESS1 3
3022804Smckusick #define	ERRVAL	 4
3122804Smckusick 
3222804Smckusick 
3322804Smckusick 
3422804Smckusick /*  data types for data statements  */
3522804Smckusick 
3622804Smckusick 
3722804Smckusick typedef
3822804Smckusick   struct Dvalue
3922804Smckusick     {
4022804Smckusick       char	tag;
4122804Smckusick       char	status;
4222804Smckusick       ftnint	value;
4322804Smckusick     }
4422804Smckusick   dvalue;
4522804Smckusick 
4622804Smckusick 
4722804Smckusick typedef
4822804Smckusick   struct Dvar
4922804Smckusick     {
5022804Smckusick       char	tag;
5122804Smckusick       struct Dvalue	*valp;
5222804Smckusick     }
5322804Smckusick   dvar;
5422804Smckusick 
5522804Smckusick 
5622804Smckusick typedef
5722804Smckusick   struct Dname
5822804Smckusick     {
5922804Smckusick       char	tag;
6022804Smckusick       int	len;
6122804Smckusick       char	*repr;
6222804Smckusick     }
6322804Smckusick   dname;
6422804Smckusick 
6522804Smckusick 
6622804Smckusick typedef
6722804Smckusick   struct Dexpr
6822804Smckusick     {
6922804Smckusick       char	tag;
7022804Smckusick       char	opcode;
7122804Smckusick       union Vexpr	*left;
7222804Smckusick       union Vexpr	*right;
7322804Smckusick     }
7422804Smckusick   dexpr;
7522804Smckusick 
7622804Smckusick 
7722804Smckusick typedef
7822804Smckusick   struct Derror
7922804Smckusick     {
8022804Smckusick       char	tag;
8122804Smckusick     }
8222804Smckusick   derror;
8322804Smckusick 
8422804Smckusick 
8522804Smckusick typedef
8622804Smckusick   union Vexpr
8722804Smckusick     {
8822804Smckusick       char	tag;
8922804Smckusick       struct Dvalue	dvalue;
9022804Smckusick       struct Dvar	dvar;
9122804Smckusick       struct Dname	dname;
9222804Smckusick       struct Dexpr	dexpr;
9322804Smckusick       struct Derror	derror;
9422804Smckusick     }
9522804Smckusick   vexpr;
9622804Smckusick 
9722804Smckusick 
9822804Smckusick typedef
9922804Smckusick   struct Elist
10022804Smckusick     {
10122804Smckusick       struct Elist	*next;
10222804Smckusick       union Delt	*elt;
10322804Smckusick     }
10422804Smckusick   elist;
10522804Smckusick 
10622804Smckusick 
10722804Smckusick typedef
10822804Smckusick   struct Aelt
10922804Smckusick     {
11022804Smckusick       char	tag;
11122804Smckusick       Namep	var;
11222804Smckusick       struct Vlist	*subs;
11322804Smckusick       struct Rpair	*range;
11422804Smckusick     }
11522804Smckusick   aelt;
11622804Smckusick 
11722804Smckusick 
11822804Smckusick typedef
11922804Smckusick   struct DoList
12022804Smckusick     {
12122804Smckusick       char	tag;
12222804Smckusick       struct Elist	*elts;
12322804Smckusick       union Vexpr	*dovar;
12422804Smckusick       union Vexpr	*init;
12522804Smckusick       union Vexpr	*limit;
12622804Smckusick       union Vexpr	*step;
12722804Smckusick     }
12822804Smckusick   dolist;
12922804Smckusick 
13022804Smckusick 
13122804Smckusick typedef
13222804Smckusick   union Delt
13322804Smckusick     {
13422804Smckusick       char	tag;
13522804Smckusick       struct Aelt	simple;
13622804Smckusick       struct DoList	nested;
13722804Smckusick     }
13822804Smckusick   delt;
13922804Smckusick 
14022804Smckusick 
14122804Smckusick typedef
14222804Smckusick   struct Rpair
14322804Smckusick     {
14422804Smckusick       union Vexpr	*low;
14522804Smckusick       union Vexpr	*high;
14622804Smckusick     }
14722804Smckusick   rpair;
14822804Smckusick 
14922804Smckusick 
15022804Smckusick typedef
15122804Smckusick   struct ValList
15222804Smckusick     {
15322804Smckusick       struct ValList	*next;
15422804Smckusick       char	status;
15522804Smckusick       int	repl;
15622804Smckusick       Constp	value;
15722804Smckusick     }
15822804Smckusick   vallist;
15922804Smckusick 
16022804Smckusick 
16122804Smckusick typedef
16222804Smckusick   struct Vlist
16322804Smckusick     {
16422804Smckusick       struct Vlist	*next;
16522804Smckusick       union Vexpr	*val;
16622804Smckusick     }
16722804Smckusick   vlist;
16822804Smckusick 
16922804Smckusick 
17022804Smckusick typedef
17122804Smckusick   struct DoVars
17222804Smckusick     {
17322804Smckusick       struct DoVars *next;
17422804Smckusick       int len;
17522804Smckusick       char *repr;
17622804Smckusick       dvalue *valp;
17722804Smckusick     }
17822804Smckusick   dovars;
17922804Smckusick 
18022804Smckusick 
18122804Smckusick 
18222804Smckusick /*  Global variables  */
18322804Smckusick 
18422804Smckusick extern int badvalue;
18522804Smckusick extern flag overlapflag;
18622804Smckusick 
18722804Smckusick 
18822804Smckusick /*  Global procedures  */
18922804Smckusick 
19022804Smckusick extern frvexpr();
19122804Smckusick extern frvlist();
19222804Smckusick extern elist *revelist();
19322804Smckusick extern vlist *revvlist();
19422804Smckusick extern vlist *prepvexpr();
19522804Smckusick extern elist *preplval();
19622804Smckusick extern delt *mkdlval();
19722804Smckusick extern delt *mkdatado();
19822804Smckusick extern rpair *mkdrange();
19922804Smckusick extern vallist *mkdrval();
20022804Smckusick extern vexpr *evicon();
20122804Smckusick extern vexpr *mkdname();
20222804Smckusick extern expptr ivaltoicon();
20322804Smckusick extern expptr evparam();
20422804Smckusick extern vexpr *evaldname();
20522804Smckusick extern vexpr *mkdexpr();
20622804Smckusick extern vexpr *addivals();
20722804Smckusick extern vexpr *subivals();
20822804Smckusick extern vexpr *mulivals();
20922804Smckusick extern vexpr *divivals();
21022804Smckusick extern vexpr *powivals();
21122804Smckusick extern vexpr *negival();
21222804Smckusick extern expptr convconst();
21322804Smckusick extern savedata();
214