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