|
|
1.1 root 1: #define INTERDATA 2
2: #define GCOS 3
3: #define PDP11 4
4: #define IBM 5
5: #define CMACH 6
6: #define VAX 7
7: #define TAHOE 8
8:
9: #define DMR 2
10: #define PCC 3
11:
12: #ifndef FAMILY
13: FAMILY NOT DEFINED !!!
14: Family = FAMILY
15: #endif
16:
17: #ifndef HERE
18: HERE NOT DEFINED !!!!
19: Here = HERE
20: #endif
21:
22: #define M(x) (1<<x)
23: #define ALLOC(x) (struct x *) ckalloc(sizeof(struct x))
24: #define ALLOCN(n,x) (struct x *) ckalloc(n*sizeof(struct x))
25: #define ALLEXPR (expptr) ckalloc( sizeof(union Expression) )
26: typedef int *ptr;
27: typedef char *charptr;
28: typedef FILE *FILEP;
29: typedef short flag;
30: typedef char field; /* actually need only 4 bits */
31: typedef long int ftnint;
32: #define LOCAL static
33:
34: #define NO 0
35: #define YES 1
36:
37: #define CNULL (char *) 0
38: #define PNULL (ptr) 0
39: #define CHNULL (chainp) 0
40: #define ENULL (expptr) 0
41:
42:
43:
44: /* block tag values */
45:
46: #define TNAME 1
47: #define TCONST 2
48: #define TEXPR 3
49: #define TADDR 4
50: #define TPRIM 5
51: #define TLIST 6
52: #define TIMPLDO 7
53: #define TERROR 8
54:
55:
56: /* parser states */
57:
58: #define OUTSIDE 0
59: #define INSIDE 1
60: #define INDCL 2
61: #define INDATA 3
62: #define INEXEC 4
63:
64: /* procedure classes */
65:
66: #define PROCMAIN 1
67: #define PROCBLOCK 2
68: #define PROCSUBR 3
69: #define PROCFUNCT 4
70:
71:
72: /* storage classes -- vstg values */
73:
74: #define STGUNKNOWN 0
75: #define STGARG 1
76: #define STGAUTO 2
77: #define STGBSS 3
78: #define STGINIT 4
79: #define STGCONST 5
80: #define STGEXT 6
81: #define STGINTR 7
82: #define STGSTFUNCT 8
83: #define STGCOMMON 9
84: #define STGEQUIV 10
85: #define STGREG 11
86: #define STGLENG 12
87: #define STGNULL 13
88:
89: /* name classes -- vclass values */
90:
91: #define CLUNKNOWN 0
92: #define CLPARAM 1
93: #define CLVAR 2
94: #define CLENTRY 3
95: #define CLMAIN 4
96: #define CLBLOCK 5
97: #define CLPROC 6
98: #define CLNAMELIST 7
99:
100:
101: /* vprocclass values */
102:
103: #define PUNKNOWN 0
104: #define PEXTERNAL 1
105: #define PINTRINSIC 2
106: #define PSTFUNCT 3
107: #define PTHISPROC 4
108:
109: /* control stack codes */
110:
111: #define CTLDO 1
112: #define CTLIF 2
113: #define CTLELSE 3
114:
115:
116: /* operators */
117:
118: #define OPPLUS 1
119: #define OPMINUS 2
120: #define OPSTAR 3
121: #define OPSLASH 4
122: #define OPPOWER 5
123: #define OPNEG 6
124: #define OPOR 7
125: #define OPAND 8
126: #define OPEQV 9
127: #define OPNEQV 10
128: #define OPNOT 11
129: #define OPCONCAT 12
130: #define OPLT 13
131: #define OPEQ 14
132: #define OPGT 15
133: #define OPLE 16
134: #define OPNE 17
135: #define OPGE 18
136: #define OPCALL 19
137: #define OPCCALL 20
138: #define OPASSIGN 21
139: #define OPPLUSEQ 22
140: #define OPSTAREQ 23
141: #define OPCONV 24
142: #define OPLSHIFT 25
143: #define OPMOD 26
144: #define OPCOMMA 27
145: #define OPQUEST 28
146: #define OPCOLON 29
147: #define OPABS 30
148: #define OPMIN 31
149: #define OPMAX 32
150: #define OPADDR 33
151: #define OPINDIRECT 34
152: #define OPBITOR 35
153: #define OPBITAND 36
154: #define OPBITXOR 37
155: #define OPBITNOT 38
156: #define OPRSHIFT 39
157:
158:
159: /* label type codes */
160:
161: #define LABUNKNOWN 0
162: #define LABEXEC 1
163: #define LABFORMAT 2
164: #define LABOTHER 3
165:
166:
167: /* INTRINSIC function codes*/
168:
169: #define INTREND 0
170: #define INTRCONV 1
171: #define INTRMIN 2
172: #define INTRMAX 3
173: #define INTRGEN 4
174: #define INTRSPEC 5
175: #define INTRBOOL 6
176: #define INTRCNST 7
177:
178:
179: /* I/O statement codes */
180:
181: #define IOSTDIN ICON(5)
182: #define IOSTDOUT ICON(6)
183: #define IOSTDERR ICON(0)
184:
185: #define IOSBAD (-1)
186: #define IOSPOSITIONAL 0
187: #define IOSUNIT 1
188: #define IOSFMT 2
189:
190: #define IOINQUIRE 1
191: #define IOOPEN 2
192: #define IOCLOSE 3
193: #define IOREWIND 4
194: #define IOBACKSPACE 5
195: #define IOENDFILE 6
196: #define IOREAD 7
197: #define IOWRITE 8
198:
199:
200: /* type masks */
201:
202: #define MSKLOGICAL M(TYLOGICAL)
203: #define MSKADDR M(TYADDR)
204: #define MSKCHAR M(TYCHAR)
205: #define MSKINT M(TYSHORT)|M(TYLONG)
206: #define MSKREAL M(TYREAL)|M(TYDREAL)
207: #define MSKCOMPLEX M(TYCOMPLEX)|M(TYDCOMPLEX)
208: #define MSKSTATIC (M(STGINIT)|M(STGBSS)|M(STGCOMMON)|M(STGEQUIV)|M(STGCONST))
209:
210: /* miscellaneous macros */
211:
212: #define ONEOF(x,y) (M(x) & (y))
213: #define ISCOMPLEX(z) ONEOF(z, MSKCOMPLEX)
214: #define ISREAL(z) ONEOF(z, MSKREAL)
215: #define ISNUMERIC(z) ONEOF(z, MSKINT|MSKREAL|MSKCOMPLEX)
216: #define ISICON(z) (z->tag==TCONST && ISINT(z->constblock.vtype))
217: #define ISCHAR(z) (z->headblock.vtype==TYCHAR)
218: #define ISINT(z) ONEOF(z, MSKINT)
219: #define ISCONST(z) (z->tag==TCONST)
220: #define ISERROR(z) (z->tag==TERROR)
221: #define ISPLUSOP(z) (z->tag==TEXPR && z->exprblock.opcode==OPPLUS)
222: #define ISSTAROP(z) (z->tag==TEXPR && z->exprblock.opcode==OPSTAR)
223: #define ISONE(z) (ISICON(z) && z->constblock.const.ci==1)
224: #define INT(z) ONEOF(z, MSKINT|MSKCHAR)
225: #define ICON(z) mkintcon( (ftnint)(z) )
226:
227: #define NO66(s) if(no66flag) err66(s)
228: #define NOEXT(s) if(noextflag) errext(s)
229:
230: /* round a up to a multiple of b */
231: #define roundup(a,b) ( b * ( (a+b-1)/b) )
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.