|
|
1.1 root 1: # define SEOS 1
2: # define SCOMMENT 2
3: # define SLABEL 3
4: # define SUNKNOWN 4
5: # define SHOLLERITH 5
6: # define SICON 6
7: # define SRCON 7
8: # define SDCON 8
9: # define SBITCON 9
10: # define SOCTCON 10
11: # define SHEXCON 11
12: # define STRUE 12
13: # define SFALSE 13
14: # define SNAME 14
15: # define SNAMEEQ 15
16: # define SFIELD 16
17: # define SSCALE 17
18: # define SINCLUDE 18
19: # define SLET 19
20: # define SASSIGN 20
21: # define SAUTOMATIC 21
22: # define SBACKSPACE 22
23: # define SBLOCK 23
24: # define SCALL 24
25: # define SCHARACTER 25
26: # define SCLOSE 26
27: # define SCOMMON 27
28: # define SCOMPLEX 28
29: # define SCONTINUE 29
30: # define SDATA 30
31: # define SDCOMPLEX 31
32: # define SDIMENSION 32
33: # define SDO 33
34: # define SDOUBLE 34
35: # define SELSE 35
36: # define SELSEIF 36
37: # define SEND 37
38: # define SENDFILE 38
39: # define SENDIF 39
40: # define SENTRY 40
41: # define SEQUIV 41
42: # define SEXTERNAL 42
43: # define SFORMAT 43
44: # define SFUNCTION 44
45: # define SGOTO 45
46: # define SASGOTO 46
47: # define SCOMPGOTO 47
48: # define SARITHIF 48
49: # define SLOGIF 49
50: # define SIMPLICIT 50
51: # define SINQUIRE 51
52: # define SINTEGER 52
53: # define SINTRINSIC 53
54: # define SLOGICAL 54
55: # define SNAMELIST 55
56: # define SOPEN 56
57: # define SPARAM 57
58: # define SPAUSE 58
59: # define SPRINT 59
60: # define SPROGRAM 60
61: # define SPUNCH 61
62: # define SREAD 62
63: # define SREAL 63
64: # define SRETURN 64
65: # define SREWIND 65
66: # define SSAVE 66
67: # define SSTATIC 67
68: # define SSTOP 68
69: # define SSUBROUTINE 69
70: # define STHEN 70
71: # define STO 71
72: # define SUNDEFINED 72
73: # define SWRITE 73
74: # define SLPAR 74
75: # define SRPAR 75
76: # define SEQUALS 76
77: # define SCOLON 77
78: # define SCOMMA 78
79: # define SCURRENCY 79
80: # define SPLUS 80
81: # define SMINUS 81
82: # define SSTAR 82
83: # define SSLASH 83
84: # define SPOWER 84
85: # define SCONCAT 85
86: # define SAND 86
87: # define SOR 87
88: # define SNEQV 88
89: # define SEQV 89
90: # define SNOT 90
91: # define SEQ 91
92: # define SLT 92
93: # define SGT 93
94: # define SLE 94
95: # define SGE 95
96: # define SNE 96
97:
98: # line 98 "gram.in"
99: # include "defs"
100:
101: #ifdef SDB
102: # include <a.out.h>
103: char *stabline();
104: # ifdef UCBVAXASM
105: char *stabdline();
106: # endif
107:
108: # ifndef N_SO
109: # include <stab.h>
110: # endif
111: #endif
112:
113: static int nstars;
114: static int ndim;
115: static int vartype;
116: static ftnint varleng;
117: static struct { expptr lb, ub; } dims[MAXDIM+1];
118: static struct Labelblock *labarray[MAXLABLIST];
119: static int lastwasbranch = NO;
120: static int thiswasbranch = NO;
121: extern ftnint yystno;
122: extern flag intonly;
123:
124: ftnint convci();
125: double convcd();
126: Addrp nextdata();
127: expptr mklogcon(), mkaddcon(), mkrealcon(), mkstrcon(), mkbitcon();
128: expptr mkcxcon();
129: struct Listblock *mklist();
130: struct Listblock *mklist();
131: struct Impldoblock *mkiodo();
132: struct Extsym *comblock();
133:
134:
135: # line 137 "gram.in"
136: typedef union {
137: int ival;
138: char *charpval;
139: chainp chval;
140: tagptr tagval;
141: expptr expval;
142: struct Labelblock *labval;
143: struct Nameblock *namval;
144: struct Eqvchain *eqvval;
145: struct Extsym *extval;
146: } YYSTYPE;
147: #define yyclearin yychar = -1
148: #define yyerrok yyerrflag = 0
149: extern int yychar;
150: extern short yyerrflag;
151: #ifndef YYMAXDEPTH
152: #define YYMAXDEPTH 150
153: #endif
154: YYSTYPE yylval, yyval;
155: # define YYERRCODE 256
156: short yyexca[] ={
157: -1, 1,
158: 0, -1,
159: -2, 0,
160: -1, 20,
161: 1, 31,
162: -2, 214,
163: -1, 24,
164: 1, 35,
165: -2, 214,
166: -1, 148,
167: 1, 230,
168: -2, 178,
169: -1, 168,
170: 1, 251,
171: 78, 251,
172: -2, 178,
173: -1, 218,
174: 77, 164,
175: -2, 130,
176: -1, 240,
177: 74, 214,
178: -2, 211,
179: -1, 266,
180: 1, 272,
181: -2, 134,
182: -1, 270,
183: 1, 281,
184: 78, 281,
185: -2, 136,
186: -1, 315,
187: 77, 165,
188: -2, 132,
189: -1, 345,
190: 1, 253,
191: 14, 253,
192: 74, 253,
193: 78, 253,
194: -2, 179,
195: -1, 407,
196: 91, 0,
197: 92, 0,
198: 93, 0,
199: 94, 0,
200: 95, 0,
201: 96, 0,
202: -2, 144,
203: -1, 424,
204: 1, 275,
205: 78, 275,
206: -2, 134,
207: -1, 426,
208: 1, 277,
209: 78, 277,
210: -2, 134,
211: -1, 428,
212: 1, 279,
213: 78, 279,
214: -2, 134,
215: -1, 479,
216: 78, 275,
217: -2, 134,
218: };
219: # define YYNPROD 286
220: # define YYLAST 1293
221: short yyact[]={
222:
223: 232, 269, 446, 229, 386, 393, 445, 444, 385, 438,
224: 267, 437, 343, 261, 196, 344, 313, 285, 126, 224,
225: 98, 217, 456, 247, 184, 114, 304, 268, 5, 265,
226: 17, 199, 192, 116, 288, 194, 323, 177, 178, 206,
227: 118, 104, 117, 255, 119, 109, 302, 300, 231, 162,
228: 163, 321, 322, 323, 329, 188, 102, 100, 112, 486,
229: 330, 332, 331, 334, 333, 335, 162, 163, 321, 322,
230: 323, 259, 102, 93, 127, 155, 443, 155, 321, 322,
231: 323, 442, 128, 129, 130, 131, 135, 133, 94, 95,
232: 96, 461, 484, 489, 511, 162, 163, 321, 322, 323,
233: 329, 328, 327, 326, 325, 101, 330, 332, 331, 334,
234: 333, 335, 102, 398, 115, 162, 163, 321, 322, 323,
235: 329, 328, 327, 153, 287, 153, 330, 332, 331, 334,
236: 333, 335, 179, 283, 180, 181, 97, 510, 187, 421,
237: 287, 225, 235, 235, 162, 163, 253, 254, 255, 256,
238: 497, 459, 155, 417, 460, 252, 155, 234, 236, 238,
239: 435, 495, 210, 436, 213, 215, 155, 208, 214, 102,
240: 99, 182, 263, 227, 270, 270, 260, 155, 99, 462,
241: 101, 101, 101, 101, 209, 183, 253, 254, 255, 432,
242: 186, 295, 189, 190, 191, 418, 294, 431, 417, 202,
243: 153, 272, 430, 358, 153, 279, 280, 423, 290, 307,
244: 308, 414, 399, 297, 153, 189, 211, 212, 311, 383,
245: 315, 281, 306, 317, 291, 153, 320, 364, 282, 301,
246: 337, 240, 299, 242, 339, 340, 320, 363, 118, 341,
247: 117, 362, 336, 390, 252, 378, 391, 155, 379, 264,
248: 273, 203, 349, 155, 155, 155, 155, 155, 252, 252,
249: 372, 342, 346, 373, 318, 347, 310, 319, 171, 101,
250: 320, 110, 286, 337, 108, 270, 107, 106, 252, 357,
251: 105, 4, 366, 103, 162, 163, 253, 254, 255, 256,
252: 115, 218, 305, 489, 392, 153, 216, 189, 502, 367,
253: 501, 153, 153, 153, 153, 153, 370, 374, 320, 320,
254: 382, 337, 320, 500, 395, 496, 320, 371, 320, 499,
255: 245, 225, 403, 404, 405, 406, 407, 408, 409, 410,
256: 411, 412, 359, 494, 488, 360, 361, 468, 320, 402,
257: 320, 320, 320, 397, 266, 266, 377, 470, 155, 252,
258: 320, 416, 316, 252, 252, 252, 252, 252, 162, 163,
259: 253, 254, 255, 256, 289, 185, 270, 270, 270, 298,
260: 241, 419, 422, 425, 427, 429, 237, 189, 439, 221,
261: 147, 218, 447, 193, 207, 448, 205, 389, 154, 102,
262: 433, 434, 102, 165, 464, 148, 153, 168, 457, 139,
263: 235, 472, 338, 400, 320, 320, 320, 320, 320, 320,
264: 320, 320, 320, 320, 467, 471, 465, 473, 463, 469,
265: 102, 252, 387, 204, 274, 275, 276, 239, 30, 475,
266: 451, 230, 220, 476, 270, 270, 270, 422, 439, 477,
267: 320, 425, 427, 429, 447, 365, 478, 448, 483, 263,
268: 487, 485, 198, 480, 481, 482, 164, 166, 170, 91,
269: 286, 121, 6, 244, 80, 320, 491, 79, 450, 490,
270: 458, 78, 235, 320, 493, 77, 134, 167, 305, 498,
271: 466, 76, 75, 338, 74, 59, 504, 447, 48, 506,
272: 448, 508, 451, 505, 503, 47, 451, 44, 32, 320,
273: 162, 163, 253, 254, 255, 320, 152, 111, 152, 320,
274: 458, 509, 512, 320, 201, 345, 384, 458, 458, 458,
275: 162, 163, 253, 254, 255, 256, 200, 513, 368, 369,
276: 450, 376, 375, 381, 450, 451, 424, 426, 428, 380,
277: 243, 197, 132, 303, 257, 113, 26, 25, 24, 492,
278: 23, 22, 21, 9, 258, 162, 163, 321, 322, 323,
279: 329, 328, 8, 7, 197, 277, 330, 332, 331, 334,
280: 333, 335, 2, 450, 162, 163, 321, 322, 323, 329,
281: 292, 20, 449, 152, 50, 507, 284, 152, 474, 223,
282: 314, 312, 158, 159, 160, 161, 388, 152, 262, 156,
283: 157, 102, 296, 195, 479, 426, 428, 90, 152, 250,
284: 52, 324, 19, 54, 158, 159, 160, 161, 455, 454,
285: 453, 156, 157, 102, 36, 293, 338, 219, 3, 1,
286: 197, 0, 0, 0, 0, 348, 0, 0, 0, 0,
287: 0, 352, 353, 354, 355, 356, 415, 0, 0, 0,
288: 0, 162, 163, 321, 322, 323, 329, 328, 327, 326,
289: 325, 0, 330, 332, 331, 334, 333, 335, 0, 0,
290: 0, 0, 0, 0, 0, 0, 0, 0, 152, 0,
291: 0, 0, 0, 452, 152, 152, 152, 152, 152, 162,
292: 163, 0, 262, 413, 0, 262, 262, 0, 162, 163,
293: 321, 322, 323, 329, 328, 327, 326, 325, 0, 330,
294: 332, 331, 334, 333, 335, 0, 0, 0, 0, 0,
295: 0, 0, 0, 0, 0, 0, 0, 197, 0, 0,
296: 0, 0, 401, 0, 0, 0, 420, 162, 163, 321,
297: 322, 323, 329, 328, 327, 326, 325, 0, 330, 332,
298: 331, 334, 333, 335, 394, 0, 0, 0, 0, 162,
299: 163, 321, 322, 323, 329, 328, 327, 326, 325, 0,
300: 330, 332, 331, 334, 333, 335, 0, 0, 0, 152,
301: 162, 163, 321, 322, 323, 329, 328, 327, 326, 325,
302: 262, 330, 332, 331, 334, 333, 335, 72, 0, 0,
303: 0, 69, 0, 0, 65, 0, 0, 67, 71, 0,
304: 66, 441, 0, 0, 0, 197, 0, 0, 0, 0,
305: 0, 0, 0, 0, 0, 0, 0, 0, 63, 0,
306: 68, 0, 0, 0, 0, 0, 0, 0, 0, 64,
307: 0, 0, 12, 73, 158, 159, 160, 161, 70, 0,
308: 0, 156, 157, 102, 0, 262, 10, 55, 45, 72,
309: 84, 14, 60, 69, 89, 37, 65, 46, 41, 67,
310: 71, 31, 66, 34, 33, 11, 86, 35, 18, 40,
311: 38, 28, 16, 56, 57, 58, 49, 53, 42, 87,
312: 63, 39, 68, 43, 88, 29, 61, 83, 13, 0,
313: 81, 64, 51, 85, 27, 73, 62, 15, 92, 0,
314: 70, 82, 0, 228, 0, 0, 0, 0, 0, 162,
315: 163, 350, 0, 351, 158, 159, 160, 161, 0, 233,
316: 0, 156, 157, 102, 0, 0, 0, 0, 0, 0,
317: 120, 0, 123, 124, 125, 0, 0, 0, 0, 0,
318: 0, 0, 0, 0, 136, 137, 0, 0, 138, 0,
319: 140, 141, 142, 0, 0, 143, 144, 145, 0, 146,
320: 158, 159, 160, 161, 0, 0, 0, 156, 157, 102,
321: 0, 0, 0, 0, 0, 0, 0, 0, 172, 173,
322: 174, 175, 176, 228, 222, 158, 159, 160, 161, 162,
323: 163, 226, 156, 157, 102, 0, 0, 0, 0, 233,
324: 158, 159, 160, 161, 0, 0, 0, 156, 157, 102,
325: 0, 158, 159, 160, 161, 0, 0, 0, 156, 157,
326: 102, 0, 0, 158, 159, 160, 161, 0, 0, 228,
327: 156, 157, 102, 0, 0, 162, 163, 440, 0, 0,
328: 158, 159, 160, 161, 0, 233, 0, 156, 157, 102,
329: 0, 0, 0, 0, 228, 0, 0, 0, 0, 0,
330: 162, 163, 226, 0, 158, 159, 160, 161, 0, 228,
331: 233, 156, 157, 102, 251, 162, 163, 396, 0, 0,
332: 228, 158, 159, 160, 161, 233, 162, 163, 156, 157,
333: 102, 0, 271, 0, 0, 0, 233, 0, 162, 163,
334: 0, 0, 0, 0, 0, 0, 0, 0, 233, 309,
335: 158, 159, 160, 161, 0, 162, 163, 156, 157, 102,
336: 0, 0, 0, 0, 0, 233, 0, 158, 159, 160,
337: 161, 0, 0, 246, 156, 157, 102, 0, 0, 162,
338: 163, 248, 0, 249, 55, 45, 0, 84, 0, 60,
339: 151, 89, 0, 0, 46, 0, 162, 163, 149, 0,
340: 150, 0, 0, 86, 0, 0, 0, 0, 0, 0,
341: 56, 57, 58, 49, 0, 0, 87, 0, 0, 246,
342: 0, 88, 0, 61, 83, 162, 163, 81, 0, 51,
343: 85, 0, 0, 62, 0, 122, 246, 0, 82, 0,
344: 0, 0, 162, 163, 278, 158, 159, 160, 161, 0,
345: 0, 0, 156, 157, 102, 0, 0, 0, 0, 0,
346: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
347: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
348: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
349: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
350: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
351: 0, 0, 0, 0, 151, 0, 0, 0, 0, 0,
352: 162, 163, 169 };
353: short yypact[]={
354:
355: -1000, 25, 461, 838,-1000,-1000,-1000,-1000,-1000,-1000,
356: 454,-1000,-1000,-1000,-1000,-1000,-1000, 92, 406, 205,
357: 202, 199, 198, 196, 100, 193, -25, 155,-1000,-1000,
358: -1000,-1000,1135,-1000,-1000,-1000, -8,-1000,-1000,-1000,
359: -1000,-1000,-1000,-1000, 406,-1000,-1000,-1000,-1000,-1000,
360: 325,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
361: -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
362: -1000,-1000,-1000,-1000,1086, 319,1210, 319, 190,-1000,
363: -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
364: -1000,-1000,-1000, 406, 406, 406, 406,-1000, 406,-1000,
365: 291,-1000,-1000, 406, -43, 406, 406, 406, 309, 378,
366: -1000,-1000, 406, 173,-1000,-1000,-1000,-1000, 409, 312,
367: -1000,-1000,-1000, 310,-1000,-1000,-1000,-1000, 155, 406,
368: 406, 309, 378,-1000, 220, 307, 426,-1000, 305, 919,
369: 1016,1016, 302, 421, 406, 296, 406,-1000,-1000,-1000,
370: -1000,1069,-1000,-1000, 278,1115,-1000,-1000,-1000,-1000,
371: -1000,-1000,-1000,-1000,-1000,1069, 98, 171,-1000,-1000,
372: 1028,1028,-1000,-1000,-1000,-1000,1132,-1000,-1000,-1000,
373: 291, 291, 406,-1000,-1000, 58, 290, 100,-1000, 290,
374: -1000,-1000,-1000, 406,-1000, 113,-1000,-1000, 378,-1000,
375: 295, 776, -36, 155, -37, 406, 421,1016,1045,-1000,
376: 406,-1000,-1000,-1000,-1000,-1000,1016,-1000,1016, 281,
377: -1000,1016,-1000, 189,-1000, 700, 421,-1000,1016,-1000,
378: -1000,-1000,1016,1016,-1000, 700,-1000,1016,-1000,-1000,
379: 100, 421,-1000, 440, 187,-1000,1115,-1000,-1000,-1000,
380: 839,-1000,1115,1115,1115,1115,1115, -41, 204, 125,
381: 375,-1000,-1000, 375, 375,-1000, 163, 159, 149, 700,
382: -1000,1028,-1000,-1000,-1000,-1000,-1000, 278,-1000,-1000,
383: -1000, 291, 290,-1000, 185,-1000,-1000,-1000, -8,-1000,
384: 406,-1000, 170,-1000,-1000, 378, 141,-1000, 408,-1000,
385: 406,-1000,-1000, 168,-1000, 218,-1000, 679, 700,1005,
386: -1000, 700, 268, 36, 134, 700, 406, 657,-1000, 990,
387: 1016,1016,1016,1016,1016,1016,1016,1016,1016,1016,
388: -1000,-1000,-1000,-1000,-1000,-1000,-1000, 618, 133, -48,
389: -31, 571, 277, 120,-1000,-1000,-1000,1069, 64, 700,
390: -1000,-1000, 104, -41, -41, -41, 420,-1000, 375, 125,
391: 129, 125,1028,1028,1028, 124, 119, 111,-1000,-1000,
392: -1000, -8,-1000, 42,-1000, 85, 965,-1000,-1000, 406,
393: -2, 609,-1000, 378, 76,-1000, 10,-1000, 101,-1000,
394: -1000, 406,1016, 406, 344,-1000, 262, 273,1016,1016,
395: -1000, 421,-1000, -4, -48, -48, -48, 494, 35, 35,
396: 475, -31, -14,-1000,1016,-1000, 421, 421, 100,-1000,
397: 278,-1000,-1000, 375,-1000,-1000,-1000,-1000,-1000,-1000,
398: 1028,1028,1028,-1000,-1000,-1000, 965,-1000,-1000, 15,
399: -1000,-1000,-1000, 609,-1000,-1000, -23, 587,-1000,-1000,
400: -1000,-1000,1016,-1000,-1000,-1000, 259,-1000, 217,-1000,
401: 408, 408, 406,-1000, 700,-1000, 17,-1000,-1000,-1000,
402: 1016, 258, 700, 83, 240, 75,-1000,1016, 244, 240,
403: 238, 225, 223,-1000, 965,-1000, 609,-1000,-1000,1016,
404: -1000,-1000,-1000,-1000,-1000, 421,-1000,-1000, 700,-1000,
405: -1000,-1000,-1000,-1000, 700,-1000,-1000, 59, 700, 16,
406: 1016, 421, 700,-1000 };
407: short yypgo[]={
408:
409: 0, 629, 628, 15, 627, 10, 13, 18, 30, 624,
410: 613, 612, 4, 0, 611, 610, 609, 607, 14, 603,
411: 602, 596, 591, 590, 22, 589, 24, 586, 585, 71,
412: 29, 27, 21, 86, 17, 584, 55, 431, 1, 173,
413: 16, 388, 320, 9, 2, 6, 19, 3, 48, 582,
414: 581, 33, 38, 37, 580, 572, 563, 562, 553, 908,
415: 73, 552, 551, 550, 548, 547, 546, 545, 44, 543,
416: 20, 34, 39, 5, 32, 542, 35, 539, 533, 7,
417: 25, 26, 532, 531, 11, 12, 31, 526, 516, 514,
418: 8, 507, 428, 498, 497, 495, 488, 485, 484, 380,
419: 482, 481, 477, 475, 471, 467, 250, 464, 463, 23 };
420: short yyr1[]={
421:
422: 0, 1, 1, 55, 55, 55, 55, 55, 55, 55,
423: 2, 56, 56, 56, 56, 56, 56, 60, 52, 33,
424: 53, 53, 26, 26, 26, 27, 27, 34, 34, 17,
425: 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
426: 57, 57, 11, 11, 8, 9, 10, 10, 10, 10,
427: 10, 10, 10, 10, 10, 10, 10, 7, 7, 7,
428: 50, 50, 50, 50, 51, 51, 61, 61, 62, 62,
429: 63, 63, 74, 54, 54, 64, 64, 75, 76, 78,
430: 77, 77, 79, 79, 45, 45, 45, 45, 67, 67,
431: 80, 80, 69, 69, 81, 36, 18, 18, 19, 19,
432: 20, 20, 71, 71, 83, 82, 82, 84, 84, 43,
433: 43, 85, 85, 3, 65, 65, 86, 89, 87, 88,
434: 88, 90, 90, 12, 66, 66, 91, 21, 21, 68,
435: 22, 22, 23, 23, 38, 38, 38, 39, 39, 39,
436: 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
437: 39, 13, 13, 14, 14, 14, 14, 14, 14, 37,
438: 37, 37, 37, 32, 40, 40, 44, 44, 48, 48,
439: 48, 48, 48, 48, 47, 49, 49, 49, 41, 41,
440: 42, 42, 42, 42, 42, 42, 42, 42, 58, 58,
441: 58, 58, 58, 58, 58, 93, 24, 92, 92, 92,
442: 92, 92, 92, 92, 92, 92, 92, 92, 4, 94,
443: 95, 95, 95, 95, 70, 70, 35, 25, 25, 46,
444: 46, 15, 15, 28, 28, 59, 72, 73, 96, 97,
445: 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
446: 97, 97, 97, 98, 105, 105, 105, 100, 107, 107,
447: 107, 102, 102, 99, 99, 108, 108, 109, 109, 109,
448: 109, 109, 109, 16, 101, 103, 104, 104, 29, 29,
449: 6, 6, 30, 30, 30, 31, 31, 31, 31, 31,
450: 31, 5, 5, 5, 5, 106 };
451: short yyr2[]={
452:
453: 0, 0, 3, 2, 2, 2, 3, 3, 2, 1,
454: 1, 3, 3, 4, 4, 5, 3, 0, 1, 1,
455: 0, 1, 0, 2, 3, 1, 3, 1, 1, 1,
456: 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
457: 1, 5, 6, 5, 2, 1, 1, 1, 1, 1,
458: 1, 1, 1, 1, 1, 1, 1, 0, 4, 6,
459: 3, 4, 5, 3, 1, 3, 3, 3, 3, 3,
460: 3, 3, 3, 1, 3, 3, 3, 0, 4, 0,
461: 2, 3, 1, 3, 1, 2, 1, 1, 1, 3,
462: 1, 1, 1, 3, 3, 2, 1, 5, 1, 3,
463: 1, 3, 0, 3, 0, 2, 3, 1, 3, 1,
464: 1, 1, 3, 1, 3, 3, 4, 0, 2, 1,
465: 3, 1, 3, 1, 1, 2, 4, 1, 3, 0,
466: 0, 1, 1, 3, 1, 3, 1, 1, 1, 3,
467: 3, 3, 3, 2, 3, 3, 3, 3, 3, 2,
468: 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
469: 2, 4, 5, 5, 0, 1, 1, 1, 1, 1,
470: 1, 1, 1, 1, 5, 1, 1, 1, 1, 3,
471: 1, 1, 3, 3, 3, 3, 2, 3, 1, 6,
472: 2, 2, 6, 2, 2, 5, 3, 4, 5, 2,
473: 1, 1, 10, 1, 3, 4, 3, 3, 1, 1,
474: 3, 3, 7, 7, 0, 1, 3, 1, 3, 1,
475: 2, 1, 1, 1, 3, 0, 0, 0, 1, 2,
476: 2, 2, 2, 2, 2, 2, 3, 4, 4, 2,
477: 3, 1, 3, 3, 1, 1, 1, 3, 1, 1,
478: 1, 1, 1, 3, 3, 1, 3, 1, 1, 1,
479: 2, 2, 2, 1, 3, 3, 4, 4, 1, 3,
480: 1, 5, 1, 1, 1, 3, 3, 3, 3, 3,
481: 3, 1, 5, 5, 5, 0 };
482: short yychk[]={
483:
484: -1000, -1, -55, -2, 256, 3, 1, -56, -57, -58,
485: 18, 37, 4, 60, 23, 69, 44, -8, 40, -11,
486: -50, -61, -62, -63, -64, -65, -66, 66, 43, 57,
487: -92, 33, -93, 36, 35, 39, -9, 27, 42, 53,
488: 41, 30, 50, 55, -94, 20, 29, -95, -96, 48,
489: -35, 64, -15, 49, -10, 19, 45, 46, 47, -97,
490: 24, 58, 68, 52, 63, 28, 34, 31, 54, 25,
491: 72, 32, 21, 67, -98,-100,-101,-103,-104,-105,
492: -107, 62, 73, 59, 22, 65, 38, 51, 56, 26,
493: -17, 5, -59, -60, -60, -60, -60, 44, -70, 78,
494: -52, -33, 14, 78, -70, 78, 78, 78, 78, -70,
495: 78, -91, 83, -67, -80, -33, -51, 85, 83, -68,
496: -59, -92, 70, -59, -59, -59, -7, 82, -68, -68,
497: -68, -68, -75, -68, -37, -33, -59, -59, -59, 74,
498: -59, -59, -59, -59, -59, -59, -59, -99, -42, 82,
499: 84, 74, -37, -48, -41, -13, 12, 13, 5, 6,
500: 7, 8, 80, 81, -99, 74, -99,-102, -42, 82,
501: -99, 78, -59, -59, -59, -59, -59, -53, -52, -53,
502: -52, -52, -60, -33, -26, 74, -33, -51, -36, -33,
503: -33, -33, -74, 74, -76, -19, -18, -37, 74, -86,
504: -87, -89, -33, 78, 14, 74, -72, 74, -72, -36,
505: -51, -33, -33, -74, -76, -86, 76, -32, 74, -4,
506: 6, 74, 75, -25, -46, -38, 82, -39, 74, -47,
507: -37, -48, -13, 90, -40, -38, -40, 74, -3, 6,
508: -33, 74, -33, -41,-108, -42, 74,-109, 82, 84,
509: -16, 15, -13, 82, 83, 84, 85, -41, -41, -29,
510: 78, -6, -37, 74, 78, -30, -39, -5, -31, -38,
511: -47, 74, -30,-106,-106,-106,-106, -41, 82, -26,
512: -26, -52, -68, 75, -27, -34, -33, 82, -71, 74,
513: -70, -71, -54, -37, 83, 78, -20, -18, 74, -8,
514: 83, -80, 83, -69, -81, -33, -3, -38, -38, 74,
515: -36, -38, -22, -40, -23, -38, 71, -38, 75, 78,
516: -13, 82, 83, 84, -14, 89, 88, 87, 86, 85,
517: 91, 93, 92, 95, 94, 96, -3, -38, -39, -38,
518: -38, -38, -70, -85, -3, 75, 75, 78, -41, -38,
519: 82, 84, -41, -41, -41, -41, -41, 75, 78, -29,
520: -29, -29, 78, 78, 78, -39, -5, -31,-106,-106,
521: -26, -71, 75, 78, -7, -82, -83, -36, 75, 78,
522: -77, -78, -18, 78, -88, -90, -12, 14, -21, -33,
523: 75, 78, 76, -73, 75, -73, 82, 75, 77, 78,
524: -33, 75, -46, -38, -38, -38, -38, -38, -38, -38,
525: -38, -38, -38, 75, 78, 75, 74, 78, 75,-109,
526: -41, 75, -6, 78, -39, -5, -39, -5, -39, -5,
527: 78, 78, 78, -7, -34, 75, 78, -84, -43, -38,
528: 82, -37, 83, 78, -79, -45, -44, -13, -47, -49,
529: -33, -48, 74, 11, 10, 9, -24, -18, -33, 75,
530: 78, 81, 78, -81, -38, -24, -33, 70, 75, -32,
531: 74, -40, -38, -3, -39, -85, -3, -70, -24, -39,
532: -24, -24, -24, -84, 77, -79, 82, -44, 75, 76,
533: -90, -12, -33, -73, 75, 78, 75, 75, -38, 75,
534: 75, 75, 75, -43, -38, -45, -44, -28, -38, -3,
535: 78, 78, -38, -3 };
536: short yydef[]={
537:
538: 1, -2, 0, 0, 9, 10, 2, 3, 4, 5,
539: 0, 225, 8, 17, 17, 17, 17, 214, 0, 30,
540: -2, 32, 33, 34, -2, 36, 37, 38, 40, 129,
541: 188, 225, 0, 225, 225, 225, 57, 129, 129, 129,
542: 129, 77, 129, 124, 0, 225, 225, 200, 201, 225,
543: 203, 225, 225, 225, 45, 209, 225, 225, 225, 228,
544: 225, 221, 222, 46, 47, 48, 49, 50, 51, 52,
545: 53, 54, 55, 56, 0, 0, 0, 0, 241, 225,
546: 225, 225, 225, 225, 244, 245, 246, 248, 249, 250,
547: 6, 29, 7, 20, 20, 0, 0, 17, 0, 215,
548: 22, 18, 19, 0, 0, 215, 0, 0, 0, 0,
549: 117, 125, 0, 39, 88, 90, 91, 64, 0, 0,
550: 226, 190, 191, 0, 193, 194, 44, 226, 0, 0,
551: 0, 0, 0, 117, 0, 159, 0, 199, 0, 0,
552: 164, 164, 0, 0, 0, 0, 0, 229, -2, 231,
553: 232, 0, 180, 181, 0, 0, 168, 169, 170, 171,
554: 172, 173, 151, 152, 233, 0, 234, 235, -2, 252,
555: 239, 0, 285, 285, 285, 285, 0, 11, 21, 12,
556: 22, 22, 0, 129, 16, 0, 102, 214, 63, 102,
557: 67, 69, 71, 0, 76, 0, 98, 96, 0, 115,
558: 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,
559: 0, 66, 68, 70, 75, 114, 0, 160, -2, 0,
560: 208, 0, 204, 0, 217, 219, 0, 134, 0, 136,
561: 137, 138, 0, 0, 206, 165, 207, 0, 210, 113,
562: -2, 0, 216, 257, 0, 178, 0, 255, 258, 259,
563: 0, 263, 0, 0, 0, 0, 0, 186, 257, 236,
564: 0, 268, 270, 0, 0, 240, -2, 273, 274, 0,
565: -2, 0, 242, 243, 247, 264, 265, 285, 285, 13,
566: 14, 22, 102, 23, 0, 25, 27, 28, 57, 104,
567: 0, 95, 0, 73, 79, 0, 0, 100, 0, 118,
568: 0, 89, 65, 0, 92, 0, 227, 0, 227, 0,
569: 61, 197, 0, 0, 131, -2, 0, 0, 205, 0,
570: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
571: 153, 154, 155, 156, 157, 158, 220, 0, 134, 143,
572: 149, 0, 0, 0, 111, -2, 254, 0, 0, 260,
573: 261, 262, 182, 183, 184, 185, 187, 253, 0, 238,
574: 0, 237, 0, 0, 0, 134, 0, 0, 266, 267,
575: 15, 57, 24, 0, 43, 0, 0, 62, 72, 0,
576: 0, 0, 99, 0, 0, 119, 121, 123, 126, 127,
577: 41, 0, 0, 0, 0, 58, 0, 161, 164, 0,
578: 198, 0, 218, 139, 140, 141, 142, -2, 145, 146,
579: 147, 148, 150, 135, 0, 195, 0, 0, 214, 256,
580: 257, 179, 269, 0, -2, 276, -2, 278, -2, 280,
581: 0, 0, 0, 42, 26, 103, 0, 105, 107, 110,
582: 109, 74, 78, 0, 80, 82, 84, 0, 86, 87,
583: 166, 167, 0, 175, 176, 177, 0, 101, 159, 116,
584: 0, 0, 0, 93, 94, 189, 0, 192, 227, 162,
585: 164, 0, 133, 0, 134, 0, 112, 0, 0, -2,
586: 0, 0, 0, 106, 0, 81, 0, 85, 97, 0,
587: 120, 122, 128, 59, 163, 0, 174, 212, 213, 271,
588: 282, 283, 284, 108, 110, 83, 84, 196, 223, 0,
589: 0, 0, 224, 202 };
590: #ifndef lint
591: static char yaccpar_sccsid[] = "@(#)yaccpar 4.1 (Berkeley) 2/11/83";
592: #endif not lint
593:
594: #
595: # define YYFLAG -1000
596: # define YYERROR goto yyerrlab
597: # define YYACCEPT return(0)
598: # define YYABORT return(1)
599:
600: /* parser for yacc output */
601:
602: #ifdef YYDEBUG
603: int yydebug = 0; /* 1 for debugging */
604: #endif
605: YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */
606: int yychar = -1; /* current input token number */
607: int yynerrs = 0; /* number of errors */
608: short yyerrflag = 0; /* error recovery flag */
609:
610: yyparse() {
611:
612: short yys[YYMAXDEPTH];
613: short yyj, yym;
614: register YYSTYPE *yypvt;
615: register short yystate, *yyps, yyn;
616: register YYSTYPE *yypv;
617: register short *yyxi;
618:
619: yystate = 0;
620: yychar = -1;
621: yynerrs = 0;
622: yyerrflag = 0;
623: yyps= &yys[-1];
624: yypv= &yyv[-1];
625:
626: yystack: /* put a state and value onto the stack */
627:
628: #ifdef YYDEBUG
629: if( yydebug ) printf( "state %d, char 0%o\n", yystate, yychar );
630: #endif
631: if( ++yyps> &yys[YYMAXDEPTH] ) { yyerror( "yacc stack overflow" ); return(1); }
632: *yyps = yystate;
633: ++yypv;
634: *yypv = yyval;
635:
636: yynewstate:
637:
638: yyn = yypact[yystate];
639:
640: if( yyn<= YYFLAG ) goto yydefault; /* simple state */
641:
642: if( yychar<0 ) if( (yychar=yylex())<0 ) yychar=0;
643: if( (yyn += yychar)<0 || yyn >= YYLAST ) goto yydefault;
644:
645: if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */
646: yychar = -1;
647: yyval = yylval;
648: yystate = yyn;
649: if( yyerrflag > 0 ) --yyerrflag;
650: goto yystack;
651: }
652:
653: yydefault:
654: /* default state action */
655:
656: if( (yyn=yydef[yystate]) == -2 ) {
657: if( yychar<0 ) if( (yychar=yylex())<0 ) yychar = 0;
658: /* look through exception table */
659:
660: for( yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate) ; yyxi += 2 ) ; /* VOID */
661:
662: while( *(yyxi+=2) >= 0 ){
663: if( *yyxi == yychar ) break;
664: }
665: if( (yyn = yyxi[1]) < 0 ) return(0); /* accept */
666: }
667:
668: if( yyn == 0 ){ /* error */
669: /* error ... attempt to resume parsing */
670:
671: switch( yyerrflag ){
672:
673: case 0: /* brand new error */
674:
675: yyerror( "syntax error" );
676: yyerrlab:
677: ++yynerrs;
678:
679: case 1:
680: case 2: /* incompletely recovered error ... try again */
681:
682: yyerrflag = 3;
683:
684: /* find a state where "error" is a legal shift action */
685:
686: while ( yyps >= yys ) {
687: yyn = yypact[*yyps] + YYERRCODE;
688: if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){
689: yystate = yyact[yyn]; /* simulate a shift of "error" */
690: goto yystack;
691: }
692: yyn = yypact[*yyps];
693:
694: /* the current yyps has no shift onn "error", pop stack */
695:
696: #ifdef YYDEBUG
697: if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] );
698: #endif
699: --yyps;
700: --yypv;
701: }
702:
703: /* there is no state on the stack with an error shift ... abort */
704:
705: yyabort:
706: return(1);
707:
708:
709: case 3: /* no shift yet; clobber input char */
710:
711: #ifdef YYDEBUG
712: if( yydebug ) printf( "error recovery discards char %d\n", yychar );
713: #endif
714:
715: if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */
716: yychar = -1;
717: goto yynewstate; /* try again in the same state */
718:
719: }
720:
721: }
722:
723: /* reduction by production yyn */
724:
725: #ifdef YYDEBUG
726: if( yydebug ) printf("reduce %d\n",yyn);
727: #endif
728: yyps -= yyr2[yyn];
729: yypvt = yypv;
730: yypv -= yyr2[yyn];
731: yyval = yypv[1];
732: yym=yyn;
733: /* consult goto table to find next state */
734: yyn = yyr1[yyn];
735: yyj = yypgo[yyn] + *yyps + 1;
736: if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]];
737: switch(yym){
738:
739: case 3:
740: # line 182 "gram.in"
741: { lastwasbranch = NO; } break;
742: case 5:
743: # line 185 "gram.in"
744: { if(yypvt[-1].labval && (yypvt[-1].labval->labelno==dorange))
745: enddo(yypvt[-1].labval->labelno);
746: if(lastwasbranch && thislabel==NULL)
747: warn("statement cannot be reached");
748: lastwasbranch = thiswasbranch;
749: thiswasbranch = NO;
750: if(yypvt[-1].labval)
751: {
752: if(yypvt[-1].labval->labtype == LABFORMAT)
753: err("label already that of a format");
754: else
755: yypvt[-1].labval->labtype = LABEXEC;
756: }
757: } break;
758: case 6:
759: # line 200 "gram.in"
760: { doinclude( yypvt[-0].charpval ); } break;
761: case 7:
762: # line 202 "gram.in"
763: { lastwasbranch = NO; endproc(); } break;
764: case 8:
765: # line 204 "gram.in"
766: { execerr("unclassifiable statement", CNULL); flline(); } break;
767: case 9:
768: # line 206 "gram.in"
769: { flline(); needkwd = NO; inioctl = NO;
770: yyerrok; yyclearin; } break;
771: case 10:
772: # line 211 "gram.in"
773: {
774: #ifdef SDB
775: char buff[10];
776: if( sdbflag )
777: {
778: # ifdef UCBVAXASM
779: p2pass( stabdline(N_SLINE, lineno) );
780: # else
781: sprintf(buff,"LL%d", ++dbglabel);
782: p2pass( stabline(0, N_SLINE, lineno, buff) );
783: p2pi("LL%d:\n", dbglabel);
784: # endif
785: }
786: #endif
787:
788: if(yystno != 0)
789: {
790: yyval.labval = thislabel = mklabel(yystno);
791: if( ! headerdone )
792: puthead(CNULL, procclass);
793: if(thislabel->labdefined)
794: execerr("label %s already defined",
795: convic(thislabel->stateno) );
796: else {
797: if(thislabel->blklevel!=0 && thislabel->blklevel<blklevel
798: && thislabel->labtype!=LABFORMAT)
799: warn1("there is a branch to label %s from outside block",
800: convic( (ftnint) (thislabel->stateno) ) );
801: thislabel->blklevel = blklevel;
802: thislabel->labdefined = YES;
803: if(thislabel->labtype != LABFORMAT)
804: putlabel(thislabel->labelno);
805: }
806: }
807: else yyval.labval = thislabel = NULL;
808: } break;
809: case 11:
810: # line 250 "gram.in"
811: {startproc(yypvt[-0].extval, CLMAIN); } break;
812: case 12:
813: # line 252 "gram.in"
814: { if(yypvt[-0].extval) NO66("named BLOCKDATA");
815: startproc(yypvt[-0].extval, CLBLOCK); } break;
816: case 13:
817: # line 255 "gram.in"
818: { entrypt(CLPROC, TYSUBR, (ftnint) 0, yypvt[-1].extval, yypvt[-0].chval); } break;
819: case 14:
820: # line 257 "gram.in"
821: { entrypt(CLPROC, TYUNKNOWN, (ftnint) 0, yypvt[-1].extval, yypvt[-0].chval); } break;
822: case 15:
823: # line 259 "gram.in"
824: { entrypt(CLPROC, yypvt[-4].ival, varleng, yypvt[-1].extval, yypvt[-0].chval); } break;
825: case 16:
826: # line 261 "gram.in"
827: { if(parstate==OUTSIDE || procclass==CLMAIN
828: || procclass==CLBLOCK)
829: execerr("misplaced entry statement", CNULL);
830: entrypt(CLENTRY, 0, (ftnint) 0, yypvt[-1].extval, yypvt[-0].chval);
831: } break;
832: case 17:
833: # line 269 "gram.in"
834: { newproc(); } break;
835: case 18:
836: # line 273 "gram.in"
837: { yyval.extval = newentry(yypvt[-0].namval); } break;
838: case 19:
839: # line 277 "gram.in"
840: { yyval.namval = mkname(toklen, token); } break;
841: case 20:
842: # line 280 "gram.in"
843: { yyval.extval = NULL; } break;
844: case 22:
845: # line 285 "gram.in"
846: { yyval.chval = 0; } break;
847: case 23:
848: # line 287 "gram.in"
849: { NO66(" () argument list");
850: yyval.chval = 0; } break;
851: case 24:
852: # line 290 "gram.in"
853: {yyval.chval = yypvt[-1].chval; } break;
854: case 25:
855: # line 294 "gram.in"
856: { yyval.chval = (yypvt[-0].namval ? mkchain(yypvt[-0].namval,CHNULL) : CHNULL ); } break;
857: case 26:
858: # line 296 "gram.in"
859: { if(yypvt[-0].namval) yypvt[-2].chval = yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].namval,CHNULL)); } break;
860: case 27:
861: # line 300 "gram.in"
862: { if(yypvt[-0].namval->vstg!=STGUNKNOWN && yypvt[-0].namval->vstg!=STGARG)
863: dclerr("name declared as argument after use", yypvt[-0].namval);
864: yypvt[-0].namval->vstg = STGARG;
865: } break;
866: case 28:
867: # line 305 "gram.in"
868: { NO66("altenate return argument");
869: yyval.namval = 0; substars = YES; } break;
870: case 29:
871: # line 312 "gram.in"
872: {
873: char *s;
874: s = copyn(toklen+1, token);
875: s[toklen] = '\0';
876: yyval.charpval = s;
877: } break;
878: case 38:
879: # line 328 "gram.in"
880: { NO66("SAVE statement");
881: saveall = YES; } break;
882: case 39:
883: # line 331 "gram.in"
884: { NO66("SAVE statement"); } break;
885: case 40:
886: # line 333 "gram.in"
887: { fmtstmt(thislabel); setfmt(thislabel); } break;
888: case 41:
889: # line 335 "gram.in"
890: { NO66("PARAMETER statement"); } break;
891: case 42:
892: # line 339 "gram.in"
893: { settype(yypvt[-3].namval, yypvt[-5].ival, yypvt[-0].ival);
894: if(ndim>0) setbound(yypvt[-3].namval,ndim,dims);
895: } break;
896: case 43:
897: # line 343 "gram.in"
898: { settype(yypvt[-2].namval, yypvt[-4].ival, yypvt[-0].ival);
899: if(ndim>0) setbound(yypvt[-2].namval,ndim,dims);
900: } break;
901: case 44:
902: # line 349 "gram.in"
903: { varleng = yypvt[-0].ival; } break;
904: case 45:
905: # line 353 "gram.in"
906: { varleng = (yypvt[-0].ival<0 || yypvt[-0].ival==TYLONG ? 0 : typesize[yypvt[-0].ival]); } break;
907: case 46:
908: # line 356 "gram.in"
909: { yyval.ival = TYLONG; } break;
910: case 47:
911: # line 357 "gram.in"
912: { yyval.ival = TYREAL; } break;
913: case 48:
914: # line 358 "gram.in"
915: { yyval.ival = TYCOMPLEX; } break;
916: case 49:
917: # line 359 "gram.in"
918: { yyval.ival = TYDREAL; } break;
919: case 50:
920: # line 360 "gram.in"
921: { NOEXT("DOUBLE COMPLEX statement"); yyval.ival = TYDCOMPLEX; } break;
922: case 51:
923: # line 361 "gram.in"
924: { yyval.ival = TYLOGICAL; } break;
925: case 52:
926: # line 362 "gram.in"
927: { NO66("CHARACTER statement"); yyval.ival = TYCHAR; } break;
928: case 53:
929: # line 363 "gram.in"
930: { yyval.ival = TYUNKNOWN; } break;
931: case 54:
932: # line 364 "gram.in"
933: { yyval.ival = TYUNKNOWN; } break;
934: case 55:
935: # line 365 "gram.in"
936: { NOEXT("AUTOMATIC statement"); yyval.ival = - STGAUTO; } break;
937: case 56:
938: # line 366 "gram.in"
939: { NOEXT("STATIC statement"); yyval.ival = - STGBSS; } break;
940: case 57:
941: # line 370 "gram.in"
942: { yyval.ival = varleng; } break;
943: case 58:
944: # line 372 "gram.in"
945: {
946: expptr p;
947: p = yypvt[-1].expval;
948: NO66("length specification *n");
949: if( ! ISICON(p) || p->constblock.const.ci<0 )
950: {
951: yyval.ival = 0;
952: dclerr("length must be a positive integer constant",
953: PNULL);
954: }
955: else yyval.ival = p->constblock.const.ci;
956: } break;
957: case 59:
958: # line 385 "gram.in"
959: { NO66("length specification *(*)"); yyval.ival = -1; } break;
960: case 60:
961: # line 389 "gram.in"
962: { incomm( yyval.extval = comblock(0, CNULL) , yypvt[-0].namval ); } break;
963: case 61:
964: # line 391 "gram.in"
965: { yyval.extval = yypvt[-1].extval; incomm(yypvt[-1].extval, yypvt[-0].namval); } break;
966: case 62:
967: # line 393 "gram.in"
968: { yyval.extval = yypvt[-2].extval; incomm(yypvt[-2].extval, yypvt[-0].namval); } break;
969: case 63:
970: # line 395 "gram.in"
971: { incomm(yypvt[-2].extval, yypvt[-0].namval); } break;
972: case 64:
973: # line 399 "gram.in"
974: { yyval.extval = comblock(0, CNULL); } break;
975: case 65:
976: # line 401 "gram.in"
977: { yyval.extval = comblock(toklen, token); } break;
978: case 66:
979: # line 405 "gram.in"
980: { setext(yypvt[-0].namval); } break;
981: case 67:
982: # line 407 "gram.in"
983: { setext(yypvt[-0].namval); } break;
984: case 68:
985: # line 411 "gram.in"
986: { NO66("INTRINSIC statement"); setintr(yypvt[-0].namval); } break;
987: case 69:
988: # line 413 "gram.in"
989: { setintr(yypvt[-0].namval); } break;
990: case 72:
991: # line 421 "gram.in"
992: {
993: struct Equivblock *p;
994: if(nequiv >= maxequiv)
995: many("equivalences", 'q');
996: p = & eqvclass[nequiv++];
997: p->eqvinit = NO;
998: p->eqvbottom = 0;
999: p->eqvtop = 0;
1000: p->equivs = yypvt[-1].eqvval;
1001: } break;
1002: case 73:
1003: # line 434 "gram.in"
1004: { yyval.eqvval=ALLOC(Eqvchain);
1005: yyval.eqvval->eqvitem.eqvlhs = (struct Primblock *)yypvt[-0].expval;
1006: } break;
1007: case 74:
1008: # line 438 "gram.in"
1009: { yyval.eqvval=ALLOC(Eqvchain);
1010: yyval.eqvval->eqvitem.eqvlhs = (struct Primblock *) yypvt[-0].expval;
1011: yyval.eqvval->eqvnextp = yypvt[-2].eqvval;
1012: } break;
1013: case 77:
1014: # line 449 "gram.in"
1015: { if(parstate == OUTSIDE)
1016: {
1017: newproc();
1018: startproc(PNULL, CLMAIN);
1019: }
1020: if(parstate < INDATA)
1021: {
1022: enddcl();
1023: parstate = INDATA;
1024: }
1025: } break;
1026: case 78:
1027: # line 463 "gram.in"
1028: { ftnint junk;
1029: if(nextdata(&junk,&junk) != NULL)
1030: {
1031: err("too few initializers");
1032: curdtp = NULL;
1033: }
1034: frdata(yypvt[-3].chval);
1035: frrpl();
1036: } break;
1037: case 79:
1038: # line 474 "gram.in"
1039: { toomanyinit = NO; } break;
1040: case 82:
1041: # line 479 "gram.in"
1042: { dataval(PNULL, yypvt[-0].expval); } break;
1043: case 83:
1044: # line 481 "gram.in"
1045: { dataval(yypvt[-2].expval, yypvt[-0].expval); } break;
1046: case 85:
1047: # line 486 "gram.in"
1048: { if( yypvt[-1].ival==OPMINUS && ISCONST(yypvt[-0].expval) )
1049: consnegop(yypvt[-0].expval);
1050: yyval.expval = yypvt[-0].expval;
1051: } break;
1052: case 90:
1053: # line 499 "gram.in"
1054: { int k;
1055: yypvt[-0].namval->vsave = YES;
1056: k = yypvt[-0].namval->vstg;
1057: if( ! ONEOF(k, M(STGUNKNOWN)|M(STGBSS)|M(STGINIT)) )
1058: dclerr("can only save static variables", yypvt[-0].namval);
1059: } break;
1060: case 91:
1061: # line 506 "gram.in"
1062: { yypvt[-0].extval->extsave = 1; } break;
1063: case 94:
1064: # line 514 "gram.in"
1065: { if(yypvt[-2].namval->vclass == CLUNKNOWN)
1066: { yypvt[-2].namval->vclass = CLPARAM;
1067: ( (struct Paramblock *) (yypvt[-2].namval) )->paramval = yypvt[-0].expval;
1068: }
1069: else dclerr("cannot make %s parameter", yypvt[-2].namval);
1070: } break;
1071: case 95:
1072: # line 523 "gram.in"
1073: { if(ndim>0) setbound(yypvt[-1].namval, ndim, dims); } break;
1074: case 96:
1075: # line 527 "gram.in"
1076: { Namep np;
1077: np = ( (struct Primblock *) yypvt[-0].expval) -> namep;
1078: vardcl(np);
1079: if(np->vstg == STGCOMMON)
1080: extsymtab[np->vardesc.varno].extinit = YES;
1081: else if(np->vstg==STGEQUIV)
1082: eqvclass[np->vardesc.varno].eqvinit = YES;
1083: else if(np->vstg!=STGINIT && np->vstg!=STGBSS)
1084: dclerr("inconsistent storage classes", np);
1085: yyval.chval = mkchain(yypvt[-0].expval, CHNULL);
1086: } break;
1087: case 97:
1088: # line 539 "gram.in"
1089: { chainp p; struct Impldoblock *q;
1090: q = ALLOC(Impldoblock);
1091: q->tag = TIMPLDO;
1092: q->varnp = (Namep) (yypvt[-1].chval->datap);
1093: p = yypvt[-1].chval->nextp;
1094: if(p) { q->implb = (expptr)(p->datap); p = p->nextp; }
1095: if(p) { q->impub = (expptr)(p->datap); p = p->nextp; }
1096: if(p) { q->impstep = (expptr)(p->datap); p = p->nextp; }
1097: frchain( & (yypvt[-1].chval) );
1098: yyval.chval = mkchain(q, CHNULL);
1099: q->datalist = hookup(yypvt[-3].chval, yyval.chval);
1100: } break;
1101: case 98:
1102: # line 554 "gram.in"
1103: { curdtp = yypvt[-0].chval; curdtelt = 0; } break;
1104: case 99:
1105: # line 556 "gram.in"
1106: { yyval.chval = hookup(yypvt[-2].chval, yypvt[-0].chval); } break;
1107: case 101:
1108: # line 561 "gram.in"
1109: { yyval.chval = hookup(yypvt[-2].chval, yypvt[-0].chval); } break;
1110: case 102:
1111: # line 565 "gram.in"
1112: { ndim = 0; } break;
1113: case 104:
1114: # line 569 "gram.in"
1115: { ndim = 0; } break;
1116: case 107:
1117: # line 574 "gram.in"
1118: { if(ndim == maxdim)
1119: err("too many dimensions");
1120: else if(ndim < maxdim)
1121: { dims[ndim].lb = 0;
1122: dims[ndim].ub = yypvt[-0].expval;
1123: }
1124: ++ndim;
1125: } break;
1126: case 108:
1127: # line 583 "gram.in"
1128: { if(ndim == maxdim)
1129: err("too many dimensions");
1130: else if(ndim < maxdim)
1131: { dims[ndim].lb = yypvt[-2].expval;
1132: dims[ndim].ub = yypvt[-0].expval;
1133: }
1134: ++ndim;
1135: } break;
1136: case 109:
1137: # line 594 "gram.in"
1138: { yyval.expval = 0; } break;
1139: case 111:
1140: # line 599 "gram.in"
1141: { nstars = 1; labarray[0] = yypvt[-0].labval; } break;
1142: case 112:
1143: # line 601 "gram.in"
1144: { if(nstars < MAXLABLIST) labarray[nstars++] = yypvt[-0].labval; } break;
1145: case 113:
1146: # line 605 "gram.in"
1147: { yyval.labval = execlab( convci(toklen, token) ); } break;
1148: case 114:
1149: # line 609 "gram.in"
1150: { NO66("IMPLICIT statement"); } break;
1151: case 117:
1152: # line 616 "gram.in"
1153: { needkwd = 1; } break;
1154: case 118:
1155: # line 617 "gram.in"
1156: { vartype = yypvt[-0].ival; } break;
1157: case 121:
1158: # line 625 "gram.in"
1159: { setimpl(vartype, varleng, yypvt[-0].ival, yypvt[-0].ival); } break;
1160: case 122:
1161: # line 627 "gram.in"
1162: { setimpl(vartype, varleng, yypvt[-2].ival, yypvt[-0].ival); } break;
1163: case 123:
1164: # line 631 "gram.in"
1165: { if(toklen!=1 || token[0]<'a' || token[0]>'z')
1166: {
1167: dclerr("implicit item must be single letter", PNULL);
1168: yyval.ival = 0;
1169: }
1170: else yyval.ival = token[0];
1171: } break;
1172: case 126:
1173: # line 645 "gram.in"
1174: {
1175: if(yypvt[-2].namval->vclass == CLUNKNOWN)
1176: {
1177: yypvt[-2].namval->vclass = CLNAMELIST;
1178: yypvt[-2].namval->vtype = TYINT;
1179: yypvt[-2].namval->vstg = STGINIT;
1180: yypvt[-2].namval->varxptr.namelist = yypvt[-0].chval;
1181: yypvt[-2].namval->vardesc.varno = ++lastvarno;
1182: }
1183: else dclerr("cannot be a namelist name", yypvt[-2].namval);
1184: } break;
1185: case 127:
1186: # line 659 "gram.in"
1187: { yyval.chval = mkchain(yypvt[-0].namval, CHNULL); } break;
1188: case 128:
1189: # line 661 "gram.in"
1190: { yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].namval, CHNULL)); } break;
1191: case 129:
1192: # line 665 "gram.in"
1193: { switch(parstate)
1194: {
1195: case OUTSIDE: newproc();
1196: startproc(PNULL, CLMAIN);
1197: case INSIDE: parstate = INDCL;
1198: case INDCL: break;
1199:
1200: default:
1201: dclerr("declaration among executables", PNULL);
1202: }
1203: } break;
1204: case 130:
1205: # line 678 "gram.in"
1206: { yyval.chval = 0; } break;
1207: case 132:
1208: # line 683 "gram.in"
1209: { yyval.chval = mkchain(yypvt[-0].expval, CHNULL); } break;
1210: case 133:
1211: # line 685 "gram.in"
1212: { yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].expval,CHNULL) ); } break;
1213: case 135:
1214: # line 690 "gram.in"
1215: { yyval.expval = yypvt[-1].expval; } break;
1216: case 139:
1217: # line 697 "gram.in"
1218: { yyval.expval = mkexpr(yypvt[-1].ival, yypvt[-2].expval, yypvt[-0].expval); } break;
1219: case 140:
1220: # line 699 "gram.in"
1221: { yyval.expval = mkexpr(OPSTAR, yypvt[-2].expval, yypvt[-0].expval); } break;
1222: case 141:
1223: # line 701 "gram.in"
1224: { yyval.expval = mkexpr(OPSLASH, yypvt[-2].expval, yypvt[-0].expval); } break;
1225: case 142:
1226: # line 703 "gram.in"
1227: { yyval.expval = mkexpr(OPPOWER, yypvt[-2].expval, yypvt[-0].expval); } break;
1228: case 143:
1229: # line 705 "gram.in"
1230: { if(yypvt[-1].ival == OPMINUS)
1231: yyval.expval = mkexpr(OPNEG, yypvt[-0].expval, ENULL);
1232: else yyval.expval = yypvt[-0].expval;
1233: } break;
1234: case 144:
1235: # line 710 "gram.in"
1236: { yyval.expval = mkexpr(yypvt[-1].ival, yypvt[-2].expval, yypvt[-0].expval); } break;
1237: case 145:
1238: # line 712 "gram.in"
1239: { NO66(".EQV. operator");
1240: yyval.expval = mkexpr(OPEQV, yypvt[-2].expval,yypvt[-0].expval); } break;
1241: case 146:
1242: # line 715 "gram.in"
1243: { NO66(".NEQV. operator");
1244: yyval.expval = mkexpr(OPNEQV, yypvt[-2].expval, yypvt[-0].expval); } break;
1245: case 147:
1246: # line 718 "gram.in"
1247: { yyval.expval = mkexpr(OPOR, yypvt[-2].expval, yypvt[-0].expval); } break;
1248: case 148:
1249: # line 720 "gram.in"
1250: { yyval.expval = mkexpr(OPAND, yypvt[-2].expval, yypvt[-0].expval); } break;
1251: case 149:
1252: # line 722 "gram.in"
1253: { yyval.expval = mkexpr(OPNOT, yypvt[-0].expval, ENULL); } break;
1254: case 150:
1255: # line 724 "gram.in"
1256: { NO66("concatenation operator //");
1257: yyval.expval = mkexpr(OPCONCAT, yypvt[-2].expval, yypvt[-0].expval); } break;
1258: case 151:
1259: # line 728 "gram.in"
1260: { yyval.ival = OPPLUS; } break;
1261: case 152:
1262: # line 729 "gram.in"
1263: { yyval.ival = OPMINUS; } break;
1264: case 153:
1265: # line 732 "gram.in"
1266: { yyval.ival = OPEQ; } break;
1267: case 154:
1268: # line 733 "gram.in"
1269: { yyval.ival = OPGT; } break;
1270: case 155:
1271: # line 734 "gram.in"
1272: { yyval.ival = OPLT; } break;
1273: case 156:
1274: # line 735 "gram.in"
1275: { yyval.ival = OPGE; } break;
1276: case 157:
1277: # line 736 "gram.in"
1278: { yyval.ival = OPLE; } break;
1279: case 158:
1280: # line 737 "gram.in"
1281: { yyval.ival = OPNE; } break;
1282: case 159:
1283: # line 741 "gram.in"
1284: { yyval.expval = mkprim(yypvt[-0].namval, PNULL, CHNULL); } break;
1285: case 160:
1286: # line 743 "gram.in"
1287: { NO66("substring operator :");
1288: yyval.expval = mkprim(yypvt[-1].namval, PNULL, yypvt[-0].chval); } break;
1289: case 161:
1290: # line 746 "gram.in"
1291: { yyval.expval = mkprim(yypvt[-3].namval, mklist(yypvt[-1].chval), CHNULL); } break;
1292: case 162:
1293: # line 748 "gram.in"
1294: { NO66("substring operator :");
1295: yyval.expval = mkprim(yypvt[-4].namval, mklist(yypvt[-2].chval), yypvt[-0].chval); } break;
1296: case 163:
1297: # line 753 "gram.in"
1298: { yyval.chval = mkchain(yypvt[-3].expval, mkchain(yypvt[-1].expval,CHNULL)); } break;
1299: case 164:
1300: # line 757 "gram.in"
1301: { yyval.expval = 0; } break;
1302: case 166:
1303: # line 762 "gram.in"
1304: { if(yypvt[-0].namval->vclass == CLPARAM)
1305: yyval.expval = (expptr) cpexpr(
1306: ( (struct Paramblock *) (yypvt[-0].namval) ) -> paramval);
1307: } break;
1308: case 168:
1309: # line 769 "gram.in"
1310: { yyval.expval = mklogcon(1); } break;
1311: case 169:
1312: # line 770 "gram.in"
1313: { yyval.expval = mklogcon(0); } break;
1314: case 170:
1315: # line 771 "gram.in"
1316: { yyval.expval = mkstrcon(toklen, token); } break;
1317: case 171:
1318: # line 772 "gram.in"
1319: { yyval.expval = mkintcon( convci(toklen, token) ); } break;
1320: case 172:
1321: # line 773 "gram.in"
1322: { yyval.expval = mkrealcon(TYREAL, convcd(toklen, token)); } break;
1323: case 173:
1324: # line 774 "gram.in"
1325: { yyval.expval = mkrealcon(TYDREAL, convcd(toklen, token)); } break;
1326: case 174:
1327: # line 778 "gram.in"
1328: { yyval.expval = mkcxcon(yypvt[-3].expval,yypvt[-1].expval); } break;
1329: case 175:
1330: # line 782 "gram.in"
1331: { NOEXT("hex constant");
1332: yyval.expval = mkbitcon(4, toklen, token); } break;
1333: case 176:
1334: # line 785 "gram.in"
1335: { NOEXT("octal constant");
1336: yyval.expval = mkbitcon(3, toklen, token); } break;
1337: case 177:
1338: # line 788 "gram.in"
1339: { NOEXT("binary constant");
1340: yyval.expval = mkbitcon(1, toklen, token); } break;
1341: case 179:
1342: # line 794 "gram.in"
1343: { yyval.expval = yypvt[-1].expval; } break;
1344: case 182:
1345: # line 800 "gram.in"
1346: { yyval.expval = mkexpr(yypvt[-1].ival, yypvt[-2].expval, yypvt[-0].expval); } break;
1347: case 183:
1348: # line 802 "gram.in"
1349: { yyval.expval = mkexpr(OPSTAR, yypvt[-2].expval, yypvt[-0].expval); } break;
1350: case 184:
1351: # line 804 "gram.in"
1352: { yyval.expval = mkexpr(OPSLASH, yypvt[-2].expval, yypvt[-0].expval); } break;
1353: case 185:
1354: # line 806 "gram.in"
1355: { yyval.expval = mkexpr(OPPOWER, yypvt[-2].expval, yypvt[-0].expval); } break;
1356: case 186:
1357: # line 808 "gram.in"
1358: { if(yypvt[-1].ival == OPMINUS)
1359: yyval.expval = mkexpr(OPNEG, yypvt[-0].expval, ENULL);
1360: else yyval.expval = yypvt[-0].expval;
1361: } break;
1362: case 187:
1363: # line 813 "gram.in"
1364: { NO66("concatenation operator //");
1365: yyval.expval = mkexpr(OPCONCAT, yypvt[-2].expval, yypvt[-0].expval); } break;
1366: case 189:
1367: # line 818 "gram.in"
1368: {
1369: if(yypvt[-2].labval->labdefined)
1370: execerr("no backward DO loops", CNULL);
1371: yypvt[-2].labval->blklevel = blklevel+1;
1372: exdo(yypvt[-2].labval->labelno, yypvt[-0].chval);
1373: } break;
1374: case 190:
1375: # line 825 "gram.in"
1376: { exendif(); thiswasbranch = NO; } break;
1377: case 192:
1378: # line 828 "gram.in"
1379: { exelif(yypvt[-2].expval); lastwasbranch = NO; } break;
1380: case 193:
1381: # line 830 "gram.in"
1382: { exelse(); lastwasbranch = NO; } break;
1383: case 194:
1384: # line 832 "gram.in"
1385: { exendif(); lastwasbranch = NO; } break;
1386: case 195:
1387: # line 836 "gram.in"
1388: { exif(yypvt[-1].expval); } break;
1389: case 196:
1390: # line 840 "gram.in"
1391: { yyval.chval = mkchain(yypvt[-2].namval, yypvt[-0].chval); } break;
1392: case 197:
1393: # line 844 "gram.in"
1394: { exequals(yypvt[-2].expval, yypvt[-0].expval); } break;
1395: case 198:
1396: # line 846 "gram.in"
1397: { exassign(yypvt[-0].namval, yypvt[-2].labval); } break;
1398: case 201:
1399: # line 850 "gram.in"
1400: { inioctl = NO; } break;
1401: case 202:
1402: # line 852 "gram.in"
1403: { exarif(yypvt[-6].expval, yypvt[-4].labval, yypvt[-2].labval, yypvt[-0].labval); thiswasbranch = YES; } break;
1404: case 203:
1405: # line 854 "gram.in"
1406: { excall(yypvt[-0].namval, PNULL, 0, labarray); } break;
1407: case 204:
1408: # line 856 "gram.in"
1409: { excall(yypvt[-2].namval, PNULL, 0, labarray); } break;
1410: case 205:
1411: # line 858 "gram.in"
1412: { if(nstars < MAXLABLIST)
1413: excall(yypvt[-3].namval, mklist(yypvt[-1].chval), nstars, labarray);
1414: else
1415: err("too many alternate returns");
1416: } break;
1417: case 206:
1418: # line 864 "gram.in"
1419: { exreturn(yypvt[-0].expval); thiswasbranch = YES; } break;
1420: case 207:
1421: # line 866 "gram.in"
1422: { exstop(yypvt[-2].ival, yypvt[-0].expval); thiswasbranch = yypvt[-2].ival; } break;
1423: case 208:
1424: # line 870 "gram.in"
1425: { yyval.labval = mklabel( convci(toklen, token) ); } break;
1426: case 209:
1427: # line 874 "gram.in"
1428: { if(parstate == OUTSIDE)
1429: {
1430: newproc();
1431: startproc(PNULL, CLMAIN);
1432: }
1433: } break;
1434: case 210:
1435: # line 883 "gram.in"
1436: { exgoto(yypvt[-0].labval); thiswasbranch = YES; } break;
1437: case 211:
1438: # line 885 "gram.in"
1439: { exasgoto(yypvt[-0].namval); thiswasbranch = YES; } break;
1440: case 212:
1441: # line 887 "gram.in"
1442: { exasgoto(yypvt[-4].namval); thiswasbranch = YES; } break;
1443: case 213:
1444: # line 889 "gram.in"
1445: { if(nstars < MAXLABLIST)
1446: putcmgo(fixtype(yypvt[-0].expval), nstars, labarray);
1447: else
1448: err("computed GOTO list too long");
1449: } break;
1450: case 216:
1451: # line 901 "gram.in"
1452: { nstars = 0; yyval.namval = yypvt[-0].namval; } break;
1453: case 217:
1454: # line 905 "gram.in"
1455: { yyval.chval = (yypvt[-0].expval ? mkchain(yypvt[-0].expval,CHNULL) : CHNULL); } break;
1456: case 218:
1457: # line 907 "gram.in"
1458: { if(yypvt[-0].expval)
1459: if(yypvt[-2].chval) yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].expval,CHNULL));
1460: else yyval.chval = mkchain(yypvt[-0].expval,CHNULL);
1461: else
1462: yyval.chval = yypvt[-2].chval;
1463: } break;
1464: case 220:
1465: # line 917 "gram.in"
1466: { if(nstars<MAXLABLIST) labarray[nstars++] = yypvt[-0].labval; yyval.expval = 0; } break;
1467: case 221:
1468: # line 921 "gram.in"
1469: { yyval.ival = 0; } break;
1470: case 222:
1471: # line 923 "gram.in"
1472: { yyval.ival = 1; } break;
1473: case 223:
1474: # line 927 "gram.in"
1475: { yyval.chval = mkchain(yypvt[-0].expval, CHNULL); } break;
1476: case 224:
1477: # line 929 "gram.in"
1478: { yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].expval,CHNULL) ); } break;
1479: case 225:
1480: # line 933 "gram.in"
1481: { if(parstate == OUTSIDE)
1482: {
1483: newproc();
1484: startproc(PNULL, CLMAIN);
1485: }
1486: if(parstate < INDATA) enddcl();
1487: } break;
1488: case 226:
1489: # line 943 "gram.in"
1490: { intonly = YES; } break;
1491: case 227:
1492: # line 947 "gram.in"
1493: { intonly = NO; } break;
1494: case 228:
1495: # line 952 "gram.in"
1496: { endio(); } break;
1497: case 230:
1498: # line 957 "gram.in"
1499: { ioclause(IOSUNIT, yypvt[-0].expval); endioctl(); } break;
1500: case 231:
1501: # line 959 "gram.in"
1502: { ioclause(IOSUNIT, PNULL); endioctl(); } break;
1503: case 232:
1504: # line 961 "gram.in"
1505: { ioclause(IOSUNIT, IOSTDERR); endioctl(); } break;
1506: case 234:
1507: # line 964 "gram.in"
1508: { doio(PNULL); } break;
1509: case 235:
1510: # line 966 "gram.in"
1511: { doio(PNULL); } break;
1512: case 236:
1513: # line 968 "gram.in"
1514: { doio(yypvt[-0].chval); } break;
1515: case 237:
1516: # line 970 "gram.in"
1517: { doio(yypvt[-0].chval); } break;
1518: case 238:
1519: # line 972 "gram.in"
1520: { doio(yypvt[-0].chval); } break;
1521: case 239:
1522: # line 974 "gram.in"
1523: { doio(PNULL); } break;
1524: case 240:
1525: # line 976 "gram.in"
1526: { doio(yypvt[-0].chval); } break;
1527: case 241:
1528: # line 978 "gram.in"
1529: { doio(PNULL); } break;
1530: case 242:
1531: # line 980 "gram.in"
1532: { doio(yypvt[-0].chval); } break;
1533: case 244:
1534: # line 987 "gram.in"
1535: { iostmt = IOBACKSPACE; } break;
1536: case 245:
1537: # line 989 "gram.in"
1538: { iostmt = IOREWIND; } break;
1539: case 246:
1540: # line 991 "gram.in"
1541: { iostmt = IOENDFILE; } break;
1542: case 248:
1543: # line 998 "gram.in"
1544: { iostmt = IOINQUIRE; } break;
1545: case 249:
1546: # line 1000 "gram.in"
1547: { iostmt = IOOPEN; } break;
1548: case 250:
1549: # line 1002 "gram.in"
1550: { iostmt = IOCLOSE; } break;
1551: case 251:
1552: # line 1006 "gram.in"
1553: {
1554: ioclause(IOSUNIT, PNULL);
1555: ioclause(IOSFMT, yypvt[-0].expval);
1556: endioctl();
1557: } break;
1558: case 252:
1559: # line 1012 "gram.in"
1560: {
1561: ioclause(IOSUNIT, PNULL);
1562: ioclause(IOSFMT, PNULL);
1563: endioctl();
1564: } break;
1565: case 253:
1566: # line 1020 "gram.in"
1567: { if(yypvt[-1].expval->headblock.vtype == TYCHAR)
1568: {
1569: ioclause(IOSUNIT, PNULL);
1570: ioclause(IOSFMT, yypvt[-1].expval);
1571: }
1572: else
1573: ioclause(IOSUNIT, yypvt[-1].expval);
1574: endioctl();
1575: } break;
1576: case 254:
1577: # line 1030 "gram.in"
1578: { endioctl(); } break;
1579: case 257:
1580: # line 1038 "gram.in"
1581: { ioclause(IOSPOSITIONAL, yypvt[-0].expval); } break;
1582: case 258:
1583: # line 1040 "gram.in"
1584: { ioclause(IOSPOSITIONAL, PNULL); } break;
1585: case 259:
1586: # line 1042 "gram.in"
1587: { ioclause(IOSPOSITIONAL, IOSTDERR); } break;
1588: case 260:
1589: # line 1044 "gram.in"
1590: { ioclause(yypvt[-1].ival, yypvt[-0].expval); } break;
1591: case 261:
1592: # line 1046 "gram.in"
1593: { ioclause(yypvt[-1].ival, PNULL); } break;
1594: case 262:
1595: # line 1048 "gram.in"
1596: { ioclause(yypvt[-1].ival, IOSTDERR); } break;
1597: case 263:
1598: # line 1052 "gram.in"
1599: { yyval.ival = iocname(); } break;
1600: case 264:
1601: # line 1056 "gram.in"
1602: { iostmt = IOREAD; } break;
1603: case 265:
1604: # line 1060 "gram.in"
1605: { iostmt = IOWRITE; } break;
1606: case 266:
1607: # line 1064 "gram.in"
1608: {
1609: iostmt = IOWRITE;
1610: ioclause(IOSUNIT, PNULL);
1611: ioclause(IOSFMT, yypvt[-1].expval);
1612: endioctl();
1613: } break;
1614: case 267:
1615: # line 1071 "gram.in"
1616: {
1617: iostmt = IOWRITE;
1618: ioclause(IOSUNIT, PNULL);
1619: ioclause(IOSFMT, PNULL);
1620: endioctl();
1621: } break;
1622: case 268:
1623: # line 1080 "gram.in"
1624: { yyval.chval = mkchain(yypvt[-0].tagval, CHNULL); } break;
1625: case 269:
1626: # line 1082 "gram.in"
1627: { yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].tagval, CHNULL)); } break;
1628: case 270:
1629: # line 1086 "gram.in"
1630: { yyval.tagval = (tagptr) yypvt[-0].expval; } break;
1631: case 271:
1632: # line 1088 "gram.in"
1633: { yyval.tagval = (tagptr) mkiodo(yypvt[-1].chval,yypvt[-3].chval); } break;
1634: case 272:
1635: # line 1092 "gram.in"
1636: { yyval.chval = mkchain(yypvt[-0].expval, CHNULL); } break;
1637: case 273:
1638: # line 1094 "gram.in"
1639: { yyval.chval = mkchain(yypvt[-0].tagval, CHNULL); } break;
1640: case 275:
1641: # line 1099 "gram.in"
1642: { yyval.chval = mkchain(yypvt[-2].expval, mkchain(yypvt[-0].expval, CHNULL) ); } break;
1643: case 276:
1644: # line 1101 "gram.in"
1645: { yyval.chval = mkchain(yypvt[-2].expval, mkchain(yypvt[-0].tagval, CHNULL) ); } break;
1646: case 277:
1647: # line 1103 "gram.in"
1648: { yyval.chval = mkchain(yypvt[-2].tagval, mkchain(yypvt[-0].expval, CHNULL) ); } break;
1649: case 278:
1650: # line 1105 "gram.in"
1651: { yyval.chval = mkchain(yypvt[-2].tagval, mkchain(yypvt[-0].tagval, CHNULL) ); } break;
1652: case 279:
1653: # line 1107 "gram.in"
1654: { yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].expval, CHNULL) ); } break;
1655: case 280:
1656: # line 1109 "gram.in"
1657: { yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].tagval, CHNULL) ); } break;
1658: case 281:
1659: # line 1113 "gram.in"
1660: { yyval.tagval = (tagptr) yypvt[-0].expval; } break;
1661: case 282:
1662: # line 1115 "gram.in"
1663: { yyval.tagval = (tagptr) mkiodo(yypvt[-1].chval, mkchain(yypvt[-3].expval, CHNULL) ); } break;
1664: case 283:
1665: # line 1117 "gram.in"
1666: { yyval.tagval = (tagptr) mkiodo(yypvt[-1].chval, mkchain(yypvt[-3].tagval, CHNULL) ); } break;
1667: case 284:
1668: # line 1119 "gram.in"
1669: { yyval.tagval = (tagptr) mkiodo(yypvt[-1].chval, yypvt[-3].chval); } break;
1670: case 285:
1671: # line 1123 "gram.in"
1672: { startioctl(); } break;
1673: }
1674: goto yystack; /* stack new state and value */
1675:
1676: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.