|
|
1.1 root 1: #define YYDEBUG
2: # define EOS 1
3: # define NEWLINE 2
4: # define LPAR 3
5: # define RPAR 4
6: # define LBRACK 5
7: # define RBRACK 6
8: # define COMMA 7
9: # define COLON 8
10: # define ASGNOP 9
11: # define REPOP 10
12: # define OR 11
13: # define AND 12
14: # define NOT 13
15: # define RELOP 14
16: # define ADDOP 15
17: # define MULTOP 16
18: # define POWER 17
19: # define DOUBLEADDOP 18
20: # define ARROW 19
21: # define QUALOP 20
22: # define NAME 21
23: # define OPTNAME 22
24: # define STRUCTNAME 23
25: # define COMNAME 24
26: # define CONST 25
27: # define COMMON 26
28: # define INTERNAL 27
29: # define EXTERNAL 28
30: # define AUTOMATIC 29
31: # define STATIC 30
32: # define VALUE 31
33: # define PROCEDURE 32
34: # define BLOCKDATA 33
35: # define OPTION 34
36: # define INCLUDE 35
37: # define DEFINE 36
38: # define END 37
39: # define INTEGER 38
40: # define REAL 39
41: # define COMPLEX 40
42: # define LOGICAL 41
43: # define CHARACTER 42
44: # define STRUCT 43
45: # define FIELD 44
46: # define ARRAY 45
47: # define DIMENSION 46
48: # define LONG 47
49: # define SHORT 48
50: # define INITIAL 49
51: # define EQUIVALENCE 50
52: # define IMPLICIT 51
53: # define DEBUG 52
54: # define IF 53
55: # define ELSE 54
56: # define WHILE 55
57: # define UNTIL 56
58: # define REPEAT 57
59: # define DO 58
60: # define FOR 59
61: # define SWITCH 60
62: # define CASE 61
63: # define DEFAULT 62
64: # define GO 63
65: # define GOTO 64
66: # define BREAK 65
67: # define EXIT 66
68: # define NEXT 67
69: # define RETURN 68
70: # define CONTINUE 69
71: # define CALL 70
72: # define DOUBLE 71
73: # define PRECISION 72
74: # define DOUBLEPRECISION 73
75: # define SIZEOF 74
76: # define LENGTHOF 75
77: # define LETTER 76
78: # define READ 77
79: # define WRITE 78
80: # define READBIN 79
81: # define WRITEBIN 80
82: # define TRUE 81
83: # define FALSE 82
84: # define ESCAPE 83
85:
86: # line 85 "gram.in"
87: #include "defs"
88: ptr bgnexec(), addexec(), bgnproc(), mkvar(), mkcomm(), mkstruct(), mkarrow();
89: ptr mkiost(), mkioitem(), mkiogroup(), mkformat();
90: ptr funcinv(), extrfield(), typexpr(), strucelt(), mkfield();
91: ptr esizeof(), elenof(), mkilab();
92: ptr ifthen(), doloop();
93: struct varblock *subscript();
94:
95: # line 95 "gram.in"
96: typedef union { int ival; ptr pval; char *cval; } YYSTYPE;
97:
98: # line 124 "gram.in"
99: extern int prevv;
100: extern YYSTYPE prevl;
101: ptr p;
102: ptr procattrs;
103: int i,n;
104: static int imptype;
105: static int ininit =NO;
106:
107: #define yyclearin yychar = -1
108: #define yyerrok yyerrflag = 0
109: extern int yychar;
110: extern short yyerrflag;
111: #ifndef YYMAXDEPTH
112: #define YYMAXDEPTH 150
113: #endif
114: YYSTYPE yylval, yyval;
115: # define YYERRCODE 256
116:
117: # line 1009 "gram.in"
118:
119:
120: setyydeb()
121: {
122: #ifdef YYDEBUG
123: extern int yydebug;
124: yydebug = 1;
125: #endif
126: }
127: short yyexca[] ={
128: -1, 0,
129: 0, 1,
130: -2, 175,
131: -1, 1,
132: 0, -1,
133: -2, 0,
134: -1, 80,
135: 9, 152,
136: 19, 152,
137: 20, 152,
138: -2, 178,
139: -1, 165,
140: 19, 152,
141: 20, 152,
142: -2, 179,
143: -1, 262,
144: 6, 191,
145: -2, 14,
146: -1, 351,
147: 14, 0,
148: -2, 144,
149: };
150: # define YYNPROD 284
151: # define YYLAST 1451
152: short yyact[]={
153:
154: 225, 247, 408, 431, 412, 124, 409, 337, 223, 197,
155: 157, 20, 258, 224, 185, 156, 19, 6, 140, 3,
156: 20, 155, 61, 139, 286, 19, 59, 314, 5, 131,
157: 297, 152, 212, 44, 182, 198, 37, 34, 36, 32,
158: 33, 35, 21, 22, 16, 191, 14, 135, 38, 39,
159: 40, 41, 26, 45, 27, 30, 31, 46, 47, 10,
160: 12, 11, 72, 227, 121, 77, 64, 17, 20, 446,
161: 66, 60, 413, 19, 179, 189, 425, 58, 195, 196,
162: 338, 42, 149, 43, 141, 65, 80, 73, 109, 129,
163: 78, 87, 71, 199, 400, 399, 170, 200, 172, 178,
164: 167, 175, 176, 177, 154, 211, 233, 305, 120, 315,
165: 203, 325, 218, 243, 326, 137, 62, 220, 218, 68,
166: 447, 148, 147, 356, 74, 209, 222, 242, 199, 123,
167: 204, 256, 200, 201, 202, 213, 229, 216, 215, 214,
168: 217, 213, 68, 216, 215, 214, 217, 134, 62, 73,
169: 169, 245, 165, 20, 164, 80, 166, 109, 19, 78,
170: 87, 278, 76, 132, 260, 133, 273, 161, 201, 202,
171: 144, 148, 147, 163, 382, 267, 250, 263, 160, 265,
172: 271, 272, 273, 148, 147, 259, 433, 280, 394, 282,
173: 148, 147, 228, 268, 269, 270, 239, 279, 69, 287,
174: 272, 273, 289, 235, 250, 127, 295, 296, 298, 298,
175: 58, 303, 240, 291, 292, 238, 262, 146, 128, 18,
176: 65, 252, 251, 344, 343, 449, 307, 148, 147, 55,
177: 310, 460, 429, 417, 253, 254, 434, 264, 283, 300,
178: 293, 20, 329, 20, 304, 173, 19, 20, 19, 319,
179: 322, 321, 19, 171, 372, 428, 316, 330, 429, 317,
180: 327, 323, 281, 141, 392, 377, 7, 393, 378, 367,
181: 342, 248, 348, 349, 350, 351, 352, 353, 354, 355,
182: 335, 364, 143, 154, 365, 357, 360, 234, 339, 363,
183: 462, 340, 333, 463, 287, 334, 277, 275, 276, 159,
184: 274, 271, 272, 273, 274, 271, 272, 273, 373, 376,
185: 255, 158, 375, 159, 380, 145, 302, 371, 366, 358,
186: 361, 276, 301, 274, 271, 272, 273, 379, 418, 389,
187: 423, 236, 396, 390, 420, 391, 237, 277, 275, 276,
188: 414, 274, 271, 272, 273, 398, 134, 416, 331, 397,
189: 415, 332, 451, 395, 277, 275, 276, 381, 274, 271,
190: 272, 273, 369, 259, 312, 277, 275, 276, 410, 274,
191: 271, 272, 273, 279, 445, 407, 279, 436, 465, 427,
192: 250, 150, 419, 250, 277, 275, 276, 421, 274, 271,
193: 272, 273, 125, 406, 20, 125, 403, 306, 285, 19,
194: 284, 424, 422, 308, 74, 122, 277, 275, 276, 249,
195: 274, 271, 272, 273, 219, 210, 207, 206, 435, 48,
196: 205, 439, 437, 50, 438, 52, 53, 162, 442, 126,
197: 410, 125, 441, 440, 444, 388, 443, 410, 448, 450,
198: 387, 386, 385, 383, 347, 453, 456, 345, 457, 458,
199: 150, 49, 414, 459, 51, 411, 142, 9, 461, 454,
200: 188, 370, 186, 208, 464, 187, 107, 192, 68, 99,
201: 44, 97, 180, 37, 34, 36, 32, 33, 35, 96,
202: 426, 95, 266, 174, 88, 38, 39, 40, 41, 26,
203: 45, 27, 30, 31, 46, 47, 455, 86, 84, 341,
204: 168, 452, 277, 275, 276, 116, 274, 271, 272, 273,
205: 277, 275, 276, 261, 274, 271, 272, 273, 42, 82,
206: 43, 193, 194, 150, 113, 114, 111, 112, 195, 196,
207: 384, 230, 328, 188, 221, 186, 226, 336, 187, 153,
208: 192, 68, 241, 44, 70, 180, 37, 34, 36, 32,
209: 33, 35, 151, 63, 136, 54, 8, 75, 38, 39,
210: 40, 41, 26, 45, 27, 30, 31, 46, 47, 430,
211: 13, 277, 275, 276, 404, 274, 271, 272, 273, 232,
212: 277, 275, 276, 231, 274, 271, 272, 273, 4, 2,
213: 102, 42, 432, 43, 193, 194, 110, 113, 114, 111,
214: 112, 195, 196, 150, 181, 29, 23, 288, 25, 294,
215: 299, 290, 346, 188, 85, 186, 15, 246, 187, 67,
216: 192, 68, 184, 44, 183, 180, 37, 34, 36, 32,
217: 33, 35, 28, 56, 309, 24, 318, 138, 38, 39,
218: 40, 41, 26, 45, 27, 30, 31, 46, 47, 401,
219: 130, 257, 320, 1, 0, 277, 275, 276, 0, 274,
220: 271, 272, 273, 0, 0, 0, 0, 0, 0, 0,
221: 0, 42, 0, 43, 193, 194, 0, 113, 114, 111,
222: 112, 195, 196, 0, 150, 244, 0, 0, 0, 0,
223: 0, 0, 0, 0, 188, 0, 186, 0, 0, 187,
224: 0, 192, 68, 190, 44, 0, 180, 37, 34, 36,
225: 32, 33, 35, 0, 0, 0, 0, 0, 0, 38,
226: 39, 40, 41, 26, 45, 27, 30, 31, 46, 47,
227: 374, 0, 0, 0, 0, 0, 277, 275, 276, 0,
228: 274, 271, 272, 273, 0, 0, 0, 0, 0, 0,
229: 0, 0, 42, 0, 43, 193, 194, 150, 113, 114,
230: 111, 112, 195, 196, 0, 0, 0, 188, 0, 186,
231: 0, 0, 187, 0, 192, 68, 190, 44, 0, 180,
232: 37, 34, 36, 32, 33, 35, 0, 0, 0, 0,
233: 0, 0, 38, 39, 40, 41, 26, 45, 27, 30,
234: 31, 46, 47, 368, 0, 0, 0, 0, 0, 277,
235: 275, 276, 0, 274, 271, 272, 273, 0, 0, 0,
236: 0, 0, 0, 0, 0, 42, 0, 43, 193, 194,
237: 0, 113, 114, 111, 112, 195, 196, 150, 0, 0,
238: 0, 0, 0, 0, 0, 0, 0, 188, 0, 186,
239: 0, 0, 187, 0, 192, 68, 190, 44, 0, 180,
240: 37, 34, 36, 32, 33, 35, 0, 0, 0, 0,
241: 0, 0, 38, 39, 40, 41, 362, 45, 27, 30,
242: 31, 46, 47, 313, 0, 277, 275, 276, 311, 274,
243: 271, 272, 273, 0, 277, 275, 276, 0, 274, 271,
244: 272, 273, 0, 0, 0, 42, 0, 43, 193, 194,
245: 0, 113, 114, 111, 112, 195, 196, 0, 150, 0,
246: 0, 0, 0, 0, 0, 0, 0, 0, 188, 0,
247: 186, 0, 0, 187, 0, 192, 68, 190, 44, 0,
248: 180, 37, 34, 36, 32, 33, 35, 0, 0, 0,
249: 0, 0, 0, 38, 39, 40, 41, 359, 45, 27,
250: 30, 31, 46, 47, 0, 0, 0, 0, 0, 0,
251: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
252: 0, 0, 0, 0, 0, 0, 42, 0, 43, 193,
253: 194, 0, 113, 114, 111, 112, 195, 196, 44, 0,
254: 0, 37, 34, 36, 32, 33, 35, 0, 0, 0,
255: 190, 14, 0, 38, 39, 40, 41, 26, 45, 27,
256: 30, 31, 46, 47, 10, 12, 11, 0, 0, 0,
257: 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,
258: 57, 0, 0, 0, 0, 0, 42, 0, 43, 0,
259: 0, 0, 79, 0, 0, 91, 62, 0, 44, 92,
260: 0, 37, 34, 36, 32, 33, 35, 21, 22, 0,
261: 0, 0, 0, 38, 39, 40, 41, 26, 45, 27,
262: 30, 31, 46, 47, 0, 0, 90, 104, 0, 106,
263: 190, 105, 116, 115, 108, 94, 93, 101, 100, 118,
264: 119, 117, 98, 103, 81, 0, 42, 0, 43, 0,
265: 0, 113, 114, 111, 112, 0, 62, 89, 44, 0,
266: 0, 37, 34, 36, 32, 33, 35, 0, 0, 0,
267: 0, 0, 0, 38, 39, 40, 41, 26, 45, 27,
268: 30, 31, 46, 47, 10, 12, 11, 0, 0, 0,
269: 0, 0, 0, 0, 0, 0, 0, 44, 0, 0,
270: 37, 34, 36, 32, 33, 35, 42, 0, 43, 0,
271: 0, 190, 38, 39, 40, 41, 26, 45, 27, 30,
272: 31, 46, 47, 10, 12, 11, 0, 0, 0, 0,
273: 0, 0, 0, 0, 0, 0, 0, 150, 405, 0,
274: 0, 0, 0, 0, 0, 42, 0, 43, 0, 0,
275: 0, 0, 0, 0, 0, 0, 0, 44, 0, 0,
276: 37, 34, 36, 32, 33, 35, 0, 0, 0, 0,
277: 0, 324, 38, 39, 40, 41, 26, 45, 27, 30,
278: 31, 46, 47, 0, 0, 0, 150, 402, 0, 0,
279: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
280: 0, 0, 0, 0, 0, 42, 44, 43, 0, 37,
281: 34, 36, 32, 33, 35, 0, 0, 0, 0, 0,
282: 0, 38, 39, 40, 41, 26, 45, 27, 30, 31,
283: 46, 47, 0, 0, 0, 0, 0, 57, 0, 0,
284: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
285: 0, 0, 0, 62, 42, 44, 43, 0, 37, 34,
286: 36, 32, 33, 35, 0, 0, 0, 0, 0, 0,
287: 38, 39, 40, 41, 26, 45, 27, 30, 31, 46,
288: 47, 0, 0, 0, 150, 0, 0, 0, 0, 0,
289: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
290: 0, 0, 0, 42, 44, 43, 0, 37, 34, 36,
291: 32, 33, 35, 0, 0, 0, 0, 0, 0, 38,
292: 39, 40, 41, 26, 45, 27, 30, 31, 46, 47,
293: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
294: 44, 0, 0, 37, 34, 36, 32, 33, 35, 0,
295: 0, 0, 42, 0, 43, 38, 39, 40, 41, 26,
296: 45, 27, 30, 31, 46, 47, 0, 0, 0, 0,
297: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
298: 0, 0, 0, 0, 0, 0, 0, 0, 42, 0,
299: 43 };
300: short yypact[]={
301:
302: 10,-1000, 450, 450, 453, 450, 450,-1000,-1000,1035,
303: 98,-1000, 121, 141,-1000,1034,-1000,-1000,-1000, 402,
304: 402,-1000,-1000,-1000,-1000,-1000, 428, 426,-1000,-1000,
305: -1000,-1000,-1000,-1000,-1000,-1000,-1000, 202,-1000,-1000,
306: -1000,-1000, 17,-1000,-1000, 142,-1000,-1000,-1000,-1000,
307: -1000,-1000,-1000,-1000, 93,-1000,-1000,1095,-1000, 275,
308: -1000, 402,-1000, 308,-1000, 208,-1000, 378,-1000,1377,
309: 304, 292,-1000, 171, 98, 424,-1000,-1000, 164, 98,
310: -1000, 98,-1000,-1000,1034,-1000,-1000,-1000,-1000,-1000,
311: -1000, 245,-1000, 237,-1000,-1000,-1000,-1000, 754,-1000,
312: 107, 109, 417,-1000, 414,-1000, 413,-1000, 412,-1000,
313: 80,-1000,-1000,-1000,-1000, 411, 754,-1000,-1000,-1000,
314: -1000,-1000,-1000,-1000,-1000, 754, 520,-1000,-1000,-1000,
315: -1000,-1000,-1000,-1000,-1000, 69, 280, 194, 330,-1000,
316: -1000, 275,1292, 95, 187, 98,-1000, 106, 90,-1000,
317: 681, 264,-1000, 406,1377,-1000,-1000, 402, 401, 98,
318: 98, 306, 127, 754, 102,-1000, 102,-1000,-1000,-1000,
319: -1000,-1000, 229,-1000, 754,-1000,-1000,-1000, 355, 152,
320: -1000,-1000,1341,-1000,-1000,-1000, 754, 98, 754,-1000,
321: -1000,-1000, -3, 397, 395,-1000,-1000,-1000, 600,-1000,
322: -1000, 754,-1000, 72, 107, 754, 754, 754, 754, 315,
323: 754, 86, 82,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
324: 396, 520, 884, 360,-1000, 875,-1000, 85, 85, 341,
325: 1134,-1000, 975,-1000,-1000, 89,1095,-1000,-1000,-1000,
326: -1000, 754, 378,-1000,-1000, 344, 288,-1000,1377, 4,
327: -1000,-1000,-1000, 102, 102,-1000,-1000, 284,-1000,-1000,
328: 355,-1000,-1000,-1000,-1000,-1000, 216, 355, 446, 443,
329: -1000, 754, 754, 754, 754, 754, 754, 754, 754,-1000,
330: 149, 102, 290, 103, 915, 834,-1000, 355, 754, 355,
331: 277,-1000,-1000, 600, 262, 355, 799, 358, 355,-1000,
332: 247,-1000,-1000, 726,-1000,-1000,-1000,-1000, 754, 261,
333: -1000,-1000,-1000, 520, 353,-1000, 158,-1000, 442,-1000,
334: -1000, 441, 440, 439, 434,-1000,-1000,-1000, 754, 355,
335: -1000,-1000, 754,-1000, 754,-1000, 260,-1000, 173,-1000,
336: 95, 326,-1000,-1000, 754, 41,-1000, 38, 184, 149,
337: 149, 165, 309, 290, 355, 355,-1000, 645,1243, 392,
338: 570,1194, 389, 355,-1000, 72,-1000, 447,-1000,-1000,
339: -1000, 346,-1000, 226,-1000,-1000, 327,-1000, 520,-1000,
340: 355,-1000,-1000,1134, 324,-1000,-1000,-1000,-1000, 355,
341: 355, 355,-1000, 4, 0,-1000,-1000,-1000, 355,-1000,
342: 376,-1000,-1000,-1000,-1000,-1000,-1000,-1000, 251,-1000,
343: 561,-1000, 228, 335,-1000,-1000,-1000,-1000,-1000,-1000,
344: 754,-1000,-1000, 432,-1000,-1000,-1000, 754,-1000, 447,
345: -1000,-1000, 371, 44,-1000, 217, 447, 348,-1000, 500,
346: -1000,-1000, 492,-1000,-1000, 754,-1000,-1000,-1000,-1000,
347: 225,-1000,-1000,-1000,-1000,-1000, 286,-1000,-1000,-1000,
348: -1000,-1000,-1000, 754, 374,-1000 };
349: short yypgo[]={
350:
351: 0, 653, 18, 652, 17, 47, 219, 651, 12, 22,
352: 27, 650, 23, 637, 636, 34, 92, 456, 67, 635,
353: 108, 64, 634, 8, 13, 633, 26, 71, 21, 15,
354: 632, 29, 0, 74, 14, 75, 624, 622, 70, 619,
355: 617, 616, 614, 612, 611, 35, 24, 72, 30, 610,
356: 609, 2, 6, 4, 3, 608, 606, 605, 604, 45,
357: 596, 32, 592, 590, 9, 589, 419, 588, 583, 28,
358: 579, 570, 557, 556, 555, 554, 5, 553, 186, 552,
359: 1, 544, 66, 542, 31, 539, 537, 7, 62, 10,
360: 534, 532, 63, 531, 530, 65, 519, 513, 500, 499,
361: 498, 497, 484, 483, 482, 481, 480, 479, 471, 469,
362: 466, 463, 461, 377 };
363: short yyr1[]={
364:
365: 0, 1, 1, 1, 1, 1, 1, 1, 66, 3,
366: 3, 3, 3, 5, 70, 5, 67, 67, 67, 67,
367: 72, 71, 71, 6, 6, 7, 7, 8, 65, 73,
368: 74, 74, 74, 75, 75, 75, 69, 68, 76, 13,
369: 13, 13, 12, 12, 2, 2, 2, 2, 2, 2,
370: 14, 14, 14, 77, 77, 83, 82, 79, 79, 84,
371: 84, 85, 86, 86, 87, 87, 81, 81, 88, 16,
372: 16, 17, 17, 18, 18, 20, 20, 90, 21, 22,
373: 22, 23, 23, 24, 24, 25, 25, 26, 26, 27,
374: 91, 27, 9, 15, 15, 28, 28, 29, 29, 29,
375: 29, 29, 29, 29, 56, 56, 56, 56, 56, 19,
376: 19, 92, 10, 10, 55, 55, 55, 55, 55, 55,
377: 30, 30, 30, 11, 11, 93, 94, 31, 89, 89,
378: 57, 57, 32, 32, 32, 32, 32, 32, 32, 32,
379: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
380: 32, 32, 33, 38, 38, 38, 38, 38, 39, 34,
381: 34, 34, 40, 40, 36, 36, 36, 37, 37, 37,
382: 58, 58, 59, 59, 4, 41, 95, 95, 95, 95,
383: 95, 95, 95, 95, 95, 95, 95, 95, 102, 102,
384: 98, 99, 100, 100, 100, 100, 103, 100, 104, 104,
385: 42, 42, 42, 42, 105, 106, 107, 43, 43, 101,
386: 101, 101, 101, 101, 101, 101, 45, 44, 44, 46,
387: 46, 64, 64, 64, 64, 109, 109, 109, 109, 109,
388: 60, 60, 60, 61, 61, 61, 61, 61, 61, 108,
389: 108, 108, 108, 47, 47, 47, 47, 47, 47, 110,
390: 111, 111, 49, 112, 112, 48, 48, 96, 97, 35,
391: 63, 63, 63, 63, 50, 50, 51, 51, 52, 52,
392: 52, 52, 52, 52, 52, 113, 53, 54, 54, 54,
393: 54, 62, 78, 80 };
394: short yyr2[]={
395:
396: 0, 0, 2, 2, 4, 2, 2, 1, 1, 2,
397: 2, 2, 2, 0, 0, 3, 1, 2, 4, 5,
398: 1, 1, 2, 1, 1, 1, 3, 1, 2, 1,
399: 0, 2, 3, 1, 3, 3, 1, 1, 0, 1,
400: 2, 3, 1, 1, 2, 4, 2, 4, 2, 2,
401: 1, 2, 3, 1, 3, 0, 4, 1, 3, 1,
402: 4, 1, 1, 3, 1, 3, 1, 3, 3, 3,
403: 3, 1, 2, 2, 2, 0, 1, 0, 4, 1,
404: 3, 1, 3, 1, 1, 0, 1, 1, 3, 2,
405: 0, 5, 1, 1, 2, 1, 2, 1, 2, 1,
406: 4, 4, 1, 1, 1, 1, 1, 1, 1, 5,
407: 5, 0, 0, 1, 1, 1, 1, 1, 2, 1,
408: 1, 4, 2, 1, 1, 0, 0, 6, 1, 1,
409: 1, 1, 1, 1, 1, 2, 1, 1, 1, 3,
410: 3, 3, 2, 2, 3, 3, 3, 2, 3, 3,
411: 1, 1, 1, 1, 2, 3, 4, 3, 1, 2,
412: 3, 3, 3, 3, 4, 4, 4, 4, 4, 4,
413: 1, 3, 1, 1, 2, 0, 3, 2, 1, 2,
414: 3, 5, 2, 1, 1, 1, 1, 1, 0, 1,
415: 0, 0, 3, 2, 4, 3, 0, 5, 1, 3,
416: 8, 4, 4, 3, 4, 0, 1, 1, 5, 1,
417: 2, 1, 2, 3, 3, 4, 3, 1, 3, 1,
418: 2, 1, 1, 2, 1, 1, 2, 2, 3, 3,
419: 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
420: 4, 4, 1, 4, 3, 6, 5, 8, 7, 2,
421: 2, 4, 2, 2, 4, 0, 1, 2, 0, 6,
422: 1, 1, 1, 1, 1, 0, 1, 3, 1, 3,
423: 2, 1, 2, 4, 3, 0, 4, 1, 4, 6,
424: 3, 3, 0, 0 };
425: short yychk[]={
426:
427: -1000, -1, -65, -2, -67, -69, -4, 256, -73, -17,
428: 49, 51, 50, -71, 36, -41, 34, -18, -6, -29,
429: -89, 32, 33, -56, -19, -55, 42, 44, -30, -57,
430: 45, 46, 29, 30, 27, 31, 28, 26, 38, 39,
431: 40, 41, 71, 73, 23, 43, 47, 48, -66, 1,
432: -66, 1, -66, -66, -74, -6, -25, 5, -18, -26,
433: -27, -9, 21, -77, -82, -33, -38, -39, 21, -78,
434: -81, -16, -88, -33, 3, -72, 21, -95, -33, 18,
435: -38, 70, -96, 5,-100, -42,-101, -35,-102, 83,
436: 52, 21, 25, 62, 61,-105,-107,-108, 68,-109,
437: 64, 63, -63, 69, 53, 57, 55,-110, 60, -47,
438: -60, 79, 80, 77, 78, 59, 58, 67, 65, 66,
439: -20, -21, 3, -20, -76, 3, 3, 3, 16, 72,
440: -11, -31, 21, 23, 5, -5, -75, 22, -13, -12,
441: -2, -26, -17, 7, -20, 7, 9, 20, 19, -34,
442: 3, -79, -84, -85, -15, -28, -29, -89, 7, 7,
443: 7, -16, 3, 9, -33, -38, -33, -4, -98, -95,
444: -76, 8, -76, 8,-103, -76, -76, -76, -32, -33,
445: 25, -58, -15, -36, -37, -34, 15, 18, 13, -35,
446: 256, -59, 20, 74, 75, 81, 82, -64, -45, 21,
447: 25, 61, 62, 3, 21, 3, 3, 3,-111, -4,
448: 3, 25, -61, 55, 59, 58, 57, 60, 32, 3,
449: -32, -90, -32, -23, -24, -32, 16, -92, -92, -76,
450: -93, -68, -70, 37, 7, 9, 1, 6, -27, 9,
451: -82, -83, 21, 23, 4, -32, -40, -80, 7, 3,
452: -28, -21, -88, -33, -33, 4, 4, -7, -8, -9,
453: -32, -97, -5, -76, 8, -76,-104, -32, -4, -4,
454: -4, 15, 16, 17, 14, 11, 12, 10, 9, -34,
455: -32, -33, -32, -59, 3, 3, -46, -32, 7, -32,
456: -44, -64, -64, -45, -50, -32, -32, -48, -32, -49,
457: -48, 7, 1, -32, -61, 25, 1, -76, 7, -22,
458: -23, 4, 4, 8, -10, 24, -10, -31, -14, -2,
459: -3, -2, -4, -69, 256, 22, 25, -12, -91, -32,
460: -34, 4, 7, 4, 7, -84, -86, -87, 76, 4,
461: 7, -99, -76, 8, 7, 1, -43, 1, -32, -32,
462: -32, -32, -32, -32, -32, -32, 20, -32, -15, 42,
463: -32, -15, 42, -32, 4, 7, -46, 7, 4, 4,
464: -112, -4, 7, -76, 4, -76, -32, 4, 7, -24,
465: -32, 4, 16, 1, -94, 1, 1, 1, 1, -32,
466: -32, -32, 4, 7, 15, -8, 6, -76, -32, 54,
467: 56, 4, 4, 4, 4, 4, 4, -64, -51, -52,
468: -32, 8, -53, -47, 5, 4, 1, 7, 1, -76,
469: 7, -23, -2, 6, -87, 76,-106, 3, 4, 7,
470: 8, -54, -62, -78, 8, -53,-113, -76, -76, -32,
471: 1, -76, -32, -52, -54, 3, 25, 76, -54, 8,
472: -51, 4, 1, -76, -4, 4, -32, -80, -80, -54,
473: 6, -76, 4, 7, -32, 4 };
474: short yydef[]={
475:
476: -2, -2, 0, 0, 0, 0, 0, 7, 30, 85,
477: 0, 282, 0, 16, 36, 188, 29, 71, 21, 75,
478: 75, 23, 24, 97, 38, 99, 0, 0, 102, 103,
479: 128, 129, 104, 105, 106, 107, 108, 0, 114, 115,
480: 116, 117, 0, 119, 120, 0, 130, 131, 2, 8,
481: 3, 13, 5, 6, 28, 22, 44, 0, 72, 86,
482: 87, 75, 92, 46, 53, 0, 152, 153, 158, 0,
483: 48, 49, 66, 0, 0, 17, 20, 174, 0, 0,
484: -2, 0, 175, 190, 188, 183, 184, 185, 186, 187,
485: 38, 158, 38, 0, 196, 38, 38, 38, 209, 211,
486: 0, 0, 0, 189, 0, 206, 0, 175, 0, 242,
487: 225, 260, 261, 262, 263, 0, 0, 230, 231, 232,
488: 73, 76, 77, 74, 98, 0, 0, 111, 111, 118,
489: 38, 122, 123, 124, 125, 14, 31, 33, 0, 39,
490: 42, 43, 85, 0, 89, 0, 55, 0, 0, 154,
491: 0, 283, 57, 59, 61, 93, 95, 0, 0, 0,
492: 0, 0, 0, 0, 177, -2, 0, 258, 13, 182,
493: 257, 38, 193, 38, 0, 175, 175, 175, 210, 132,
494: 133, 134, 0, 136, 137, 138, 0, 0, 0, 150,
495: 151, 170, 0, 0, 0, 172, 173, 212, 0, 221,
496: 222, 0, 224, 0, 0, 265, 0, 255, 255, 0,
497: 0, 226, 227, 233, 234, 235, 236, 237, 238, 249,
498: 38, 0, 0, 0, 81, 83, 84, 112, 112, 0,
499: 0, 4, 175, 37, 32, 0, 40, 45, 88, 90,
500: 54, 0, 155, 157, 159, 0, 0, 47, 0, 0,
501: 94, 96, 67, 70, 69, 68, 18, 0, 25, 27,
502: 176, 180, -2, 192, 38, 195, 0, 198, 0, 0,
503: 203, 0, 0, 0, 0, 0, 0, 0, 0, 135,
504: 142, 143, 147, 0, 0, 0, 214, 219, 0, 223,
505: 0, 217, 213, 0, 0, 264, 0, 0, 256, 175,
506: 0, 250, 38, 0, 228, 229, 38, 244, 0, 0,
507: 79, 100, 101, 0, 0, 113, 0, 121, 126, 50,
508: 15, 0, 0, 0, 0, 34, 35, 41, 0, 56,
509: 156, 160, 0, 161, 0, 58, 0, 62, 64, 19,
510: 0, 0, 194, 38, 0, 201, 202, 207, 139, 140,
511: 141, -2, 145, 146, 149, 148, 171, 0, 0, 0,
512: 0, 0, 0, 220, 216, 0, 215, 0, 204, 239,
513: 240, 0, 252, 0, 241, 243, 38, 78, 0, 82,
514: 83, 109, 110, 51, 0, 9, 10, 11, 12, 91,
515: 162, 163, 60, 0, 0, 26, 181, 197, 199, 205,
516: 0, 164, 165, 166, 167, 168, 169, 218, 0, 266,
517: 268, 282, 271, 0, 275, 253, 38, 251, 38, 246,
518: 0, 80, 52, 0, 63, 65, 38, 0, 259, 0,
519: 282, 270, 277, 0, 282, 272, 0, 0, 245, 38,
520: 127, 175, 0, 267, 269, 0, 283, 283, 274, 282,
521: 0, 254, 38, 248, 200, 208, 0, 280, 281, 273,
522: 276, 247, 278, 0, 0, 279 };
523: #ifndef lint
524: static char yaccpar_sccsid[] = "@(#)yaccpar 4.1 (Berkeley) 2/11/83";
525: #endif not lint
526:
527: #
528: # define YYFLAG -1000
529: # define YYERROR goto yyerrlab
530: # define YYACCEPT return(0)
531: # define YYABORT return(1)
532:
533: /* parser for yacc output */
534:
535: #ifdef YYDEBUG
536: int yydebug = 0; /* 1 for debugging */
537: #endif
538: YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */
539: int yychar = -1; /* current input token number */
540: int yynerrs = 0; /* number of errors */
541: short yyerrflag = 0; /* error recovery flag */
542:
543: yyparse() {
544:
545: short yys[YYMAXDEPTH];
546: short yyj, yym;
547: register YYSTYPE *yypvt;
548: register short yystate, *yyps, yyn;
549: register YYSTYPE *yypv;
550: register short *yyxi;
551:
552: yystate = 0;
553: yychar = -1;
554: yynerrs = 0;
555: yyerrflag = 0;
556: yyps= &yys[-1];
557: yypv= &yyv[-1];
558:
559: yystack: /* put a state and value onto the stack */
560:
561: #ifdef YYDEBUG
562: if( yydebug ) printf( "state %d, char 0%o\n", yystate, yychar );
563: #endif
564: if( ++yyps> &yys[YYMAXDEPTH] ) { yyerror( "yacc stack overflow" ); return(1); }
565: *yyps = yystate;
566: ++yypv;
567: *yypv = yyval;
568:
569: yynewstate:
570:
571: yyn = yypact[yystate];
572:
573: if( yyn<= YYFLAG ) goto yydefault; /* simple state */
574:
575: if( yychar<0 ) if( (yychar=yylex())<0 ) yychar=0;
576: if( (yyn += yychar)<0 || yyn >= YYLAST ) goto yydefault;
577:
578: if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */
579: yychar = -1;
580: yyval = yylval;
581: yystate = yyn;
582: if( yyerrflag > 0 ) --yyerrflag;
583: goto yystack;
584: }
585:
586: yydefault:
587: /* default state action */
588:
589: if( (yyn=yydef[yystate]) == -2 ) {
590: if( yychar<0 ) if( (yychar=yylex())<0 ) yychar = 0;
591: /* look through exception table */
592:
593: for( yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate) ; yyxi += 2 ) ; /* VOID */
594:
595: while( *(yyxi+=2) >= 0 ){
596: if( *yyxi == yychar ) break;
597: }
598: if( (yyn = yyxi[1]) < 0 ) return(0); /* accept */
599: }
600:
601: if( yyn == 0 ){ /* error */
602: /* error ... attempt to resume parsing */
603:
604: switch( yyerrflag ){
605:
606: case 0: /* brand new error */
607:
608: yyerror( "syntax error" );
609: yyerrlab:
610: ++yynerrs;
611:
612: case 1:
613: case 2: /* incompletely recovered error ... try again */
614:
615: yyerrflag = 3;
616:
617: /* find a state where "error" is a legal shift action */
618:
619: while ( yyps >= yys ) {
620: yyn = yypact[*yyps] + YYERRCODE;
621: if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){
622: yystate = yyact[yyn]; /* simulate a shift of "error" */
623: goto yystack;
624: }
625: yyn = yypact[*yyps];
626:
627: /* the current yyps has no shift onn "error", pop stack */
628:
629: #ifdef YYDEBUG
630: if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] );
631: #endif
632: --yyps;
633: --yypv;
634: }
635:
636: /* there is no state on the stack with an error shift ... abort */
637:
638: yyabort:
639: return(1);
640:
641:
642: case 3: /* no shift yet; clobber input char */
643:
644: #ifdef YYDEBUG
645: if( yydebug ) printf( "error recovery discards char %d\n", yychar );
646: #endif
647:
648: if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */
649: yychar = -1;
650: goto yynewstate; /* try again in the same state */
651:
652: }
653:
654: }
655:
656: /* reduction by production yyn */
657:
658: #ifdef YYDEBUG
659: if( yydebug ) printf("reduce %d\n",yyn);
660: #endif
661: yyps -= yyr2[yyn];
662: yypvt = yypv;
663: yypv -= yyr2[yyn];
664: yyval = yypv[1];
665: yym=yyn;
666: /* consult goto table to find next state */
667: yyn = yyr1[yyn];
668: yyj = yypgo[yyn] + *yyps + 1;
669: if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]];
670: switch(yym){
671:
672: case 1:
673: # line 138 "gram.in"
674: { graal = PARSEOF; } break;
675: case 2:
676: # line 140 "gram.in"
677: { graal = PARSOPT; } break;
678: case 3:
679: # line 142 "gram.in"
680: { graal = PARSDCL; doinits(yypvt[-1].pval); frchain( & yypvt[-1].pval); } break;
681: case 4:
682: # line 144 "gram.in"
683: { endproc(); graal = PARSPROC; } break;
684: case 5:
685: # line 146 "gram.in"
686: { graal = PARSDEF; } break;
687: case 6:
688: # line 148 "gram.in"
689: { graal = PARSERR; } break;
690: case 7:
691: # line 150 "gram.in"
692: { graal = PARSERR;
693: errmess("Syntax error", "", "");
694: } break;
695: case 8:
696: # line 155 "gram.in"
697: { eofneed = 1; } break;
698: case 9:
699: # line 158 "gram.in"
700: { if(!dclsect)
701: warn("declaration amid executables");
702: yyval.pval = bgnexec();
703: TEST fprintf(diagfile,"stat: dcl\n");
704: doinits(yypvt[-1].pval); frchain( & yypvt[-1].pval); } break;
705: case 10:
706: # line 164 "gram.in"
707: { if(dclsect && yypvt[-1].pval->tag!=TSTFUNCT)
708: dclsect = 0;
709: TEST fprintf(diagfile, "stat: exec\n"); } break;
710: case 11:
711: # line 168 "gram.in"
712: { yyval.pval = bgnexec(); } break;
713: case 12:
714: # line 170 "gram.in"
715: { yyerrok;
716: errmess("Syntax error", "", "");
717: yyval.pval = bgnexec();
718: } break;
719: case 13:
720: # line 177 "gram.in"
721: { yyval.pval = bgnexec(); } break;
722: case 14:
723: # line 178 "gram.in"
724: { thisexec->copylab = 1; } break;
725: case 15:
726: # line 179 "gram.in"
727: { yyval.pval = addexec(); thisexec->copylab = 0; } break;
728: case 16:
729: # line 183 "gram.in"
730: { procname = 0; thisargs = 0;
731: if(procclass == 0) procclass = PRMAIN;
732: goto proctype;
733: } break;
734: case 17:
735: # line 188 "gram.in"
736: { thisargs = 0; goto proctype; } break;
737: case 18:
738: # line 190 "gram.in"
739: { thisargs = 0; goto proctype; } break;
740: case 19:
741: # line 192 "gram.in"
742: { thisargs = yypvt[-1].pval;
743: proctype:
744: if(procattrs)
745: if(procname == 0)
746: dclerr("attributes on unnamed procedure", "");
747: else {
748: attvars(procattrs, mkchain(procname,CHNULL));
749: procclass = PRFUNCT;
750: }
751: fprintf(diagfile, "Procedure %s:\n", procnm() );
752: if(verbose)
753: fprintf(diagfile, " Pass 1\n");
754: } break;
755: case 20:
756: # line 208 "gram.in"
757: { procname = mkvar(yypvt[-0].pval);
758: extname(procname);
759: } break;
760: case 21:
761: # line 214 "gram.in"
762: { procattrs = 0; } break;
763: case 22:
764: # line 216 "gram.in"
765: { procattrs = yypvt[-1].pval;
766: if(procclass == 0) procclass = PRFUNCT;
767: } break;
768: case 23:
769: # line 222 "gram.in"
770: { yyval.pval = bgnproc(); procclass = 0; } break;
771: case 24:
772: # line 224 "gram.in"
773: { yyval.pval = bgnproc(); procclass = PRBLOCK; } break;
774: case 25:
775: # line 228 "gram.in"
776: { yyval.pval = mkchain(yypvt[-0].pval,CHNULL); } break;
777: case 26:
778: # line 230 "gram.in"
779: { hookup(yypvt[-2].pval, mkchain(yypvt[-0].pval,CHNULL) ); } break;
780: case 27:
781: # line 234 "gram.in"
782: { if(yypvt[-0].pval->vclass == CLUNDEFINED)
783: yypvt[-0].pval->vclass = CLARG;
784: else dclerr("argument already used", yypvt[-0].pval->sthead->namep);
785: } break;
786: case 28:
787: # line 240 "gram.in"
788: { optneed = 0; } break;
789: case 29:
790: # line 244 "gram.in"
791: { if(blklevel > 0)
792: {
793: execerr("Option statement inside procedure", "");
794: execerr("procedure %s terminated prematurely", procnm());
795: endproc();
796: }
797: optneed = 1;
798: } break;
799: case 33:
800: # line 260 "gram.in"
801: { setopt(yypvt[-0].pval,CNULL); cfree(yypvt[-0].pval); } break;
802: case 34:
803: # line 262 "gram.in"
804: { setopt(yypvt[-2].pval,yypvt[-0].pval); cfree(yypvt[-2].pval); cfree(yypvt[-0].pval); } break;
805: case 35:
806: # line 264 "gram.in"
807: { setopt(yypvt[-2].pval,yypvt[-0].pval->leftp); cfree(yypvt[-2].pval); cfree(yypvt[-0].pval); } break;
808: case 36:
809: # line 268 "gram.in"
810: { defneed = 1; } break;
811: case 37:
812: # line 272 "gram.in"
813: { if(thisctl->subtype != STPROC)
814: execerr("control stack not empty upon END", "");
815: exnull();
816: popctl();
817: } break;
818: case 38:
819: # line 280 "gram.in"
820: { igeol=1; /* continue past newlines */ } break;
821: case 41:
822: # line 285 "gram.in"
823: { yyval.pval = hookup(yypvt[-2].pval,yypvt[-0].pval); } break;
824: case 44:
825: # line 293 "gram.in"
826: { attvars(yypvt[-1].pval,yypvt[-0].pval); yyval.pval = yypvt[-0].pval; } break;
827: case 45:
828: # line 295 "gram.in"
829: { attvars(yypvt[-3].pval,yypvt[-1].pval); yyval.pval = yypvt[-1].pval; } break;
830: case 46:
831: # line 297 "gram.in"
832: { yyval.pval = 0; } break;
833: case 47:
834: # line 299 "gram.in"
835: { yyval.pval = 0; } break;
836: case 48:
837: # line 301 "gram.in"
838: { yyval.pval = 0; } break;
839: case 49:
840: # line 303 "gram.in"
841: { mkequiv(yypvt[-0].pval); yyval.pval = 0; } break;
842: case 52:
843: # line 309 "gram.in"
844: { yyval.pval = hookup(yypvt[-2].pval,yypvt[-0].pval); } break;
845: case 55:
846: # line 316 "gram.in"
847: {ininit = YES; } break;
848: case 56:
849: # line 317 "gram.in"
850: { ininit = NO; mkinit(yypvt[-3].pval,yypvt[-0].pval); frexpr(yypvt[-3].pval); } break;
851: case 59:
852: # line 325 "gram.in"
853: { setimpl(imptype, 'a', 'z'); } break;
854: case 61:
855: # line 330 "gram.in"
856: { imptype = yypvt[-0].pval->attype; cfree(yypvt[-0].pval); } break;
857: case 64:
858: # line 338 "gram.in"
859: { setimpl(imptype, yypvt[-0].ival, yypvt[-0].ival); } break;
860: case 65:
861: # line 340 "gram.in"
862: { setimpl(imptype, yypvt[-2].ival, yypvt[-0].ival); } break;
863: case 68:
864: # line 348 "gram.in"
865: { mkequiv(yypvt[-1].pval); } break;
866: case 69:
867: # line 352 "gram.in"
868: { yyval.pval = mkchain(yypvt[-2].pval, mkchain(yypvt[-0].pval,CHNULL)); } break;
869: case 70:
870: # line 354 "gram.in"
871: { yyval.pval = hookup(yypvt[-2].pval, mkchain(yypvt[-0].pval,CHNULL)); } break;
872: case 72:
873: # line 358 "gram.in"
874: { attatt(yypvt[-1].pval,yypvt[-0].pval); } break;
875: case 73:
876: # line 361 "gram.in"
877: { yypvt[-1].pval->atdim = yypvt[-0].pval; } break;
878: case 74:
879: # line 362 "gram.in"
880: { yyval.pval = ALLOC(atblock); yyval.pval->atdim = yypvt[-0].pval; } break;
881: case 75:
882: # line 365 "gram.in"
883: { yyval.pval = 0; } break;
884: case 77:
885: # line 369 "gram.in"
886: { inbound = 1; } break;
887: case 78:
888: # line 370 "gram.in"
889: { inbound = 0; yyval.pval = arrays = mkchain(yypvt[-1].pval,arrays); } break;
890: case 80:
891: # line 374 "gram.in"
892: { hookup(yypvt[-2].pval,yypvt[-0].pval); } break;
893: case 81:
894: # line 378 "gram.in"
895: {
896: yyval.pval = ALLOC(dimblock);
897: yyval.pval->lowerb = 0;
898: yyval.pval->upperb = yypvt[-0].pval;
899: } break;
900: case 82:
901: # line 384 "gram.in"
902: {
903: yyval.pval = ALLOC(dimblock);
904: yyval.pval->lowerb = yypvt[-2].pval;
905: yyval.pval->upperb = yypvt[-0].pval;
906: } break;
907: case 84:
908: # line 392 "gram.in"
909: { yyval.pval = 0; } break;
910: case 85:
911: # line 395 "gram.in"
912: { yyval.pval = 0; } break;
913: case 88:
914: # line 400 "gram.in"
915: { hookup(yypvt[-2].pval,yypvt[-0].pval); } break;
916: case 89:
917: # line 404 "gram.in"
918: {
919: if(yypvt[-0].pval!=0)
920: if(yypvt[-1].pval->vdim==0)
921: yypvt[-1].pval->vdim = yypvt[-0].pval;
922: else if(!eqdim(yypvt[-0].pval,yypvt[-1].pval->vdim))
923: dclerr("multiple dimension", yypvt[-1].pval->namep);
924: yyval.pval = mkchain(yypvt[-1].pval,CHNULL);
925: } break;
926: case 90:
927: # line 412 "gram.in"
928: { ininit = YES; } break;
929: case 91:
930: # line 413 "gram.in"
931: {
932: ininit = NO;
933: if(yypvt[-2].ival!=OPASGN)
934: dclerr("illegal initialization operator", yypvt[-4].pval->sthead->namep);
935: if(yypvt[-3].pval!=0)
936: if(yypvt[-4].pval->vdim==0)
937: yypvt[-4].pval->vdim = yypvt[-3].pval;
938: else if(!eqdim(yypvt[-3].pval,yypvt[-4].pval->vdim))
939: dclerr("multiple dimension", yypvt[-4].pval->sthead->namep);
940: if(yypvt[-0].pval!=0 && yypvt[-4].pval->vinit!=0)
941: dclerr("multiple initialization", yypvt[-4].pval->sthead->namep);
942: yypvt[-4].pval->vinit = yypvt[-0].pval;
943: yyval.pval = mkchain(yypvt[-4].pval,CHNULL);
944: } break;
945: case 92:
946: # line 430 "gram.in"
947: { yyval.pval = mkvar(yypvt[-0].pval); } break;
948: case 94:
949: # line 435 "gram.in"
950: { attatt(yypvt[-1].pval,yypvt[-0].pval); } break;
951: case 96:
952: # line 440 "gram.in"
953: { yyval.pval = ALLOC(atblock); yyval.pval->atdim = yypvt[-0].pval; } break;
954: case 97:
955: # line 444 "gram.in"
956: {
957: yyval.pval = ALLOC(atblock);
958: if(yypvt[-0].ival == CLEXT)
959: yyval.pval->atext = 1;
960: yyval.pval->atclass = yypvt[-0].ival;
961: } break;
962: case 98:
963: # line 451 "gram.in"
964: {
965: yyval.pval = ALLOC(atblock);
966: yyval.pval->atclass = CLCOMMON;
967: yyval.pval->atcommon = yypvt[-1].pval;
968: } break;
969: case 99:
970: # line 457 "gram.in"
971: { yyval.pval = ALLOC(atblock); yyval.pval->attype = yypvt[-0].ival; } break;
972: case 100:
973: # line 459 "gram.in"
974: { yyval.pval = ALLOC(atblock); yyval.pval->attype = TYCHAR; yyval.pval->attypep = yypvt[-1].pval; } break;
975: case 101:
976: # line 461 "gram.in"
977: { yyval.pval = ALLOC(atblock); yyval.pval->attype = TYFIELD;
978: yyval.pval->attypep = mkfield(yypvt[-1].pval); } break;
979: case 102:
980: # line 464 "gram.in"
981: { yyval.pval = ALLOC(atblock); yyval.pval->attype = TYSTRUCT;
982: yyval.pval->attypep = yypvt[-0].pval; } break;
983: case 103:
984: # line 467 "gram.in"
985: { yyval.pval = ALLOC(atblock); yyval.pval->atprec = yypvt[-0].ival; } break;
986: case 104:
987: # line 470 "gram.in"
988: { yyval.ival = CLAUTO;
989: fprintf(diagfile,"AUTOMATIC not yet implemented\n"); } break;
990: case 105:
991: # line 472 "gram.in"
992: { yyval.ival = CLSTAT; } break;
993: case 106:
994: # line 473 "gram.in"
995: { yyval.ival = CLSTAT; } break;
996: case 107:
997: # line 474 "gram.in"
998: { yyval.ival = CLVALUE;
999: fprintf(diagfile, "VALUE not yet implemented\n"); } break;
1000: case 108:
1001: # line 476 "gram.in"
1002: { yyval.ival = CLEXT; } break;
1003: case 109:
1004: # line 480 "gram.in"
1005: { yyval.pval = yypvt[-1].pval; } break;
1006: case 110:
1007: # line 482 "gram.in"
1008: { yyval.pval = yypvt[-1].pval; } break;
1009: case 111:
1010: # line 485 "gram.in"
1011: { comneed = 1; } break;
1012: case 112:
1013: # line 488 "gram.in"
1014: { yyval.pval = mkcomm(""); } break;
1015: case 114:
1016: # line 492 "gram.in"
1017: { yyval.ival = TYINT; } break;
1018: case 115:
1019: # line 493 "gram.in"
1020: { yyval.ival = TYREAL; } break;
1021: case 116:
1022: # line 494 "gram.in"
1023: { yyval.ival = TYCOMPLEX; } break;
1024: case 117:
1025: # line 495 "gram.in"
1026: { yyval.ival = TYLOG; } break;
1027: case 118:
1028: # line 497 "gram.in"
1029: { yyval.ival = TYLREAL; /* holdover from Fortran */ } break;
1030: case 119:
1031: # line 499 "gram.in"
1032: { yyval.ival = TYLREAL; /* holdover from Fortran */ } break;
1033: case 120:
1034: # line 503 "gram.in"
1035: { yyval.pval = yypvt[-0].pval->varp; } break;
1036: case 121:
1037: # line 505 "gram.in"
1038: { yyval.pval = mkstruct(yypvt[-2].pval,yypvt[-0].pval); } break;
1039: case 122:
1040: # line 507 "gram.in"
1041: { yyval.pval = mkstruct(PNULL,yypvt[-0].pval); } break;
1042: case 123:
1043: # line 511 "gram.in"
1044: { if(yypvt[-0].pval->varp && yypvt[-0].pval->varp->blklevel<blklevel)
1045: hide(yypvt[-0].pval);
1046: yypvt[-0].pval->tag = TSTRUCT;
1047: } break;
1048: case 124:
1049: # line 516 "gram.in"
1050: { if(yypvt[-0].pval->varp)
1051: if(yypvt[-0].pval->varp->blklevel<blklevel)
1052: hide(yypvt[-0].pval);
1053: else dclerr("multiple declaration for type %s", yypvt[-0].pval->namep);
1054: } break;
1055: case 125:
1056: # line 523 "gram.in"
1057: { ++instruct; } break;
1058: case 126:
1059: # line 523 "gram.in"
1060: { --instruct; } break;
1061: case 127:
1062: # line 524 "gram.in"
1063: { yyval.pval = yypvt[-3].pval; prevv = -1; } break;
1064: case 130:
1065: # line 531 "gram.in"
1066: { yyval.ival = 1; } break;
1067: case 131:
1068: # line 532 "gram.in"
1069: { yyval.ival = 0; } break;
1070: case 132:
1071: # line 535 "gram.in"
1072: { if(yypvt[-0].pval->tag == TCALL)
1073: yypvt[-0].pval = funcinv(yypvt[-0].pval);
1074: if(yypvt[-0].pval->vtype==TYUNDEFINED && yypvt[-0].pval->vext==0)
1075: impldecl(yypvt[-0].pval);
1076: else if(yypvt[-0].pval->tag==TNAME && yypvt[-0].pval->vdcldone==0
1077: && yypvt[-0].pval->vext==0 && !inbound)
1078: dclit(yypvt[-0].pval);
1079: if(yypvt[-0].pval->vtype==TYFIELD)
1080: yyval.pval = extrfield(yypvt[-0].pval);
1081: } break;
1082: case 134:
1083: # line 547 "gram.in"
1084: { yyval.pval = mkconst(TYLOG, (yypvt[-0].ival == TRUE ? ".true." : ".false.") ); } break;
1085: case 135:
1086: # line 549 "gram.in"
1087: { yyval.pval = typexpr(yypvt[-1].pval,yypvt[-0].pval); } break;
1088: case 138:
1089: # line 553 "gram.in"
1090: { if( !ininit && yypvt[-0].pval->tag== TLIST)
1091: yyval.pval = compconst(yypvt[-0].pval);
1092: else yypvt[-0].pval->needpar = 1; } break;
1093: case 139:
1094: # line 557 "gram.in"
1095: { yyval.pval = mknode(TAROP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval); } break;
1096: case 140:
1097: # line 559 "gram.in"
1098: { yyval.pval = mknode(TAROP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval); } break;
1099: case 141:
1100: # line 561 "gram.in"
1101: { yyval.pval = mknode(TAROP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval); } break;
1102: case 142:
1103: # line 563 "gram.in"
1104: { if(yypvt[-1].ival==OPMINUS)
1105: yyval.pval = mknode(TNEGOP,OPMINUS, yypvt[-0].pval, PNULL);
1106: else yyval.pval = yypvt[-0].pval; } break;
1107: case 143:
1108: # line 567 "gram.in"
1109: { yyval.pval = mknode(TASGNOP,yypvt[-1].ival,yypvt[-0].pval,mkint(1)); } break;
1110: case 144:
1111: # line 569 "gram.in"
1112: { yyval.pval = mknode(TRELOP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval); } break;
1113: case 145:
1114: # line 571 "gram.in"
1115: { yyval.pval = mknode(TLOGOP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval); } break;
1116: case 146:
1117: # line 573 "gram.in"
1118: { yyval.pval = mknode(TLOGOP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval); } break;
1119: case 147:
1120: # line 575 "gram.in"
1121: { yyval.pval = mknode(TNOTOP,yypvt[-1].ival,yypvt[-0].pval,PNULL); } break;
1122: case 148:
1123: # line 577 "gram.in"
1124: { if(yypvt[-2].pval->tag == TCALL)
1125: {
1126: exprerr("may not assign to a function", CNULL);
1127: yyval.pval = errnode();
1128: }
1129: else
1130: yyval.pval = mknode(TASGNOP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval);
1131: } break;
1132: case 149:
1133: # line 586 "gram.in"
1134: { yyval.pval = mknode(TREPOP,0,yypvt[-2].pval,yypvt[-0].pval); } break;
1135: case 151:
1136: # line 589 "gram.in"
1137: { yyval.pval = errnode(); } break;
1138: case 152:
1139: # line 593 "gram.in"
1140: { if(yypvt[-0].pval->tag==TNAME && yypvt[-0].pval->vdcldone==0 &&
1141: yypvt[-0].pval->vsubs==0 && yypvt[-0].pval->vext==0 && !inbound)
1142: dclit(yypvt[-0].pval);
1143: } break;
1144: case 154:
1145: # line 601 "gram.in"
1146: {
1147: if(yypvt[-0].pval->tag!=TLIST)
1148: yypvt[-0].pval = mknode(TLIST,0, mkchain(yypvt[-0].pval,CHNULL), PNULL);
1149: if(yypvt[-1].pval->vdim)
1150: {
1151: if(yypvt[-1].pval->vdcldone==0 && yypvt[-1].pval->vext==0)
1152: dclit(yypvt[-1].pval);
1153: yyval.pval = subscript(yypvt[-1].pval,yypvt[-0].pval);
1154: }
1155: else yyval.pval = mkcall(yypvt[-1].pval,yypvt[-0].pval);
1156: } break;
1157: case 155:
1158: # line 613 "gram.in"
1159: { yyval.pval = strucelt(yypvt[-2].pval,yypvt[-0].pval); } break;
1160: case 156:
1161: # line 615 "gram.in"
1162: { if(yypvt[-0].pval->tag != TLIST)
1163: yypvt[-0].pval = mknode(TLIST,0, mkchain(yypvt[-0].pval,CHNULL), PNULL);
1164: yyval.pval = subscript(strucelt(yypvt[-3].pval,yypvt[-1].pval), yypvt[-0].pval);
1165: } break;
1166: case 157:
1167: # line 620 "gram.in"
1168: { yyval.pval = mkarrow(yypvt[-2].pval,yypvt[-0].pval); } break;
1169: case 158:
1170: # line 624 "gram.in"
1171: { if(yypvt[-0].pval->varp == 0) mkvar(yypvt[-0].pval);
1172: if(inbound)
1173: yypvt[-0].pval->varp->vadjdim = 1;
1174: yyval.pval = cpexpr(yypvt[-0].pval->varp); } break;
1175: case 159:
1176: # line 631 "gram.in"
1177: { yyval.pval = mknode(TLIST, 0, PNULL, PNULL); } break;
1178: case 160:
1179: # line 633 "gram.in"
1180: { yyval.pval = yypvt[-1].pval; } break;
1181: case 161:
1182: # line 635 "gram.in"
1183: { yyval.pval = mknode(TLIST,0,yypvt[-1].pval,PNULL); } break;
1184: case 162:
1185: # line 639 "gram.in"
1186: { yyval.pval = mkchain(yypvt[-2].pval, mkchain(yypvt[-0].pval, CHNULL) ); } break;
1187: case 163:
1188: # line 641 "gram.in"
1189: { hookup(yypvt[-2].pval, mkchain(yypvt[-0].pval,CHNULL) ); } break;
1190: case 164:
1191: # line 645 "gram.in"
1192: { yyval.pval = esizeof(yypvt[-1].pval->vtype, yypvt[-1].pval->vtypep, yypvt[-1].pval->vdim);
1193: frexpr(yypvt[-1].pval); } break;
1194: case 165:
1195: # line 648 "gram.in"
1196: { if(yypvt[-1].pval->attype==TYREAL && yypvt[-1].pval->atprec)
1197: yypvt[-1].pval->attype = TYLREAL;
1198: yyval.pval = esizeof(yypvt[-1].pval->attype, yypvt[-1].pval->attypep, yypvt[-1].pval->atdim);
1199: cfree(yypvt[-1].pval);
1200: } break;
1201: case 166:
1202: # line 654 "gram.in"
1203: { yyval.pval = mkint(tailor.ftnsize[FTNINT]/tailor.ftnchwd); } break;
1204: case 167:
1205: # line 658 "gram.in"
1206: { yyval.pval = elenof(yypvt[-1].pval->vtype, yypvt[-1].pval->vtypep, yypvt[-1].pval->vdim);
1207: frexpr(yypvt[-1].pval); } break;
1208: case 168:
1209: # line 661 "gram.in"
1210: { yyval.pval = elenof(yypvt[-1].pval->attype, yypvt[-1].pval->attypep, yypvt[-1].pval->atdim);
1211: cfree(yypvt[-1].pval);
1212: } break;
1213: case 169:
1214: # line 665 "gram.in"
1215: { yyval.pval = mkint(1); } break;
1216: case 171:
1217: # line 670 "gram.in"
1218: { yyval.ival = yypvt[-1].ival; } break;
1219: case 174:
1220: # line 677 "gram.in"
1221: { TEST fprintf(diagfile, "exec done\n"); } break;
1222: case 175:
1223: # line 681 "gram.in"
1224: { yyval.pval = bgnexec(); if(ncases > 0) ncases = 0; } break;
1225: case 176:
1226: # line 685 "gram.in"
1227: {
1228: if(yypvt[-2].pval->tag==TCALL)
1229: {
1230: dclerr("no statement functions in EFL",
1231: yypvt[-2].pval->sthead->namep);
1232: frexpr(yypvt[-2].pval);
1233: frexpr(yypvt[-0].pval);
1234: }
1235: else exasgn(yypvt[-2].pval,yypvt[-1].ival,yypvt[-0].pval);
1236: } break;
1237: case 177:
1238: # line 696 "gram.in"
1239: { exasgn(yypvt[-0].pval, yypvt[-1].ival, mkint(1) ); } break;
1240: case 178:
1241: # line 698 "gram.in"
1242: { excall(yypvt[-0].pval); } break;
1243: case 179:
1244: # line 700 "gram.in"
1245: { excall(yypvt[-0].pval); } break;
1246: case 181:
1247: # line 703 "gram.in"
1248: { TEST fprintf(diagfile, "exec: { stats }\n");
1249: addexec(); } break;
1250: case 182:
1251: # line 706 "gram.in"
1252: { thisexec->labeled = 1; } break;
1253: case 183:
1254: # line 708 "gram.in"
1255: { thisexec->uniffable = 1; popctl(); } break;
1256: case 184:
1257: # line 710 "gram.in"
1258: { thisexec->brnchend = 1; } break;
1259: case 185:
1260: # line 712 "gram.in"
1261: { exio(yypvt[-0].pval, 0); } break;
1262: case 186:
1263: # line 714 "gram.in"
1264: { exnull(); } break;
1265: case 187:
1266: # line 716 "gram.in"
1267: {
1268: exnull();
1269: putsii(ICCOMMENT, yypvt[-0].pval);
1270: cfree(yypvt[-0].pval);
1271: exnull();
1272: } break;
1273: case 188:
1274: # line 725 "gram.in"
1275: { TEST fprintf(diagfile, "exec:empty\n"); } break;
1276: case 189:
1277: # line 727 "gram.in"
1278: { TEST fprintf(diagfile, "exec: continue\n"); } break;
1279: case 190:
1280: # line 731 "gram.in"
1281: {
1282: thisexec->copylab = 1;
1283: ++blklevel;
1284: dclsect = 1;
1285: ndecl[blklevel] = 0;
1286: nhid [blklevel] = 0;
1287: } break;
1288: case 191:
1289: # line 741 "gram.in"
1290: {
1291: if(ndecl[blklevel]) unhide();
1292: --blklevel;
1293: dclsect = 0;
1294: } break;
1295: case 192:
1296: # line 749 "gram.in"
1297: { mklabel(yypvt[-2].pval,YES); } break;
1298: case 193:
1299: # line 751 "gram.in"
1300: { mklabel(mkilab(yypvt[-1].pval),YES); } break;
1301: case 194:
1302: # line 753 "gram.in"
1303: { mklabel(mkilab(yypvt[-3].pval),YES); } break;
1304: case 195:
1305: # line 755 "gram.in"
1306: { brkcase(); mkcase(PNULL,1); } break;
1307: case 196:
1308: # line 756 "gram.in"
1309: { brkcase(); } break;
1310: case 198:
1311: # line 760 "gram.in"
1312: { mkcase(yypvt[-0].pval,1); } break;
1313: case 199:
1314: # line 762 "gram.in"
1315: { mkcase(yypvt[-0].pval,1); } break;
1316: case 200:
1317: # line 766 "gram.in"
1318: { TEST fprintf(diagfile, "if-then-else\n");
1319: i = yypvt[-5].pval->brnchend & yypvt[-0].pval->brnchend;
1320: addexec();
1321: yyval.pval = addexec();
1322: thisexec->brnchend = i;
1323: TEST fprintf(diagfile, "exec: if(expr) exec else exec\n"); } break;
1324: case 201:
1325: # line 773 "gram.in"
1326: { TEST fprintf(diagfile, "if-then\n");
1327: pushlex = 1;
1328: yyclearin;
1329: yyval.pval = ifthen();
1330: TEST fprintf(diagfile, "exec: if(expr) exec\n"); } break;
1331: case 202:
1332: # line 779 "gram.in"
1333: { TEST fprintf(diagfile, "repeat done\n"); } break;
1334: case 203:
1335: # line 781 "gram.in"
1336: { TEST fprintf(diagfile, "exec: control exec\n"); yyval.pval = addexec(); } break;
1337: case 204:
1338: # line 785 "gram.in"
1339: { pushctl(STIF,yypvt[-1].pval); } break;
1340: case 205:
1341: # line 789 "gram.in"
1342: {
1343: if(thisctl->breaklab == 0)
1344: thisctl->breaklab = nextlab();
1345: /* if(thisexec->prevexec->brnchend == 0) */
1346: exgoto(thisctl->breaklab);
1347: exlab( indifs[thisctl->indifn] = nextlab() );
1348: } break;
1349: case 206:
1350: # line 799 "gram.in"
1351: { pushctl(STREPEAT, PNULL); } break;
1352: case 207:
1353: # line 803 "gram.in"
1354: { pushlex = 1;
1355: yyclearin;
1356: yyval.pval = addexec();
1357: exgoto(thisctl->xlab);
1358: TEST fprintf(diagfile, " no until\n"); } break;
1359: case 208:
1360: # line 809 "gram.in"
1361: { yyval.pval = addexec();
1362: exnull();
1363: exlab( indifs[thisctl->indifn] = nextlab() );
1364: exifgo(mknode(TNOTOP,OPNOT,yypvt[-1].pval,PNULL), thisctl->xlab);
1365: TEST fprintf(diagfile, "until\n");
1366: } break;
1367: case 209:
1368: # line 818 "gram.in"
1369: { exretn(PNULL); } break;
1370: case 210:
1371: # line 820 "gram.in"
1372: { exretn(yypvt[-0].pval); } break;
1373: case 212:
1374: # line 823 "gram.in"
1375: { exgoto(yypvt[-0].ival); } break;
1376: case 213:
1377: # line 825 "gram.in"
1378: { if( !equals(yypvt[-1].pval->namep, "to") )
1379: execerr("go %s ??\n", yypvt[-1].pval->namep);
1380: else exgoto(yypvt[-0].ival);
1381: } break;
1382: case 214:
1383: # line 830 "gram.in"
1384: { excompgoto(yypvt[-1].pval, yypvt[-0].pval); } break;
1385: case 215:
1386: # line 832 "gram.in"
1387: { if(!equals(yypvt[-2].pval->namep, "to") )
1388: execerr("go %s ??\n", yypvt[-2].pval->namep);
1389: else excompgoto(yypvt[-1].pval, yypvt[-0].pval);
1390: } break;
1391: case 216:
1392: # line 839 "gram.in"
1393: { yyval.pval = yypvt[-1].pval; } break;
1394: case 217:
1395: # line 844 "gram.in"
1396: { yyval.pval = mkchain(yypvt[-0].ival,CHNULL); } break;
1397: case 218:
1398: # line 846 "gram.in"
1399: { yyval.pval = hookup(yypvt[-2].pval, mkchain(yypvt[-0].ival,CHNULL) ); } break;
1400: case 220:
1401: # line 851 "gram.in"
1402: { yyval.pval = yypvt[-0].pval; } break;
1403: case 221:
1404: # line 856 "gram.in"
1405: { yyval.ival = mklabel(yypvt[-0].pval,NO); } break;
1406: case 222:
1407: # line 858 "gram.in"
1408: { yyval.ival = mklabel(mkilab(yypvt[-0].pval),NO); } break;
1409: case 223:
1410: # line 860 "gram.in"
1411: { yyval.ival = mkcase(yypvt[-0].pval,0); } break;
1412: case 224:
1413: # line 862 "gram.in"
1414: { yyval.ival = mkcase(PNULL,0); } break;
1415: case 225:
1416: # line 866 "gram.in"
1417: { exbrk(yypvt[-0].ival, PNULL, 0); } break;
1418: case 226:
1419: # line 868 "gram.in"
1420: { exbrk(yypvt[-1].ival, yypvt[-0].pval, 0); } break;
1421: case 227:
1422: # line 870 "gram.in"
1423: { exbrk(yypvt[-1].ival, PNULL, yypvt[-0].ival); } break;
1424: case 228:
1425: # line 872 "gram.in"
1426: { exbrk(yypvt[-2].ival,yypvt[-1].pval,yypvt[-0].ival); } break;
1427: case 229:
1428: # line 874 "gram.in"
1429: { exbrk(yypvt[-2].ival,yypvt[-0].pval,yypvt[-1].ival); } break;
1430: case 230:
1431: # line 877 "gram.in"
1432: { yyval.ival = 1; } break;
1433: case 231:
1434: # line 878 "gram.in"
1435: { yyval.ival = 0; } break;
1436: case 232:
1437: # line 879 "gram.in"
1438: { yyval.ival = 0; } break;
1439: case 233:
1440: # line 882 "gram.in"
1441: { yyval.ival = STWHILE; } break;
1442: case 234:
1443: # line 883 "gram.in"
1444: { yyval.ival = STFOR; } break;
1445: case 235:
1446: # line 884 "gram.in"
1447: { yyval.ival = STDO; } break;
1448: case 236:
1449: # line 885 "gram.in"
1450: { yyval.ival = STREPEAT; } break;
1451: case 237:
1452: # line 886 "gram.in"
1453: { yyval.ival = STSWITCH; } break;
1454: case 238:
1455: # line 887 "gram.in"
1456: { yyval.ival = STPROC; } break;
1457: case 239:
1458: # line 891 "gram.in"
1459: { pushctl(STWHILE, yypvt[-1].pval);
1460: TEST fprintf(diagfile, "while(expr)\n"); } break;
1461: case 240:
1462: # line 894 "gram.in"
1463: { exlab(thisctl->xlab);
1464: if(yypvt[-1].pval)
1465: exifgo(mknode(TNOTOP,OPNOT,yypvt[-1].pval,PNULL),
1466: thisctl->breaklab = nextlab() );
1467: else exnull();
1468: TEST fprintf(diagfile, "for (forlist)\n"); } break;
1469: case 241:
1470: # line 901 "gram.in"
1471: { pushctl(STSWITCH, simple(LVAL,yypvt[-1].pval));
1472: TEST fprintf(diagfile, "switch (expr)\n"); } break;
1473: case 242:
1474: # line 904 "gram.in"
1475: { pushctl(STDO, yypvt[-0].pval);
1476: TEST fprintf(diagfile, "do loop\n"); } break;
1477: case 243:
1478: # line 909 "gram.in"
1479: { yyval.pval = doloop(yypvt[-2].pval, PNULL, PNULL); } break;
1480: case 244:
1481: # line 911 "gram.in"
1482: { yyval.pval = doloop(yypvt[-1].pval, PNULL, PNULL); } break;
1483: case 245:
1484: # line 913 "gram.in"
1485: { yyval.pval = doloop(yypvt[-4].pval, yypvt[-2].pval, PNULL); } break;
1486: case 246:
1487: # line 915 "gram.in"
1488: { yyval.pval = doloop(yypvt[-3].pval, yypvt[-1].pval, PNULL); } break;
1489: case 247:
1490: # line 917 "gram.in"
1491: { yyval.pval = doloop(yypvt[-6].pval,yypvt[-4].pval,yypvt[-2].pval); } break;
1492: case 248:
1493: # line 919 "gram.in"
1494: { yyval.pval = doloop(yypvt[-5].pval,yypvt[-3].pval,yypvt[-1].pval); } break;
1495: case 249:
1496: # line 923 "gram.in"
1497: { pushctl(STFOR, PNULL); } break;
1498: case 250:
1499: # line 927 "gram.in"
1500: { exgoto(thisctl->xlab);
1501: exlab(thisctl->nextlab);
1502: addexec();
1503: } break;
1504: case 251:
1505: # line 932 "gram.in"
1506: { exgoto(thisctl->xlab);
1507: exlab(thisctl->nextlab);
1508: addexec();
1509: } break;
1510: case 253:
1511: # line 942 "gram.in"
1512: { addexec(); } break;
1513: case 254:
1514: # line 944 "gram.in"
1515: { addexec(); } break;
1516: case 255:
1517: # line 947 "gram.in"
1518: { yyval.pval = 0; } break;
1519: case 257:
1520: # line 952 "gram.in"
1521: { if(dbgopt) ++dbglevel; } break;
1522: case 258:
1523: # line 956 "gram.in"
1524: { if(dbgopt) --dbglevel; } break;
1525: case 259:
1526: # line 960 "gram.in"
1527: { yyval.pval = mkiost(yypvt[-5].ival, yypvt[-3].pval, yypvt[-1].pval); } break;
1528: case 260:
1529: # line 963 "gram.in"
1530: { yyval.ival = 0; } break;
1531: case 261:
1532: # line 964 "gram.in"
1533: { yyval.ival = 1; } break;
1534: case 262:
1535: # line 965 "gram.in"
1536: { yyval.ival = 2; } break;
1537: case 263:
1538: # line 966 "gram.in"
1539: { yyval.ival = 3; } break;
1540: case 265:
1541: # line 970 "gram.in"
1542: { yyval.pval = NULL; } break;
1543: case 266:
1544: # line 973 "gram.in"
1545: { yyval.pval = mkchain(yypvt[-0].pval,CHNULL); } break;
1546: case 267:
1547: # line 974 "gram.in"
1548: { hookup(yypvt[-2].pval, mkchain(yypvt[-0].pval,CHNULL)); } break;
1549: case 268:
1550: # line 977 "gram.in"
1551: { yyval.pval = mkioitem(yypvt[-0].pval,CNULL); } break;
1552: case 269:
1553: # line 978 "gram.in"
1554: { yyval.pval = mkioitem(yypvt[-2].pval,yypvt[-0].pval); } break;
1555: case 270:
1556: # line 979 "gram.in"
1557: { yyval.pval = mkioitem(PNULL,yypvt[-0].pval); } break;
1558: case 271:
1559: # line 980 "gram.in"
1560: { yyval.pval = mkiogroup(yypvt[-0].pval, CNULL, PNULL); } break;
1561: case 272:
1562: # line 981 "gram.in"
1563: { yyval.pval = mkiogroup(yypvt[-0].pval, CNULL, yypvt[-1].pval); } break;
1564: case 273:
1565: # line 982 "gram.in"
1566: { yyval.pval = mkiogroup(yypvt[-2].pval,yypvt[-0].pval,yypvt[-3].pval); } break;
1567: case 274:
1568: # line 983 "gram.in"
1569: { yyval.pval = mkiogroup(yypvt[-2].pval,yypvt[-0].pval,PNULL); } break;
1570: case 275:
1571: # line 986 "gram.in"
1572: { ++iobrlevel; } break;
1573: case 276:
1574: # line 987 "gram.in"
1575: { --iobrlevel; yyval.pval = yypvt[-1].pval; } break;
1576: case 277:
1577: # line 991 "gram.in"
1578: { yyval.pval = mkformat(yypvt[-0].ival, PNULL, PNULL); } break;
1579: case 278:
1580: # line 993 "gram.in"
1581: { yyval.pval = mkformat(yypvt[-3].ival, yypvt[-1].pval, PNULL); } break;
1582: case 279:
1583: # line 995 "gram.in"
1584: { yyval.pval = mkformat(yypvt[-5].ival,yypvt[-3].pval,yypvt[-1].pval); } break;
1585: case 280:
1586: # line 997 "gram.in"
1587: { yyval.pval = yypvt[-1].pval->leftp; frexpblock(yypvt[-1].pval); } break;
1588: case 281:
1589: # line 1000 "gram.in"
1590: { yyval.ival = yypvt[-1].ival; } break;
1591: case 282:
1592: # line 1003 "gram.in"
1593: { lettneed = YES;} break;
1594: case 283:
1595: # line 1006 "gram.in"
1596: { lettneed = NO; } break;
1597: }
1598: goto yystack; /* stack new state and value */
1599:
1600: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.