00001 #define SEOS 1
00002 #define SCOMMENT 2
00003 #define SLABEL 3
00004 #define SUNKNOWN 4
00005 #define SHOLLERITH 5
00006 #define SICON 6
00007 #define SRCON 7
00008 #define SDCON 8
00009 #define SBITCON 9
00010 #define SOCTCON 10
00011 #define SHEXCON 11
00012 #define STRUE 12
00013 #define SFALSE 13
00014 #define SNAME 14
00015 #define SNAMEEQ 15
00016 #define SFIELD 16
00017 #define SSCALE 17
00018 #define SINCLUDE 18
00019 #define SLET 19
00020 #define SASSIGN 20
00021 #define SAUTOMATIC 21
00022 #define SBACKSPACE 22
00023 #define SBLOCK 23
00024 #define SCALL 24
00025 #define SCHARACTER 25
00026 #define SCLOSE 26
00027 #define SCOMMON 27
00028 #define SCOMPLEX 28
00029 #define SCONTINUE 29
00030 #define SDATA 30
00031 #define SDCOMPLEX 31
00032 #define SDIMENSION 32
00033 #define SDO 33
00034 #define SDOUBLE 34
00035 #define SELSE 35
00036 #define SELSEIF 36
00037 #define SEND 37
00038 #define SENDFILE 38
00039 #define SENDIF 39
00040 #define SENTRY 40
00041 #define SEQUIV 41
00042 #define SEXTERNAL 42
00043 #define SFORMAT 43
00044 #define SFUNCTION 44
00045 #define SGOTO 45
00046 #define SASGOTO 46
00047 #define SCOMPGOTO 47
00048 #define SARITHIF 48
00049 #define SLOGIF 49
00050 #define SIMPLICIT 50
00051 #define SINQUIRE 51
00052 #define SINTEGER 52
00053 #define SINTRINSIC 53
00054 #define SLOGICAL 54
00055 #define SNAMELIST 55
00056 #define SOPEN 56
00057 #define SPARAM 57
00058 #define SPAUSE 58
00059 #define SPRINT 59
00060 #define SPROGRAM 60
00061 #define SPUNCH 61
00062 #define SREAD 62
00063 #define SREAL 63
00064 #define SRETURN 64
00065 #define SREWIND 65
00066 #define SSAVE 66
00067 #define SSTATIC 67
00068 #define SSTOP 68
00069 #define SSUBROUTINE 69
00070 #define STHEN 70
00071 #define STO 71
00072 #define SUNDEFINED 72
00073 #define SWRITE 73
00074 #define SLPAR 74
00075 #define SRPAR 75
00076 #define SEQUALS 76
00077 #define SCOLON 77
00078 #define SCOMMA 78
00079 #define SCURRENCY 79
00080 #define SPLUS 80
00081 #define SMINUS 81
00082 #define SSTAR 82
00083 #define SSLASH 83
00084 #define SPOWER 84
00085 #define SCONCAT 85
00086 #define SAND 86
00087 #define SOR 87
00088 #define SNEQV 88
00089 #define SEQV 89
00090 #define SNOT 90
00091 #define SEQ 91
00092 #define SLT 92
00093 #define SGT 93
00094 #define SLE 94
00095 #define SGE 95
00096 #define SNE 96
00097 #define SENDDO 97
00098 #define SWHILE 98
00099 #define SSLASHD 99
00100 #define SBYTE 100
00101
00102
00103 #include "defs.h"
00104 #include "p1defs.h"
00105
00106 static int nstars;
00107
00108 static int datagripe;
00109 static int ndim;
00110 static int vartype;
00111 int new_dcl;
00112 static ftnint varleng;
00113 static struct Dims dims[MAXDIM+1];
00114 extern struct Labelblock **labarray;
00115
00116 extern int maxlablist;
00117
00118
00119
00120
00121
00122 int lastwasbranch = NO;
00123 static int thiswasbranch = NO;
00124 extern ftnint yystno;
00125 extern flag intonly;
00126 static chainp datastack;
00127 extern long laststfcn, thisstno;
00128 extern int can_include;
00129 extern void endcheck Argdcl((void));
00130 extern struct Primblock *primchk Argdcl((expptr));
00131
00132 #define ESNULL (Extsym *)0
00133 #define NPNULL (Namep)0
00134 #define LBNULL (struct Listblock *)0
00135
00136 static void
00137 pop_datastack(Void) {
00138 chainp d0 = datastack;
00139 if (d0->datap)
00140 curdtp = (chainp)d0->datap;
00141 datastack = d0->nextp;
00142 d0->nextp = 0;
00143 frchain(&d0);
00144 }
00145
00146
00147
00148 typedef union {
00149 int ival;
00150 ftnint lval;
00151 char *charpval;
00152 chainp chval;
00153 tagptr tagval;
00154 expptr expval;
00155 struct Labelblock *labval;
00156 struct Nameblock *namval;
00157 struct Eqvchain *eqvval;
00158 Extsym *extval;
00159 } YYSTYPE;
00160 extern int yyerrflag;
00161 #ifndef YYMAXDEPTH
00162 #define YYMAXDEPTH 150
00163 #endif
00164 YYSTYPE yylval;
00165 YYSTYPE yyval;
00166 #define YYEOFCODE 1
00167 #define YYERRCODE 2
00168 short yyexca[] =
00169 {-1, 1,
00170 1, -1,
00171 -2, 0,
00172 -1, 20,
00173 4, 38,
00174 -2, 231,
00175 -1, 24,
00176 4, 42,
00177 -2, 231,
00178 -1, 151,
00179 4, 247,
00180 -2, 189,
00181 -1, 175,
00182 4, 269,
00183 81, 269,
00184 -2, 189,
00185 -1, 225,
00186 80, 174,
00187 -2, 140,
00188 -1, 246,
00189 77, 231,
00190 -2, 228,
00191 -1, 273,
00192 4, 290,
00193 -2, 144,
00194 -1, 277,
00195 4, 299,
00196 81, 299,
00197 -2, 146,
00198 -1, 330,
00199 80, 175,
00200 -2, 142,
00201 -1, 360,
00202 4, 271,
00203 17, 271,
00204 77, 271,
00205 81, 271,
00206 -2, 190,
00207 -1, 439,
00208 94, 0,
00209 95, 0,
00210 96, 0,
00211 97, 0,
00212 98, 0,
00213 99, 0,
00214 -2, 154,
00215 -1, 456,
00216 4, 293,
00217 81, 293,
00218 -2, 144,
00219 -1, 458,
00220 4, 295,
00221 81, 295,
00222 -2, 144,
00223 -1, 460,
00224 4, 297,
00225 81, 297,
00226 -2, 144,
00227 -1, 462,
00228 4, 300,
00229 81, 300,
00230 -2, 145,
00231 -1, 506,
00232 81, 293,
00233 -2, 144,
00234 };
00235 #define YYNPROD 305
00236 #define YYPRIVATE 57344
00237 #define YYLAST 1455
00238 short yyact[] =
00239 {
00240 239, 359, 474, 306, 416, 427, 299, 389, 473, 267,
00241 315, 231, 400, 358, 318, 415, 328, 253, 319, 100,
00242 224, 297, 294, 280, 402, 401, 305, 117, 185, 265,
00243 17, 122, 204, 275, 196, 191, 202, 203, 119, 129,
00244 107, 271, 200, 184, 112, 104, 338, 102, 166, 167,
00245 336, 337, 338, 344, 343, 342, 121, 157, 120, 345,
00246 347, 346, 349, 348, 350, 261, 276, 336, 337, 338,
00247 131, 132, 133, 134, 104, 136, 539, 158, 399, 158,
00248 313, 166, 167, 336, 337, 338, 344, 343, 342, 341,
00249 340, 311, 345, 347, 346, 349, 348, 350, 399, 398,
00250 105, 514, 115, 537, 166, 167, 336, 337, 338, 344,
00251 343, 342, 341, 340, 238, 345, 347, 346, 349, 348,
00252 350, 106, 130, 104, 478, 211, 187, 188, 412, 320,
00253 259, 260, 261, 411, 95, 166, 167, 336, 337, 338,
00254 186, 213, 296, 212, 194, 486, 195, 542, 245, 96,
00255 97, 98, 527, 104, 529, 158, 523, 449, 258, 158,
00256 241, 243, 484, 101, 487, 485, 216, 274, 471, 222,
00257 217, 472, 221, 158, 483, 465, 430, 220, 166, 167,
00258 259, 260, 261, 262, 158, 166, 167, 336, 337, 338,
00259 344, 156, 121, 156, 120, 464, 345, 347, 346, 349,
00260 348, 350, 463, 373, 281, 282, 283, 236, 104, 232,
00261 242, 242, 249, 101, 292, 301, 263, 468, 290, 302,
00262 279, 296, 291, 288, 289, 166, 167, 259, 260, 261,
00263 264, 317, 455, 335, 189, 351, 312, 310, 446, 453,
00264 431, 284, 425, 335, 166, 167, 259, 260, 261, 262,
00265 258, 466, 325, 158, 467, 450, 380, 99, 449, 158,
00266 158, 158, 158, 158, 258, 258, 357, 379, 269, 156,
00267 234, 420, 266, 156, 421, 409, 393, 335, 410, 394,
00268 361, 333, 323, 362, 334, 258, 378, 156, 270, 208,
00269 326, 101, 330, 178, 113, 332, 374, 111, 156, 375,
00270 376, 403, 352, 110, 109, 108, 354, 355, 385, 386,
00271 363, 356, 384, 225, 377, 425, 367, 368, 369, 370,
00272 371, 422, 223, 364, 335, 538, 391, 335, 534, 533,
00273 532, 335, 423, 335, 372, 413, 408, 395, 390, 166,
00274 167, 259, 260, 261, 262, 381, 434, 528, 531, 526,
00275 494, 429, 237, 335, 496, 335, 335, 335, 104, 104,
00276 490, 298, 138, 158, 258, 335, 448, 156, 258, 258,
00277 258, 258, 258, 156, 156, 156, 156, 156, 251, 192,
00278 451, 103, 335, 454, 309, 277, 277, 360, 287, 426,
00279 118, 352, 166, 167, 259, 260, 261, 262, 137, 387,
00280 403, 232, 435, 436, 437, 438, 439, 440, 441, 442,
00281 443, 444, 477, 247, 469, 406, 482, 470, 308, 269,
00282 452, 166, 167, 336, 337, 338, 344, 335, 479, 155,
00283 244, 155, 488, 228, 225, 499, 335, 335, 335, 335,
00284 335, 335, 335, 335, 335, 335, 383, 497, 273, 273,
00285 495, 502, 201, 258, 150, 151, 214, 175, 103, 103,
00286 103, 103, 501, 190, 475, 454, 210, 172, 193, 142,
00287 503, 197, 198, 199, 504, 510, 335, 156, 207, 403,
00288 277, 513, 507, 508, 509, 331, 277, 482, 517, 489,
00289 335, 520, 492, 335, 197, 218, 219, 242, 498, 335,
00290 525, 519, 518, 516, 515, 524, 353, 155, 404, 512,
00291 246, 155, 248, 104, 406, 417, 30, 535, 406, 511,
00292 390, 209, 213, 335, 227, 155, 268, 93, 6, 541,
00293 250, 335, 171, 173, 177, 82, 155, 335, 4, 475,
00294 81, 335, 5, 273, 543, 80, 457, 459, 461, 382,
00295 124, 79, 103, 174, 304, 295, 307, 522, 78, 77,
00296 76, 60, 49, 242, 48, 45, 424, 322, 33, 114,
00297 530, 118, 206, 316, 414, 321, 205, 397, 396, 300,
00298 197, 536, 481, 135, 215, 392, 277, 277, 277, 314,
00299 540, 116, 26, 406, 25, 353, 24, 23, 22, 21,
00300 388, 286, 9, 8, 7, 155, 2, 404, 303, 20,
00301 165, 155, 155, 155, 155, 155, 51, 491, 293, 268,
00302 230, 329, 268, 268, 166, 167, 336, 337, 338, 344,
00303 343, 457, 459, 461, 327, 345, 347, 346, 349, 348,
00304 350, 418, 92, 256, 53, 339, 19, 55, 37, 456,
00305 458, 460, 226, 3, 1, 0, 0, 0, 0, 0,
00306 0, 307, 0, 405, 197, 0, 0, 0, 0, 0,
00307 0, 277, 277, 277, 419, 0, 0, 0, 353, 0,
00308 321, 0, 0, 0, 0, 0, 404, 0, 0, 0,
00309 493, 0, 0, 0, 432, 166, 167, 336, 337, 338,
00310 344, 343, 342, 341, 340, 0, 345, 347, 346, 349,
00311 348, 350, 0, 0, 0, 155, 0, 500, 0, 0,
00312 0, 0, 0, 0, 0, 0, 268, 0, 0, 0,
00313 0, 0, 462, 0, 506, 458, 460, 166, 167, 336,
00314 337, 338, 344, 343, 342, 341, 340, 0, 345, 347,
00315 346, 349, 348, 350, 0, 0, 0, 295, 0, 0,
00316 0, 0, 405, 480, 0, 307, 405, 0, 0, 447,
00317 0, 0, 0, 0, 166, 167, 336, 337, 338, 344,
00318 343, 342, 341, 340, 316, 345, 347, 346, 349, 348,
00319 350, 0, 0, 445, 0, 0, 0, 0, 166, 167,
00320 336, 337, 338, 344, 343, 342, 341, 340, 268, 345,
00321 347, 346, 349, 348, 350, 0, 0, 0, 505, 0,
00322 0, 0, 0, 0, 0, 0, 505, 505, 505, 0,
00323 0, 0, 0, 0, 0, 0, 307, 12, 0, 0,
00324 0, 405, 0, 0, 0, 0, 505, 0, 0, 0,
00325 521, 10, 56, 46, 73, 86, 14, 61, 70, 91,
00326 38, 66, 47, 42, 68, 72, 31, 67, 35, 34,
00327 11, 88, 36, 18, 41, 39, 28, 16, 57, 58,
00328 59, 50, 54, 43, 89, 64, 40, 69, 44, 90,
00329 29, 62, 85, 13, 0, 83, 65, 52, 87, 27,
00330 74, 63, 15, 433, 0, 71, 84, 0, 166, 167,
00331 336, 337, 338, 344, 343, 342, 341, 340, 0, 345,
00332 347, 346, 349, 348, 350, 0, 0, 0, 0, 0,
00333 32, 0, 0, 75, 166, 167, 336, 337, 338, 344,
00334 343, 342, 341, 340, 0, 345, 347, 346, 349, 348,
00335 350, 73, 0, 0, 0, 70, 0, 0, 66, 0,
00336 0, 68, 72, 0, 67, 161, 162, 163, 164, 170,
00337 169, 168, 159, 160, 104, 0, 0, 0, 0, 0,
00338 0, 0, 64, 0, 69, 0, 0, 0, 0, 0,
00339 0, 0, 0, 65, 0, 0, 0, 74, 0, 0,
00340 0, 0, 71, 161, 162, 163, 164, 170, 169, 168,
00341 159, 160, 104, 0, 161, 162, 163, 164, 170, 169,
00342 168, 159, 160, 104, 0, 0, 0, 0, 0, 0,
00343 75, 0, 0, 0, 235, 0, 0, 0, 0, 0,
00344 166, 167, 365, 0, 366, 0, 0, 0, 0, 0,
00345 240, 161, 162, 163, 164, 170, 169, 168, 159, 160,
00346 104, 0, 161, 162, 163, 164, 170, 169, 168, 159,
00347 160, 104, 235, 229, 0, 0, 0, 0, 166, 167,
00348 233, 0, 0, 235, 0, 0, 0, 0, 240, 166,
00349 167, 476, 0, 0, 0, 0, 0, 0, 0, 240,
00350 161, 162, 163, 164, 170, 169, 168, 159, 160, 104,
00351 161, 162, 163, 164, 170, 169, 168, 159, 160, 104,
00352 235, 0, 0, 0, 0, 0, 166, 167, 233, 0,
00353 0, 235, 0, 0, 0, 0, 240, 166, 167, 428,
00354 0, 0, 0, 0, 0, 0, 0, 240, 161, 162,
00355 163, 164, 170, 169, 168, 159, 160, 104, 0, 161,
00356 162, 163, 164, 170, 169, 168, 159, 160, 104, 278,
00357 0, 0, 0, 272, 0, 166, 167, 0, 0, 0,
00358 0, 0, 0, 0, 0, 240, 161, 162, 163, 164,
00359 170, 169, 168, 159, 160, 104, 0, 0, 0, 0,
00360 0, 0, 0, 0, 0, 94, 161, 162, 163, 164,
00361 170, 169, 168, 159, 160, 104, 257, 235, 0, 0,
00362 0, 0, 0, 166, 167, 0, 0, 0, 278, 0,
00363 0, 0, 0, 240, 166, 167, 0, 123, 0, 0,
00364 126, 127, 128, 0, 240, 0, 0, 0, 0, 0,
00365 0, 0, 139, 140, 0, 324, 141, 0, 143, 144,
00366 145, 166, 167, 146, 147, 148, 0, 149, 0, 0,
00367 0, 240, 0, 0, 0, 252, 0, 0, 0, 0,
00368 0, 166, 167, 254, 0, 255, 0, 179, 180, 181,
00369 182, 183, 161, 162, 163, 164, 170, 169, 168, 159,
00370 160, 104, 0, 161, 162, 163, 164, 170, 169, 168,
00371 159, 160, 104, 161, 162, 163, 164, 170, 169, 168,
00372 159, 160, 104, 161, 162, 163, 164, 170, 169, 168,
00373 159, 160, 104, 161, 162, 163, 164, 170, 169, 168,
00374 159, 160, 104, 0, 0, 0, 0, 0, 0, 0,
00375 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00376 0, 154, 0, 0, 0, 0, 0, 166, 167, 152,
00377 0, 153, 252, 0, 0, 0, 0, 0, 166, 167,
00378 285, 0, 154, 0, 0, 0, 0, 0, 166, 167,
00379 176, 0, 407, 0, 0, 0, 0, 0, 166, 167,
00380 56, 46, 252, 86, 0, 61, 0, 91, 166, 167,
00381 47, 0, 0, 0, 0, 0, 0, 0, 0, 88,
00382 0, 0, 0, 0, 0, 0, 57, 58, 59, 50,
00383 0, 0, 89, 0, 0, 0, 0, 90, 0, 62,
00384 85, 0, 0, 83, 0, 52, 87, 0, 0, 63,
00385 0, 125, 0, 0, 84
00386 };
00387 short yypact[] =
00388 {
00389 -1000, 536, 524, 830,-1000,-1000,-1000,-1000,-1000,-1000,
00390 519,-1000,-1000,-1000,-1000,-1000,-1000, 210, 496, 19,
00391 224, 223, 222, 216, 82, 213, 16, 106,-1000,-1000,
00392 -1000,-1000,-1000,1378,-1000,-1000,-1000, 37,-1000,-1000,
00393 -1000,-1000,-1000,-1000,-1000, 496,-1000,-1000,-1000,-1000,
00394 -1000, 392,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
00395 -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
00396 -1000,-1000,-1000,-1000,-1000,-1000,1284, 390,1305, 390,
00397 212,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
00398 -1000,-1000,-1000,-1000,-1000, 496, 496, 496, 496,-1000,
00399 496,-1000, 302,-1000,-1000, 496,-1000, -30, 496, 496,
00400 496, 375,-1000,-1000,-1000, 496, 208,-1000,-1000,-1000,
00401 -1000, 504, 389, 132,-1000,-1000, 379,-1000,-1000,-1000,
00402 -1000, 106, 496, 496, 375,-1000,-1000, 243, 357, 515,
00403 -1000, 356, 995,1140,1140, 353, 513, 496, 336, 496,
00404 -1000,-1000,-1000,-1000,1198,-1000,-1000, 95,1325,-1000,
00405 -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
00406 -1000,-1000,1198, 191, 207,-1000,-1000,1092,1151,-1000,
00407 -1000,-1000,-1000,1295, 311,-1000,-1000, 302, 302, 496,
00408 -1000,-1000, 136, 284,-1000, 82,-1000, 284,-1000,-1000,
00409 -1000, 496,-1000, 341,-1000, 307, 927, 5, 106, -6,
00410 496, 82, 28,-1000,-1000,1178,-1000, 496,-1000,-1000,
00411 -1000,-1000,-1000,1140,-1000,1140, 411,-1000,1140,-1000,
00412 203,-1000, 851, 513,-1000,1140,-1000,-1000,-1000,1140,
00413 1140,-1000, 851,-1000,1140,-1000, 82, 513,-1000, 309,
00414 202,-1000,1325,-1000,-1000,-1000, 957,-1000,1325,1325,
00415 1325,1325,1325, -22, 256, 122, 342,-1000,-1000, 342,
00416 342,-1000,1151, 205, 186, 175, 851,-1000,1151,-1000,
00417 -1000,-1000,-1000,-1000, 95,-1000,-1000, 321,-1000,-1000,
00418 302,-1000,-1000, 198,-1000,-1000,-1000, 37,-1000, -3,
00419 1315, 496,-1000, 197,-1000, 47,-1000,-1000, 341, 498,
00420 -1000, 496,-1000,-1000, 193,-1000, 242, 28,-1000,-1000,
00421 -1000, 163,1140, 851,1054,-1000, 851, 273, 96, 159,
00422 851, 496, 825,-1000,1043,1140,1140,1140,1140,1140,
00423 1140,1140,1140,1140,1140,-1000,-1000,-1000,-1000,-1000,
00424 -1000,-1000, 715, 157, -41, 102, 691, 289, 177,-1000,
00425 -1000,-1000,1198, 161, 851,-1000,-1000, 45, -22, -22,
00426 -22, 142,-1000, 342, 122, 151, 122,-1000,1151,1151,
00427 1151, 654, 121, 114, 94,-1000,-1000,-1000, 173,-1000,
00428 138,-1000, 284,-1000, 57,-1000, 90,1006,-1000,1315,
00429 -1000,-1000, 39,1102,-1000,-1000,-1000,1140,-1000,-1000,
00430 496,-1000, 341, 93, 84,-1000, 61,-1000, 83,-1000,
00431 -1000, 496,1140,-1000, 283,1140, 612,-1000, 272, 277,
00432 1140,1140,-1000, 513,-1000, -18, -41, -41, -41, 338,
00433 -35, -35, 541, 102, 52,-1000,1140,-1000, 513, 513,
00434 82,-1000, 95,-1000,-1000, 342,-1000,-1000,-1000,-1000,
00435 -1000,-1000,-1000,1151,1151,1151,-1000, 503, 502, 37,
00436 -1000,-1000,1006,-1000,-1000, 21,-1000,-1000,1315,-1000,
00437 -1000,-1000,-1000, 341,-1000, 498, 498, 496,-1000, 851,
00438 1140, 75, 851, 432,-1000,-1000,1140, 271, 851, 71,
00439 269, 76,-1000,1140, 270, 236, 269, 252, 251, 250,
00440 -1000,-1000,-1000,-1000,1006,-1000,-1000, 17, 247,-1000,
00441 -1000,-1000, -2,1140,-1000,-1000,-1000, 513,-1000,-1000,
00442 851,-1000,-1000,-1000,-1000,-1000, 851,-1000,-1000,-1000,
00443 851, 66, 513,-1000
00444 };
00445 short yypgo[] =
00446 {
00447 0, 654, 653, 1, 652, 167, 9, 30, 648, 647,
00448 646, 4, 0, 645, 644, 643, 39, 642, 3, 26,
00449 641, 634, 621, 18, 14, 620, 35, 618, 617, 29,
00450 41, 33, 20, 362, 22, 616, 34, 352, 66, 270,
00451 16, 57, 378, 2, 24, 25, 11, 207, 114, 610,
00452 609, 38, 28, 43, 608, 606, 604, 603, 602,1205,
00453 134, 601, 600, 7, 599, 598, 597, 596, 594, 592,
00454 591, 31, 589, 19, 585, 21, 37, 6, 584, 5,
00455 42, 583, 36, 582, 579, 12, 27, 10, 578, 577,
00456 8, 13, 32, 576, 574, 572, 15, 569, 516, 568,
00457 567, 566, 565, 564, 562, 561, 560, 454, 559, 558,
00458 553, 551, 545, 540, 23, 535, 530, 17
00459 };
00460 short yyr1[] =
00461 {
00462 0, 1, 1, 55, 55, 55, 55, 55, 55, 55,
00463 2, 56, 56, 56, 56, 56, 56, 56, 60, 52,
00464 33, 53, 53, 61, 61, 62, 62, 63, 63, 26,
00465 26, 26, 27, 27, 34, 34, 17, 57, 57, 57,
00466 57, 57, 57, 57, 57, 57, 57, 57, 57, 10,
00467 10, 10, 74, 7, 8, 9, 9, 9, 9, 9,
00468 9, 9, 9, 9, 9, 9, 9, 16, 16, 16,
00469 50, 50, 50, 50, 51, 51, 64, 64, 65, 65,
00470 66, 66, 80, 54, 54, 67, 67, 81, 82, 76,
00471 83, 84, 77, 77, 85, 85, 45, 45, 45, 70,
00472 70, 86, 86, 72, 72, 87, 36, 18, 18, 19,
00473 19, 75, 75, 89, 88, 88, 90, 90, 43, 43,
00474 91, 91, 3, 68, 68, 92, 92, 95, 93, 94,
00475 94, 96, 96, 11, 69, 69, 97, 20, 20, 71,
00476 21, 21, 22, 22, 38, 38, 38, 39, 39, 39,
00477 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
00478 39, 12, 12, 13, 13, 13, 13, 13, 13, 37,
00479 37, 37, 37, 32, 40, 40, 44, 44, 48, 48,
00480 48, 48, 48, 48, 48, 47, 49, 49, 49, 41,
00481 41, 42, 42, 42, 42, 42, 42, 42, 42, 58,
00482 58, 58, 58, 58, 58, 100, 58, 58, 58, 99,
00483 23, 24, 101, 24, 98, 98, 98, 98, 98, 98,
00484 98, 98, 98, 98, 98, 4, 102, 103, 103, 103,
00485 103, 73, 73, 35, 25, 25, 46, 46, 14, 14,
00486 28, 28, 59, 78, 79, 104, 105, 105, 105, 105,
00487 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
00488 105, 106, 113, 113, 113, 108, 115, 115, 115, 110,
00489 110, 107, 107, 116, 116, 117, 117, 117, 117, 117,
00490 117, 15, 109, 111, 112, 112, 29, 29, 6, 6,
00491 30, 30, 30, 31, 31, 31, 31, 31, 31, 5,
00492 5, 5, 5, 5, 114
00493 };
00494 short yyr2[] =
00495 {
00496 0, 0, 3, 2, 2, 2, 3, 3, 2, 1,
00497 1, 3, 4, 3, 4, 4, 5, 3, 0, 1,
00498 1, 0, 1, 2, 3, 1, 3, 1, 3, 0,
00499 2, 3, 1, 3, 1, 1, 1, 1, 1, 1,
00500 1, 1, 1, 1, 1, 1, 2, 1, 5, 7,
00501 5, 5, 0, 2, 1, 1, 1, 1, 1, 1,
00502 1, 1, 1, 1, 1, 1, 1, 0, 4, 6,
00503 3, 4, 5, 3, 1, 3, 3, 3, 3, 3,
00504 3, 3, 3, 1, 3, 3, 3, 0, 6, 0,
00505 0, 0, 2, 3, 1, 3, 1, 2, 1, 1,
00506 3, 1, 1, 1, 3, 3, 2, 1, 5, 1,
00507 3, 0, 3, 0, 2, 3, 1, 3, 1, 1,
00508 1, 3, 1, 3, 3, 4, 1, 0, 2, 1,
00509 3, 1, 3, 1, 1, 2, 4, 1, 3, 0,
00510 0, 1, 1, 3, 1, 3, 1, 1, 1, 3,
00511 3, 3, 3, 2, 3, 3, 3, 3, 3, 2,
00512 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00513 2, 4, 5, 5, 0, 1, 1, 1, 1, 1,
00514 1, 1, 1, 1, 1, 5, 1, 1, 1, 1,
00515 3, 1, 1, 3, 3, 3, 3, 2, 3, 1,
00516 5, 4, 1, 2, 2, 0, 7, 2, 2, 5,
00517 3, 1, 0, 5, 4, 5, 2, 1, 1, 10,
00518 1, 3, 4, 3, 3, 1, 1, 3, 3, 7,
00519 7, 0, 1, 3, 1, 3, 1, 2, 1, 1,
00520 1, 3, 0, 0, 0, 1, 2, 2, 2, 2,
00521 2, 2, 2, 3, 4, 4, 2, 3, 4, 1,
00522 3, 3, 1, 1, 1, 3, 1, 1, 1, 1,
00523 1, 3, 3, 1, 3, 1, 1, 1, 2, 2,
00524 2, 1, 3, 3, 4, 4, 1, 3, 1, 5,
00525 1, 1, 1, 3, 3, 3, 3, 3, 3, 1,
00526 3, 5, 5, 5, 0
00527 };
00528 short yychk[] =
00529 {
00530 -1000, -1, -55, -2, 2, 6, 4, -56, -57, -58,
00531 21, 40, 7, 63, 26, 72, 47, -7, 43, -10,
00532 -50, -64, -65, -66, -67, -68, -69, 69, 46, 60,
00533 -98, 36, 100, -99, 39, 38, 42, -8, 30, 45,
00534 56, 44, 33, 53, 58,-102, 23, 32,-103,-104,
00535 51, -35, 67, -14, 52, -9, 22, 48, 49, 50,
00536 -105, 27, 61, 71, 55, 66, 31, 37, 34, 57,
00537 28, 75, 35, 24, 70, 103,-106,-108,-109,-111,
00538 -112,-113,-115, 65, 76, 62, 25, 68, 41, 54,
00539 59, 29, -17, 8, -59, -60, -60, -60, -60, 47,
00540 -73, 81, -52, -33, 17, 81, 102, -73, 81, 81,
00541 81, 81, -73, 81, -97, 86, -70, -86, -33, -51,
00542 88, 86, -71, -59, -98, 73, -59, -59, -59, -16,
00543 85, -71, -71, -71, -71, -81, -71, -37, -33, -59,
00544 -59, -59, 77, -59, -59, -59, -59, -59, -59, -59,
00545 -107, -42, 85, 87, 77, -37, -48, -41, -12, 15,
00546 16, 8, 9, 10, 11, -49, 83, 84, 14, 13,
00547 12,-107, 77,-107,-110, -42, 85,-107, 81, -59,
00548 -59, -59, -59, -59, -53, -52, -53, -52, -52, -60,
00549 -33, -26, 77, -33, -76, -51, -36, -33, -33, -33,
00550 -80, 77, -82, -76, -92, -93, -95, -33, 81, 17,
00551 77, -3, -73, 9, 77, -78, -36, -51, -33, -33,
00552 -80, -82, -92, 79, -32, 77, -4, 9, 77, 78,
00553 -25, -46, -38, 85, -39, 77, -47, -37, -48, -12,
00554 93, -40, -38, -40, 77, -3, -33, 77, -33, -41,
00555 -116, -42, 77,-117, 85, 87, -15, 18, -12, 85,
00556 86, 87, 88, -41, -41, -29, 81, -6, -37, 77,
00557 81, -30, 81, -39, -5, -31, -38, -47, 77, -30,
00558 -114,-114,-114,-114, -41, 85, -61, 77, -26, -26,
00559 -52, -71, 78, -27, -34, -33, 85, -75, 77, -77,
00560 -84, -73, -75, -54, -37, -19, -18, -37, 77, 77,
00561 -7, 86, -86, 86, -72, -87, -33, -73, -24, -23,
00562 101, -33,-100, -38, 77, -36, -38, -21, -40, -22,
00563 -38, 74, -38, 78, 81, -12, 85, 86, 87, -13,
00564 92, 91, 90, 89, 88, 94, 96, 95, 98, 97,
00565 99, -3, -38, -39, -38, -38, -38, -73, -91, -3,
00566 78, 78, 81, -41, -38, 85, 87, -41, -41, -41,
00567 -41, -41, 78, 81, -29, -29, -29, -30, 81, 81,
00568 81, -38, -39, -5, -31,-114,-114, 78, -62, -63,
00569 17, -26, -74, 78, 81, -16, -88, -89, 102, 81,
00570 -85, -45, -44, -12, -47, -33, -48, 77, -36, 78,
00571 81, 86, 81, -19, -94, -96, -11, 17, -20, -33,
00572 78, 81, 79, -24,-101, 79, -38, -79, 85, 78,
00573 80, 81, -33, 78, -46, -38, -38, -38, -38, -38,
00574 -38, -38, -38, -38, -38, 78, 81, 78, 77, 81,
00575 78,-117, -41, 78, -6, 81, -39, -5, -39, -5,
00576 -39, -5, 78, 81, 81, 81, 78, 81, 79, -75,
00577 -34, 78, 81, -90, -43, -38, 85, -85, 85, -44,
00578 -37, -83, -18, 81, 78, 81, 84, 81, -87, -38,
00579 77, -28, -38, 78, 78, -32, 77, -40, -38, -3,
00580 -39, -91, -3, -73, -23, -33, -39, -23, -23, -23,
00581 -63, 17, -16, -90, 80, -45, -44, -77, -23, -96,
00582 -11, -33, -38, 81, 73, -79, 78, 81, 78, 78,
00583 -38, 78, 78, 78, 78, -43, -38, 86, 78, 78,
00584 -38, -3, 81, -3
00585 };
00586 short yydef[] =
00587 {
00588 1, -2, 0, 0, 9, 10, 2, 3, 4, 5,
00589 0, 242, 8, 18, 18, 18, 18, 231, 0, 37,
00590 -2, 39, 40, 41, -2, 43, 44, 45, 47, 139,
00591 199, 242, 202, 0, 242, 242, 242, 67, 139, 139,
00592 139, 139, 87, 139, 134, 0, 242, 242, 217, 218,
00593 242, 220, 242, 242, 242, 54, 226, 242, 242, 242,
00594 245, 242, 238, 239, 55, 56, 57, 58, 59, 60,
00595 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
00596 259, 242, 242, 242, 242, 242, 262, 263, 264, 266,
00597 267, 268, 6, 36, 7, 21, 21, 0, 0, 18,
00598 0, 232, 29, 19, 20, 0, 89, 0, 232, 0,
00599 0, 0, 89, 127, 135, 0, 46, 99, 101, 102,
00600 74, 0, 0, 231, 203, 204, 0, 207, 208, 53,
00601 243, 0, 0, 0, 0, 89, 127, 0, 169, 0,
00602 216, 0, 0, 174, 174, 0, 0, 0, 0, 0,
00603 246, -2, 248, 249, 0, 191, 192, 0, 0, 178,
00604 179, 180, 181, 182, 183, 184, 161, 162, 186, 187,
00605 188, 250, 0, 251, 252, -2, 270, 256, 0, 304,
00606 304, 304, 304, 0, 11, 22, 13, 29, 29, 0,
00607 139, 17, 0, 111, 91, 231, 73, 111, 77, 79,
00608 81, 0, 86, 0, 124, 126, 0, 0, 0, 0,
00609 0, 231, 0, 122, 205, 0, 70, 0, 76, 78,
00610 80, 85, 123, 0, 170, -2, 0, 225, 0, 221,
00611 0, 234, 236, 0, 144, 0, 146, 147, 148, 0,
00612 0, 223, 175, 224, 0, 227, -2, 0, 233, 275,
00613 0, 189, 0, 273, 276, 277, 0, 281, 0, 0,
00614 0, 0, 0, 197, 275, 253, 0, 286, 288, 0,
00615 0, 257, 0, -2, 291, 292, 0, -2, 0, 260,
00616 261, 265, 282, 283, 304, 304, 12, 0, 14, 15,
00617 29, 52, 30, 0, 32, 34, 35, 67, 113, 0,
00618 0, 0, 106, 0, 83, 0, 109, 107, 0, 0,
00619 128, 0, 100, 75, 0, 103, 0, 0, 201, 211,
00620 212, 0, 0, 244, 0, 71, 214, 0, 0, 141,
00621 -2, 0, 0, 222, 0, 0, 0, 0, 0, 0,
00622 0, 0, 0, 0, 0, 163, 164, 165, 166, 167,
00623 168, 237, 0, 144, 153, 159, 0, 0, 0, 120,
00624 -2, 272, 0, 0, 278, 279, 280, 193, 194, 195,
00625 196, 198, 271, 0, 255, 0, 254, 258, 0, 0,
00626 0, 0, 144, 0, 0, 284, 285, 23, 0, 25,
00627 27, 16, 111, 31, 0, 50, 0, 0, 51, 0,
00628 92, 94, 96, 0, 98, 176, 177, 0, 72, 82,
00629 0, 90, 0, 0, 0, 129, 131, 133, 136, 137,
00630 48, 0, 0, 200, 0, 0, 0, 68, 0, 171,
00631 174, 0, 215, 0, 235, 149, 150, 151, 152, -2,
00632 155, 156, 157, 158, 160, 145, 0, 209, 0, 0,
00633 231, 274, 275, 190, 287, 0, -2, 294, -2, 296,
00634 -2, 298, -2, 0, 0, 0, 24, 0, 0, 67,
00635 33, 112, 0, 114, 116, 119, 118, 93, 0, 97,
00636 84, 91, 110, 0, 125, 0, 0, 0, 104, 105,
00637 0, 210, 240, 0, 244, 172, 174, 0, 143, 0,
00638 144, 0, 121, 0, 0, 169, -2, 0, 0, 0,
00639 26, 28, 49, 115, 0, 95, 96, 0, 0, 130,
00640 132, 138, 0, 0, 206, 69, 173, 0, 185, 229,
00641 230, 289, 301, 302, 303, 117, 119, 88, 108, 213,
00642 241, 0, 0, 219
00643 };
00644 short yytok1[] =
00645 {
00646 1, 4, 5, 6, 7, 8, 9, 10, 11, 12,
00647 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
00648 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
00649 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
00650 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
00651 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
00652 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
00653 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
00654 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
00655 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
00656 103
00657 };
00658 short yytok2[] =
00659 {
00660 2, 3
00661 };
00662 long yytok3[] =
00663 {
00664 0
00665 };
00666 #define YYFLAG -1000
00667 #define YYERROR goto yyerrlab
00668 #define YYACCEPT return(0)
00669 #define YYABORT return(1)
00670 #define yyclearin yychar = -1
00671 #define yyerrok yyerrflag = 0
00672
00673 #ifdef yydebug
00674 #include "y.debug"
00675 #else
00676 #define yydebug 0
00677 char* yytoknames[1];
00678 char* yystates[1];
00679 #endif
00680
00681
00682
00683 int yynerrs = 0;
00684 int yyerrflag = 0;
00685
00686 extern int fprint(int, char*, ...);
00687 extern int sprint(char*, char*, ...);
00688
00689 char*
00690 yytokname(int yyc)
00691 {
00692 static char x[10];
00693
00694 if(yyc > 0 && yyc <= sizeof(yytoknames)/sizeof(yytoknames[0]))
00695 if(yytoknames[yyc-1])
00696 return yytoknames[yyc-1];
00697 sprintf(x, "<%d>", yyc);
00698 return x;
00699 }
00700
00701 char*
00702 yystatname(int yys)
00703 {
00704 static char x[10];
00705
00706 if(yys >= 0 && yys < sizeof(yystates)/sizeof(yystates[0]))
00707 if(yystates[yys])
00708 return yystates[yys];
00709 sprintf(x, "<%d>\n", yys);
00710 return x;
00711 }
00712
00713 long
00714 yylex1(void)
00715 {
00716 long yychar;
00717 long *t3p;
00718 int c;
00719
00720 yychar = yylex();
00721 if(yychar <= 0) {
00722 c = yytok1[0];
00723 goto out;
00724 }
00725 if(yychar < sizeof(yytok1)/sizeof(yytok1[0])) {
00726 c = yytok1[yychar];
00727 goto out;
00728 }
00729 if(yychar >= YYPRIVATE)
00730 if(yychar < YYPRIVATE+sizeof(yytok2)/sizeof(yytok2[0])) {
00731 c = yytok2[yychar-YYPRIVATE];
00732 goto out;
00733 }
00734 for(t3p=yytok3;; t3p+=2) {
00735 c = t3p[0];
00736 if(c == yychar) {
00737 c = t3p[1];
00738 goto out;
00739 }
00740 if(c == 0)
00741 break;
00742 }
00743 c = 0;
00744
00745 out:
00746 if(c == 0)
00747 c = yytok2[1];
00748 if(yydebug >= 3)
00749 printf("lex %.4lX %s\n", yychar, yytokname(c));
00750 return c;
00751 }
00752
00753 int
00754 yyparse(void)
00755 {
00756 struct
00757 {
00758 YYSTYPE yyv;
00759 int yys;
00760 } yys[YYMAXDEPTH], *yyp, *yypt;
00761 short *yyxi;
00762 int yyj, yym, yystate, yyn, yyg;
00763 YYSTYPE save1, save2;
00764 int save3, save4;
00765 long yychar;
00766
00767 save1 = yylval;
00768 save2 = yyval;
00769 save3 = yynerrs;
00770 save4 = yyerrflag;
00771
00772 yystate = 0;
00773 yychar = -1;
00774 yynerrs = 0;
00775 yyerrflag = 0;
00776 yyp = &yys[-1];
00777 goto yystack;
00778
00779 ret0:
00780 yyn = 0;
00781 goto ret;
00782
00783 ret1:
00784 yyn = 1;
00785 goto ret;
00786
00787 ret:
00788 yylval = save1;
00789 yyval = save2;
00790 yynerrs = save3;
00791 yyerrflag = save4;
00792 return yyn;
00793
00794 yystack:
00795
00796 if(yydebug >= 4)
00797 printf("char %s in %s", yytokname(yychar), yystatname(yystate));
00798
00799 yyp++;
00800 if(yyp >= &yys[YYMAXDEPTH]) {
00801 yyerror("yacc stack overflow");
00802 goto ret1;
00803 }
00804 yyp->yys = yystate;
00805 yyp->yyv = yyval;
00806
00807 yynewstate:
00808 yyn = yypact[yystate];
00809 if(yyn <= YYFLAG)
00810 goto yydefault;
00811 if(yychar < 0)
00812 yychar = yylex1();
00813 yyn += yychar;
00814 if(yyn < 0 || yyn >= YYLAST)
00815 goto yydefault;
00816 yyn = yyact[yyn];
00817 if(yychk[yyn] == yychar) {
00818 yychar = -1;
00819 yyval = yylval;
00820 yystate = yyn;
00821 if(yyerrflag > 0)
00822 yyerrflag--;
00823 goto yystack;
00824 }
00825
00826 yydefault:
00827
00828 yyn = yydef[yystate];
00829 if(yyn == -2) {
00830 if(yychar < 0)
00831 yychar = yylex1();
00832
00833
00834 for(yyxi=yyexca;; yyxi+=2)
00835 if(yyxi[0] == -1 && yyxi[1] == yystate)
00836 break;
00837 for(yyxi += 2;; yyxi += 2) {
00838 yyn = yyxi[0];
00839 if(yyn < 0 || yyn == yychar)
00840 break;
00841 }
00842 yyn = yyxi[1];
00843 if(yyn < 0)
00844 goto ret0;
00845 }
00846 if(yyn == 0) {
00847
00848 switch(yyerrflag) {
00849 case 0:
00850 yyerror("syntax error");
00851 if(yydebug >= 1) {
00852 printf("%s", yystatname(yystate));
00853 printf("saw %s\n", yytokname(yychar));
00854 }
00855 yynerrs++;
00856
00857 case 1:
00858 case 2:
00859 yyerrflag = 3;
00860
00861
00862 while(yyp >= yys) {
00863 yyn = yypact[yyp->yys] + YYERRCODE;
00864 if(yyn >= 0 && yyn < YYLAST) {
00865 yystate = yyact[yyn];
00866 if(yychk[yystate] == YYERRCODE)
00867 goto yystack;
00868 }
00869
00870
00871 if(yydebug >= 2)
00872 printf("error recovery pops state %d, uncovers %d\n",
00873 yyp->yys, (yyp-1)->yys );
00874 yyp--;
00875 }
00876
00877 goto ret1;
00878
00879 case 3:
00880 if(yydebug >= YYEOFCODE)
00881 printf("error recovery discards %s\n", yytokname(yychar));
00882 if(yychar == YYEOFCODE)
00883 goto ret1;
00884 yychar = -1;
00885 goto yynewstate;
00886 }
00887 }
00888
00889
00890 if(yydebug >= 2)
00891 printf("reduce %d in:\n\t%s", yyn, yystatname(yystate));
00892
00893 yypt = yyp;
00894 yyp -= yyr2[yyn];
00895 yyval = (yyp+1)->yyv;
00896 yym = yyn;
00897
00898
00899 yyn = yyr1[yyn];
00900 yyg = yypgo[yyn];
00901 yyj = yyg + yyp->yys + 1;
00902
00903 if(yyj >= YYLAST || yychk[yystate=yyact[yyj]] != -yyn)
00904 yystate = yyact[yyg];
00905 switch(yym) {
00906
00907 case 3:
00908
00909 {
00910
00911
00912 lastwasbranch = NO; } break;
00913 case 5:
00914
00915 {
00916 if (parstate == INDATA && laststfcn != thisstno)
00917 parstate = INEXEC;
00918 thisstno++;
00919 if(yypt[-1].yyv.labval && (yypt[-1].yyv.labval->labelno==dorange))
00920 enddo(yypt[-1].yyv.labval->labelno);
00921 if(lastwasbranch && thislabel==NULL)
00922 warn("statement cannot be reached");
00923 lastwasbranch = thiswasbranch;
00924 thiswasbranch = NO;
00925 if(yypt[-1].yyv.labval)
00926 {
00927 if(yypt[-1].yyv.labval->labtype == LABFORMAT)
00928 err("label already that of a format");
00929 else
00930 yypt[-1].yyv.labval->labtype = LABEXEC;
00931 }
00932 freetemps();
00933 } break;
00934 case 6:
00935
00936 { if (can_include)
00937 doinclude( yypt[-0].yyv.charpval );
00938 else {
00939 fprintf(diagfile, "Cannot open file %s\n", yypt[-0].yyv.charpval);
00940 done(1);
00941 }
00942 } break;
00943 case 7:
00944
00945 { if (yypt[-2].yyv.labval)
00946 lastwasbranch = NO;
00947 endcheck();
00948 endproc();
00949 } break;
00950 case 8:
00951
00952 { unclassifiable();
00953
00954
00955
00956 flline(); } break;
00957 case 9:
00958
00959 { flline(); needkwd = NO; inioctl = NO;
00960 yyerrok; yyclearin; } break;
00961 case 10:
00962
00963 {
00964 if(yystno != 0)
00965 {
00966 yyval.labval = thislabel = mklabel(yystno);
00967 if( ! headerdone ) {
00968 if (procclass == CLUNKNOWN)
00969 procclass = CLMAIN;
00970 puthead(CNULL, procclass);
00971 }
00972 if(thislabel->labdefined)
00973 execerr("label %s already defined",
00974 convic(thislabel->stateno) );
00975 else {
00976 if(thislabel->blklevel!=0 && (thislabel->blklevel)<(unsigned int)(blklevel)
00977 && thislabel->labtype!=LABFORMAT)
00978 warn1("there is a branch to label %s from outside block",
00979 convic( (ftnint) (thislabel->stateno) ) );
00980 thislabel->blklevel = blklevel;
00981 thislabel->labdefined = YES;
00982 if(thislabel->labtype != LABFORMAT)
00983 p1_label((long)(thislabel - labeltab));
00984 }
00985 }
00986 else yyval.labval = thislabel = NULL;
00987 } break;
00988 case 11:
00989
00990 {startproc(yypt[-0].yyv.extval, CLMAIN); } break;
00991 case 12:
00992
00993 { warn("ignoring arguments to main program");
00994
00995 startproc(yypt[-1].yyv.extval, CLMAIN); } break;
00996 case 13:
00997
00998 { if(yypt[-0].yyv.extval) NO66("named BLOCKDATA");
00999 startproc(yypt[-0].yyv.extval, CLBLOCK); } break;
01000 case 14:
01001
01002 { entrypt(CLPROC, TYSUBR, (ftnint) 0, yypt[-1].yyv.extval, yypt[-0].yyv.chval); } break;
01003 case 15:
01004
01005 { entrypt(CLPROC, TYUNKNOWN, (ftnint) 0, yypt[-1].yyv.extval, yypt[-0].yyv.chval); } break;
01006 case 16:
01007
01008 { entrypt(CLPROC, yypt[-4].yyv.ival, varleng, yypt[-1].yyv.extval, yypt[-0].yyv.chval); } break;
01009 case 17:
01010
01011 { if(parstate==OUTSIDE || procclass==CLMAIN
01012 || procclass==CLBLOCK)
01013 execerr("misplaced entry statement", CNULL);
01014 entrypt(CLENTRY, 0, (ftnint) 0, yypt[-1].yyv.extval, yypt[-0].yyv.chval);
01015 } break;
01016 case 18:
01017
01018 { newproc(); } break;
01019 case 19:
01020
01021 { yyval.extval = newentry(yypt[-0].yyv.namval, 1); } break;
01022 case 20:
01023
01024 { yyval.namval = mkname(token); } break;
01025 case 21:
01026
01027 { yyval.extval = NULL; } break;
01028 case 29:
01029
01030 { yyval.chval = 0; } break;
01031 case 30:
01032
01033 { NO66(" () argument list");
01034 yyval.chval = 0; } break;
01035 case 31:
01036
01037 {yyval.chval = yypt[-1].yyv.chval; } break;
01038 case 32:
01039
01040 { yyval.chval = (yypt[-0].yyv.namval ? mkchain((char *)yypt[-0].yyv.namval,CHNULL) : CHNULL ); } break;
01041 case 33:
01042
01043 { if(yypt[-0].yyv.namval) yypt[-2].yyv.chval = yyval.chval = mkchain((char *)yypt[-0].yyv.namval, yypt[-2].yyv.chval); } break;
01044 case 34:
01045
01046 { if(yypt[-0].yyv.namval->vstg!=STGUNKNOWN && yypt[-0].yyv.namval->vstg!=STGARG)
01047 dclerr("name declared as argument after use", yypt[-0].yyv.namval);
01048 yypt[-0].yyv.namval->vstg = STGARG;
01049 } break;
01050 case 35:
01051
01052 { NO66("altenate return argument");
01053
01054
01055
01056
01057
01058
01059
01060
01061
01062 yyval.namval = 0; substars = YES; } break;
01063 case 36:
01064
01065 {
01066 char *s;
01067 s = copyn(toklen+1, token);
01068 s[toklen] = '\0';
01069 yyval.charpval = s;
01070 } break;
01071 case 45:
01072
01073 { NO66("SAVE statement");
01074 saveall = YES; } break;
01075 case 46:
01076
01077 { NO66("SAVE statement"); } break;
01078 case 47:
01079
01080 { fmtstmt(thislabel); setfmt(thislabel); } break;
01081 case 48:
01082
01083 { NO66("PARAMETER statement"); } break;
01084 case 49:
01085
01086 { settype(yypt[-4].yyv.namval, yypt[-6].yyv.ival, yypt[-0].yyv.lval);
01087 if(ndim>0) setbound(yypt[-4].yyv.namval,ndim,dims);
01088 } break;
01089 case 50:
01090
01091 { settype(yypt[-2].yyv.namval, yypt[-4].yyv.ival, yypt[-0].yyv.lval);
01092 if(ndim>0) setbound(yypt[-2].yyv.namval,ndim,dims);
01093 } break;
01094 case 51:
01095
01096 { if (new_dcl == 2) {
01097 err("attempt to give DATA in type-declaration");
01098 new_dcl = 1;
01099 }
01100 } break;
01101 case 52:
01102
01103 { new_dcl = 2; } break;
01104 case 53:
01105
01106 { varleng = yypt[-0].yyv.lval; } break;
01107 case 54:
01108
01109 { varleng = (yypt[-0].yyv.ival<0 || ONEOF(yypt[-0].yyv.ival,M(TYLOGICAL)|M(TYLONG))
01110 ? 0 : typesize[yypt[-0].yyv.ival]);
01111 vartype = yypt[-0].yyv.ival; } break;
01112 case 55:
01113
01114 { yyval.ival = TYLONG; } break;
01115 case 56:
01116
01117 { yyval.ival = tyreal; } break;
01118 case 57:
01119
01120 { ++complex_seen; yyval.ival = tycomplex; } break;
01121 case 58:
01122
01123 { yyval.ival = TYDREAL; } break;
01124 case 59:
01125
01126 { ++dcomplex_seen; NOEXT("DOUBLE COMPLEX statement"); yyval.ival = TYDCOMPLEX; } break;
01127 case 60:
01128
01129 { yyval.ival = TYLOGICAL; } break;
01130 case 61:
01131
01132 { NO66("CHARACTER statement"); yyval.ival = TYCHAR; } break;
01133 case 62:
01134
01135 { yyval.ival = TYUNKNOWN; } break;
01136 case 63:
01137
01138 { yyval.ival = TYUNKNOWN; } break;
01139 case 64:
01140
01141 { NOEXT("AUTOMATIC statement"); yyval.ival = - STGAUTO; } break;
01142 case 65:
01143
01144 { NOEXT("STATIC statement"); yyval.ival = - STGBSS; } break;
01145 case 66:
01146
01147 { yyval.ival = TYINT1; } break;
01148 case 67:
01149
01150 { yyval.lval = varleng; } break;
01151 case 68:
01152
01153 {
01154 expptr p;
01155 p = yypt[-1].yyv.expval;
01156 NO66("length specification *n");
01157 if( ! ISICON(p) || p->constblock.Const.ci <= 0 )
01158 {
01159 yyval.lval = 0;
01160 dclerr("length must be a positive integer constant",
01161 NPNULL);
01162 }
01163 else {
01164 if (vartype == TYCHAR)
01165 yyval.lval = p->constblock.Const.ci;
01166 else switch((int)p->constblock.Const.ci) {
01167 case 1: yyval.lval = 1; break;
01168 case 2: yyval.lval = typesize[TYSHORT]; break;
01169 case 4: yyval.lval = typesize[TYLONG]; break;
01170 case 8: yyval.lval = typesize[TYDREAL]; break;
01171 case 16: yyval.lval = typesize[TYDCOMPLEX]; break;
01172 default:
01173 dclerr("invalid length",NPNULL);
01174 yyval.lval = varleng;
01175 }
01176 }
01177 } break;
01178 case 69:
01179
01180 { NO66("length specification *(*)"); yyval.lval = -1; } break;
01181 case 70:
01182
01183 { incomm( yyval.extval = comblock("") , yypt[-0].yyv.namval ); } break;
01184 case 71:
01185
01186 { yyval.extval = yypt[-1].yyv.extval; incomm(yypt[-1].yyv.extval, yypt[-0].yyv.namval); } break;
01187 case 72:
01188
01189 { yyval.extval = yypt[-2].yyv.extval; incomm(yypt[-2].yyv.extval, yypt[-0].yyv.namval); } break;
01190 case 73:
01191
01192 { incomm(yypt[-2].yyv.extval, yypt[-0].yyv.namval); } break;
01193 case 74:
01194
01195 { yyval.extval = comblock(""); } break;
01196 case 75:
01197
01198 { yyval.extval = comblock(token); } break;
01199 case 76:
01200
01201 { setext(yypt[-0].yyv.namval); } break;
01202 case 77:
01203
01204 { setext(yypt[-0].yyv.namval); } break;
01205 case 78:
01206
01207 { NO66("INTRINSIC statement"); setintr(yypt[-0].yyv.namval); } break;
01208 case 79:
01209
01210 { setintr(yypt[-0].yyv.namval); } break;
01211 case 82:
01212
01213 {
01214 struct Equivblock *p;
01215 if(nequiv >= maxequiv)
01216 many("equivalences", 'q', maxequiv);
01217 p = & eqvclass[nequiv++];
01218 p->eqvinit = NO;
01219 p->eqvbottom = 0;
01220 p->eqvtop = 0;
01221 p->equivs = yypt[-1].yyv.eqvval;
01222 } break;
01223 case 83:
01224
01225 { yyval.eqvval=ALLOC(Eqvchain);
01226 yyval.eqvval->eqvitem.eqvlhs = primchk(yypt[-0].yyv.expval);
01227 } break;
01228 case 84:
01229
01230 { yyval.eqvval=ALLOC(Eqvchain);
01231 yyval.eqvval->eqvitem.eqvlhs = primchk(yypt[-0].yyv.expval);
01232 yyval.eqvval->eqvnextp = yypt[-2].yyv.eqvval;
01233 } break;
01234 case 87:
01235
01236 { if(parstate == OUTSIDE)
01237 {
01238 newproc();
01239 startproc(ESNULL, CLMAIN);
01240 }
01241 if(parstate < INDATA)
01242 {
01243 enddcl();
01244 parstate = INDATA;
01245 datagripe = 1;
01246 }
01247 } break;
01248 case 88:
01249
01250 { ftnint junk;
01251 if(nextdata(&junk) != NULL)
01252 err("too few initializers");
01253 frdata(yypt[-4].yyv.chval);
01254 frrpl();
01255 } break;
01256 case 89:
01257
01258 { frchain(&datastack); curdtp = 0; } break;
01259 case 90:
01260
01261 { pop_datastack(); } break;
01262 case 91:
01263
01264 { toomanyinit = NO; } break;
01265 case 94:
01266
01267 { dataval(ENULL, yypt[-0].yyv.expval); } break;
01268 case 95:
01269
01270 { dataval(yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
01271 case 97:
01272
01273 { if( yypt[-1].yyv.ival==OPMINUS && ISCONST(yypt[-0].yyv.expval) )
01274 consnegop((Constp)yypt[-0].yyv.expval);
01275 yyval.expval = yypt[-0].yyv.expval;
01276 } break;
01277 case 101:
01278
01279 { int k;
01280 yypt[-0].yyv.namval->vsave = YES;
01281 k = yypt[-0].yyv.namval->vstg;
01282 if( ! ONEOF(k, M(STGUNKNOWN)|M(STGBSS)|M(STGINIT)) )
01283 dclerr("can only save static variables", yypt[-0].yyv.namval);
01284 } break;
01285 case 105:
01286
01287 { if(yypt[-2].yyv.namval->vclass == CLUNKNOWN)
01288 make_param((struct Paramblock *)yypt[-2].yyv.namval, yypt[-0].yyv.expval);
01289 else dclerr("cannot make into parameter", yypt[-2].yyv.namval);
01290 } break;
01291 case 106:
01292
01293 { if(ndim>0) setbound(yypt[-1].yyv.namval, ndim, dims); } break;
01294 case 107:
01295
01296 { Namep np;
01297 struct Primblock *pp = (struct Primblock *)yypt[-0].yyv.expval;
01298 int tt = yypt[-0].yyv.expval->tag;
01299 if (tt != TPRIM) {
01300 if (tt == TCONST)
01301 err("parameter in data statement");
01302 else
01303 erri("tag %d in data statement",tt);
01304 yyval.chval = 0;
01305 err_lineno = lineno;
01306 break;
01307 }
01308 np = pp -> namep;
01309 vardcl(np);
01310 if ((pp->fcharp || pp->lcharp)
01311 && (np->vtype != TYCHAR || np->vdim && !pp->argsp))
01312 sserr(np);
01313 if(np->vstg == STGCOMMON)
01314 extsymtab[np->vardesc.varno].extinit = YES;
01315 else if(np->vstg==STGEQUIV)
01316 eqvclass[np->vardesc.varno].eqvinit = YES;
01317 else if(np->vstg!=STGINIT && np->vstg!=STGBSS) {
01318 errstr(np->vstg == STGARG
01319 ? "Dummy argument \"%.60s\" in data statement."
01320 : "Cannot give data to \"%.75s\"",
01321 np->fvarname);
01322 yyval.chval = 0;
01323 err_lineno = lineno;
01324 break;
01325 }
01326 yyval.chval = mkchain((char *)yypt[-0].yyv.expval, CHNULL);
01327 } break;
01328 case 108:
01329
01330 { chainp p; struct Impldoblock *q;
01331 pop_datastack();
01332 q = ALLOC(Impldoblock);
01333 q->tag = TIMPLDO;
01334 (q->varnp = (Namep) (yypt[-1].yyv.chval->datap))->vimpldovar = 1;
01335 p = yypt[-1].yyv.chval->nextp;
01336 if(p) { q->implb = (expptr)(p->datap); p = p->nextp; }
01337 if(p) { q->impub = (expptr)(p->datap); p = p->nextp; }
01338 if(p) { q->impstep = (expptr)(p->datap); }
01339 frchain( & (yypt[-1].yyv.chval) );
01340 yyval.chval = mkchain((char *)q, CHNULL);
01341 q->datalist = hookup(yypt[-3].yyv.chval, yyval.chval);
01342 } break;
01343 case 109:
01344
01345 { if (!datastack)
01346 curdtp = 0;
01347 datastack = mkchain((char *)curdtp, datastack);
01348 curdtp = yypt[-0].yyv.chval; curdtelt = 0;
01349 } break;
01350 case 110:
01351
01352 { yyval.chval = hookup(yypt[-2].yyv.chval, yypt[-0].yyv.chval); } break;
01353 case 111:
01354
01355 { ndim = 0; } break;
01356 case 113:
01357
01358 { ndim = 0; } break;
01359 case 116:
01360
01361 {
01362 if(ndim == maxdim)
01363 err("too many dimensions");
01364 else if(ndim < maxdim)
01365 { dims[ndim].lb = 0;
01366 dims[ndim].ub = yypt[-0].yyv.expval;
01367 }
01368 ++ndim;
01369 } break;
01370 case 117:
01371
01372 {
01373 if(ndim == maxdim)
01374 err("too many dimensions");
01375 else if(ndim < maxdim)
01376 { dims[ndim].lb = yypt[-2].yyv.expval;
01377 dims[ndim].ub = yypt[-0].yyv.expval;
01378 }
01379 ++ndim;
01380 } break;
01381 case 118:
01382
01383 { yyval.expval = 0; } break;
01384 case 120:
01385
01386 { nstars = 1; labarray[0] = yypt[-0].yyv.labval; } break;
01387 case 121:
01388
01389 { if(nstars < maxlablist) labarray[nstars++] = yypt[-0].yyv.labval; } break;
01390 case 122:
01391
01392 { yyval.labval = execlab( convci(toklen, token) ); } break;
01393 case 123:
01394
01395 { NO66("IMPLICIT statement"); } break;
01396 case 126:
01397
01398 { if (vartype != TYUNKNOWN)
01399 dclerr("-- expected letter range",NPNULL);
01400 setimpl(vartype, varleng, 'a', 'z'); } break;
01401 case 127:
01402
01403 { needkwd = 1; } break;
01404 case 131:
01405
01406 { setimpl(vartype, varleng, yypt[-0].yyv.ival, yypt[-0].yyv.ival); } break;
01407 case 132:
01408
01409 { setimpl(vartype, varleng, yypt[-2].yyv.ival, yypt[-0].yyv.ival); } break;
01410 case 133:
01411
01412 { if(toklen!=1 || token[0]<'a' || token[0]>'z')
01413 {
01414 dclerr("implicit item must be single letter", NPNULL);
01415 yyval.ival = 0;
01416 }
01417 else yyval.ival = token[0];
01418 } break;
01419 case 136:
01420
01421 {
01422 if(yypt[-2].yyv.namval->vclass == CLUNKNOWN)
01423 {
01424 yypt[-2].yyv.namval->vclass = CLNAMELIST;
01425 yypt[-2].yyv.namval->vtype = TYINT;
01426 yypt[-2].yyv.namval->vstg = STGBSS;
01427 yypt[-2].yyv.namval->varxptr.namelist = yypt[-0].yyv.chval;
01428 yypt[-2].yyv.namval->vardesc.varno = ++lastvarno;
01429 }
01430 else dclerr("cannot be a namelist name", yypt[-2].yyv.namval);
01431 } break;
01432 case 137:
01433
01434 { yyval.chval = mkchain((char *)yypt[-0].yyv.namval, CHNULL); } break;
01435 case 138:
01436
01437 { yyval.chval = hookup(yypt[-2].yyv.chval, mkchain((char *)yypt[-0].yyv.namval, CHNULL)); } break;
01438 case 139:
01439
01440 { switch(parstate)
01441 {
01442 case OUTSIDE: newproc();
01443 startproc(ESNULL, CLMAIN);
01444 case INSIDE: parstate = INDCL;
01445 case INDCL: break;
01446
01447 case INDATA:
01448 if (datagripe) {
01449 errstr(
01450 "Statement order error: declaration after DATA",
01451 CNULL);
01452 datagripe = 0;
01453 }
01454 break;
01455
01456 default:
01457 dclerr("declaration among executables", NPNULL);
01458 }
01459 } break;
01460 case 140:
01461
01462 { yyval.chval = 0; } break;
01463 case 141:
01464
01465 { yyval.chval = revchain(yypt[-0].yyv.chval); } break;
01466 case 142:
01467
01468 { yyval.chval = mkchain((char *)yypt[-0].yyv.expval, CHNULL); } break;
01469 case 143:
01470
01471 { yyval.chval = mkchain((char *)yypt[-0].yyv.expval, yypt[-2].yyv.chval); } break;
01472 case 145:
01473
01474 { yyval.expval = yypt[-1].yyv.expval; if (yyval.expval->tag == TPRIM)
01475 paren_used(&yyval.expval->primblock); } break;
01476 case 149:
01477
01478 { yyval.expval = mkexpr(yypt[-1].yyv.ival, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
01479 case 150:
01480
01481 { yyval.expval = mkexpr(OPSTAR, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
01482 case 151:
01483
01484 { yyval.expval = mkexpr(OPSLASH, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
01485 case 152:
01486
01487 { yyval.expval = mkexpr(OPPOWER, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
01488 case 153:
01489
01490 { if(yypt[-1].yyv.ival == OPMINUS)
01491 yyval.expval = mkexpr(OPNEG, yypt[-0].yyv.expval, ENULL);
01492 else {
01493 yyval.expval = yypt[-0].yyv.expval;
01494 if (yyval.expval->tag == TPRIM)
01495 paren_used(&yyval.expval->primblock);
01496 }
01497 } break;
01498 case 154:
01499
01500 { yyval.expval = mkexpr(yypt[-1].yyv.ival, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
01501 case 155:
01502
01503 { NO66(".EQV. operator");
01504 yyval.expval = mkexpr(OPEQV, yypt[-2].yyv.expval,yypt[-0].yyv.expval); } break;
01505 case 156:
01506
01507 { NO66(".NEQV. operator");
01508 yyval.expval = mkexpr(OPNEQV, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
01509 case 157:
01510
01511 { yyval.expval = mkexpr(OPOR, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
01512 case 158:
01513
01514 { yyval.expval = mkexpr(OPAND, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
01515 case 159:
01516
01517 { yyval.expval = mkexpr(OPNOT, yypt[-0].yyv.expval, ENULL); } break;
01518 case 160:
01519
01520 { NO66("concatenation operator //");
01521 yyval.expval = mkexpr(OPCONCAT, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
01522 case 161:
01523
01524 { yyval.ival = OPPLUS; } break;
01525 case 162:
01526
01527 { yyval.ival = OPMINUS; } break;
01528 case 163:
01529
01530 { yyval.ival = OPEQ; } break;
01531 case 164:
01532
01533 { yyval.ival = OPGT; } break;
01534 case 165:
01535
01536 { yyval.ival = OPLT; } break;
01537 case 166:
01538
01539 { yyval.ival = OPGE; } break;
01540 case 167:
01541
01542 { yyval.ival = OPLE; } break;
01543 case 168:
01544
01545 { yyval.ival = OPNE; } break;
01546 case 169:
01547
01548 { yyval.expval = mkprim(yypt[-0].yyv.namval, LBNULL, CHNULL); } break;
01549 case 170:
01550
01551 { NO66("substring operator :");
01552 yyval.expval = mkprim(yypt[-1].yyv.namval, LBNULL, yypt[-0].yyv.chval); } break;
01553 case 171:
01554
01555 { yyval.expval = mkprim(yypt[-3].yyv.namval, mklist(yypt[-1].yyv.chval), CHNULL); } break;
01556 case 172:
01557
01558 { NO66("substring operator :");
01559 yyval.expval = mkprim(yypt[-4].yyv.namval, mklist(yypt[-2].yyv.chval), yypt[-0].yyv.chval); } break;
01560 case 173:
01561
01562 { yyval.chval = mkchain((char *)yypt[-3].yyv.expval, mkchain((char *)yypt[-1].yyv.expval,CHNULL)); } break;
01563 case 174:
01564
01565 { yyval.expval = 0; } break;
01566 case 176:
01567
01568 { if(yypt[-0].yyv.namval->vclass == CLPARAM)
01569 yyval.expval = (expptr) cpexpr(
01570 ( (struct Paramblock *) (yypt[-0].yyv.namval) ) -> paramval);
01571 } break;
01572 case 178:
01573
01574 { yyval.expval = mklogcon(1); } break;
01575 case 179:
01576
01577 { yyval.expval = mklogcon(0); } break;
01578 case 180:
01579
01580 { yyval.expval = mkstrcon(toklen, token); } break;
01581 case 181:
01582
01583 { yyval.expval = mkintqcon(toklen, token); } break;
01584 case 182:
01585
01586 { yyval.expval = mkrealcon(tyreal, token); } break;
01587 case 183:
01588
01589 { yyval.expval = mkrealcon(TYDREAL, token); } break;
01590 case 185:
01591
01592 { yyval.expval = mkcxcon(yypt[-3].yyv.expval,yypt[-1].yyv.expval); } break;
01593 case 186:
01594
01595 { NOEXT("hex constant");
01596 yyval.expval = mkbitcon(4, toklen, token); } break;
01597 case 187:
01598
01599 { NOEXT("octal constant");
01600 yyval.expval = mkbitcon(3, toklen, token); } break;
01601 case 188:
01602
01603 { NOEXT("binary constant");
01604 yyval.expval = mkbitcon(1, toklen, token); } break;
01605 case 190:
01606
01607 { yyval.expval = yypt[-1].yyv.expval; } break;
01608 case 193:
01609
01610 { yyval.expval = mkexpr(yypt[-1].yyv.ival, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
01611 case 194:
01612
01613 { yyval.expval = mkexpr(OPSTAR, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
01614 case 195:
01615
01616 { yyval.expval = mkexpr(OPSLASH, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
01617 case 196:
01618
01619 { yyval.expval = mkexpr(OPPOWER, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
01620 case 197:
01621
01622 { if(yypt[-1].yyv.ival == OPMINUS)
01623 yyval.expval = mkexpr(OPNEG, yypt[-0].yyv.expval, ENULL);
01624 else yyval.expval = yypt[-0].yyv.expval;
01625 } break;
01626 case 198:
01627
01628 { NO66("concatenation operator //");
01629 yyval.expval = mkexpr(OPCONCAT, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
01630 case 200:
01631
01632 {
01633 if(yypt[-2].yyv.labval->labdefined)
01634 execerr("no backward DO loops", CNULL);
01635 yypt[-2].yyv.labval->blklevel = blklevel+1;
01636 exdo(yypt[-2].yyv.labval->labelno, NPNULL, yypt[-0].yyv.chval);
01637 } break;
01638 case 201:
01639
01640 {
01641 exdo((int)(ctls - ctlstack - 2), NPNULL, yypt[-0].yyv.chval);
01642 NOEXT("DO without label");
01643 } break;
01644 case 202:
01645
01646 { exenddo(NPNULL); } break;
01647 case 203:
01648
01649 { exendif(); thiswasbranch = NO; } break;
01650 case 205:
01651
01652 {westart(1);} break;
01653 case 206:
01654
01655 { exelif(yypt[-2].yyv.expval); lastwasbranch = NO; } break;
01656 case 207:
01657
01658 { exelse(); lastwasbranch = NO; } break;
01659 case 208:
01660
01661 { exendif(); lastwasbranch = NO; } break;
01662 case 209:
01663
01664 { exif(yypt[-1].yyv.expval); } break;
01665 case 210:
01666
01667 { yyval.chval = mkchain((char *)yypt[-2].yyv.namval, yypt[-0].yyv.chval); } break;
01668 case 212:
01669
01670 {westart(0);} break;
01671 case 213:
01672
01673 { yyval.chval = mkchain(CNULL, (chainp)yypt[-1].yyv.expval); } break;
01674 case 214:
01675
01676 { exequals((struct Primblock *)yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
01677 case 215:
01678
01679 { exassign(yypt[-0].yyv.namval, yypt[-2].yyv.labval); } break;
01680 case 218:
01681
01682 { inioctl = NO; } break;
01683 case 219:
01684
01685 { exarif(yypt[-6].yyv.expval, yypt[-4].yyv.labval, yypt[-2].yyv.labval, yypt[-0].yyv.labval); thiswasbranch = YES; } break;
01686 case 220:
01687
01688 { excall(yypt[-0].yyv.namval, LBNULL, 0, labarray); } break;
01689 case 221:
01690
01691 { excall(yypt[-2].yyv.namval, LBNULL, 0, labarray); } break;
01692 case 222:
01693
01694 { if(nstars < maxlablist)
01695 excall(yypt[-3].yyv.namval, mklist(revchain(yypt[-1].yyv.chval)), nstars, labarray);
01696 else
01697 many("alternate returns", 'l', maxlablist);
01698 } break;
01699 case 223:
01700
01701 { exreturn(yypt[-0].yyv.expval); thiswasbranch = YES; } break;
01702 case 224:
01703
01704 { exstop(yypt[-2].yyv.ival, yypt[-0].yyv.expval); thiswasbranch = yypt[-2].yyv.ival; } break;
01705 case 225:
01706
01707 { yyval.labval = mklabel( convci(toklen, token) ); } break;
01708 case 226:
01709
01710 { if(parstate == OUTSIDE)
01711 {
01712 newproc();
01713 startproc(ESNULL, CLMAIN);
01714 }
01715 } break;
01716 case 227:
01717
01718 { exgoto(yypt[-0].yyv.labval); thiswasbranch = YES; } break;
01719 case 228:
01720
01721 { exasgoto(yypt[-0].yyv.namval); thiswasbranch = YES; } break;
01722 case 229:
01723
01724 { exasgoto(yypt[-4].yyv.namval); thiswasbranch = YES; } break;
01725 case 230:
01726
01727 { if(nstars < maxlablist)
01728 putcmgo(putx(fixtype(yypt[-0].yyv.expval)), nstars, labarray);
01729 else
01730 many("labels in computed GOTO list", 'l', maxlablist);
01731 } break;
01732 case 233:
01733
01734 { nstars = 0; yyval.namval = yypt[-0].yyv.namval; } break;
01735 case 234:
01736
01737 { yyval.chval = yypt[-0].yyv.expval ? mkchain((char *)yypt[-0].yyv.expval,CHNULL) : CHNULL; } break;
01738 case 235:
01739
01740 { yyval.chval = yypt[-0].yyv.expval ? mkchain((char *)yypt[-0].yyv.expval, yypt[-2].yyv.chval) : yypt[-2].yyv.chval; } break;
01741 case 237:
01742
01743 { if(nstars < maxlablist) labarray[nstars++] = yypt[-0].yyv.labval; yyval.expval = 0; } break;
01744 case 238:
01745
01746 { yyval.ival = 0; } break;
01747 case 239:
01748
01749 { yyval.ival = 2; } break;
01750 case 240:
01751
01752 { yyval.chval = mkchain((char *)yypt[-0].yyv.expval, CHNULL); } break;
01753 case 241:
01754
01755 { yyval.chval = hookup(yypt[-2].yyv.chval, mkchain((char *)yypt[-0].yyv.expval,CHNULL) ); } break;
01756 case 242:
01757
01758 { if(parstate == OUTSIDE)
01759 {
01760 newproc();
01761 startproc(ESNULL, CLMAIN);
01762 }
01763
01764
01765
01766 if(parstate < INDATA) enddcl();
01767 } break;
01768 case 243:
01769
01770 { intonly = YES; } break;
01771 case 244:
01772
01773 { intonly = NO; } break;
01774 case 245:
01775
01776 { endio(); } break;
01777 case 247:
01778
01779 { ioclause(IOSUNIT, yypt[-0].yyv.expval); endioctl(); } break;
01780 case 248:
01781
01782 { ioclause(IOSUNIT, ENULL); endioctl(); } break;
01783 case 249:
01784
01785 { ioclause(IOSUNIT, IOSTDERR); endioctl(); } break;
01786 case 251:
01787
01788 { doio(CHNULL); } break;
01789 case 252:
01790
01791 { doio(CHNULL); } break;
01792 case 253:
01793
01794 { doio(revchain(yypt[-0].yyv.chval)); } break;
01795 case 254:
01796
01797 { doio(revchain(yypt[-0].yyv.chval)); } break;
01798 case 255:
01799
01800 { doio(revchain(yypt[-0].yyv.chval)); } break;
01801 case 256:
01802
01803 { doio(CHNULL); } break;
01804 case 257:
01805
01806 { doio(revchain(yypt[-0].yyv.chval)); } break;
01807 case 258:
01808
01809 { doio(revchain(yypt[-0].yyv.chval)); } break;
01810 case 259:
01811
01812 { doio(CHNULL); } break;
01813 case 260:
01814
01815 { doio(revchain(yypt[-0].yyv.chval)); } break;
01816 case 262:
01817
01818 { iostmt = IOBACKSPACE; } break;
01819 case 263:
01820
01821 { iostmt = IOREWIND; } break;
01822 case 264:
01823
01824 { iostmt = IOENDFILE; } break;
01825 case 266:
01826
01827 { iostmt = IOINQUIRE; } break;
01828 case 267:
01829
01830 { iostmt = IOOPEN; } break;
01831 case 268:
01832
01833 { iostmt = IOCLOSE; } break;
01834 case 269:
01835
01836 {
01837 ioclause(IOSUNIT, ENULL);
01838 ioclause(IOSFMT, yypt[-0].yyv.expval);
01839 endioctl();
01840 } break;
01841 case 270:
01842
01843 {
01844 ioclause(IOSUNIT, ENULL);
01845 ioclause(IOSFMT, ENULL);
01846 endioctl();
01847 } break;
01848 case 271:
01849
01850 {
01851 ioclause(IOSUNIT, yypt[-1].yyv.expval);
01852 endioctl();
01853 } break;
01854 case 272:
01855
01856 { endioctl(); } break;
01857 case 275:
01858
01859 { ioclause(IOSPOSITIONAL, yypt[-0].yyv.expval); } break;
01860 case 276:
01861
01862 { ioclause(IOSPOSITIONAL, ENULL); } break;
01863 case 277:
01864
01865 { ioclause(IOSPOSITIONAL, IOSTDERR); } break;
01866 case 278:
01867
01868 { ioclause(yypt[-1].yyv.ival, yypt[-0].yyv.expval); } break;
01869 case 279:
01870
01871 { ioclause(yypt[-1].yyv.ival, ENULL); } break;
01872 case 280:
01873
01874 { ioclause(yypt[-1].yyv.ival, IOSTDERR); } break;
01875 case 281:
01876
01877 { yyval.ival = iocname(); } break;
01878 case 282:
01879
01880 { iostmt = IOREAD; } break;
01881 case 283:
01882
01883 { iostmt = IOWRITE; } break;
01884 case 284:
01885
01886 {
01887 iostmt = IOWRITE;
01888 ioclause(IOSUNIT, ENULL);
01889 ioclause(IOSFMT, yypt[-1].yyv.expval);
01890 endioctl();
01891 } break;
01892 case 285:
01893
01894 {
01895 iostmt = IOWRITE;
01896 ioclause(IOSUNIT, ENULL);
01897 ioclause(IOSFMT, ENULL);
01898 endioctl();
01899 } break;
01900 case 286:
01901
01902 { yyval.chval = mkchain((char *)yypt[-0].yyv.tagval, CHNULL); } break;
01903 case 287:
01904
01905 { yyval.chval = mkchain((char *)yypt[-0].yyv.tagval, yypt[-2].yyv.chval); } break;
01906 case 288:
01907
01908 { yyval.tagval = (tagptr) yypt[-0].yyv.expval; } break;
01909 case 289:
01910
01911 { yyval.tagval = (tagptr) mkiodo(yypt[-1].yyv.chval,revchain(yypt[-3].yyv.chval)); } break;
01912 case 290:
01913
01914 { yyval.chval = mkchain((char *)yypt[-0].yyv.expval, CHNULL); } break;
01915 case 291:
01916
01917 { yyval.chval = mkchain((char *)yypt[-0].yyv.tagval, CHNULL); } break;
01918 case 293:
01919
01920 { yyval.chval = mkchain((char *)yypt[-0].yyv.expval, mkchain((char *)yypt[-2].yyv.expval, CHNULL) ); } break;
01921 case 294:
01922
01923 { yyval.chval = mkchain((char *)yypt[-0].yyv.tagval, mkchain((char *)yypt[-2].yyv.expval, CHNULL) ); } break;
01924 case 295:
01925
01926 { yyval.chval = mkchain((char *)yypt[-0].yyv.expval, mkchain((char *)yypt[-2].yyv.tagval, CHNULL) ); } break;
01927 case 296:
01928
01929 { yyval.chval = mkchain((char *)yypt[-0].yyv.tagval, mkchain((char *)yypt[-2].yyv.tagval, CHNULL) ); } break;
01930 case 297:
01931
01932 { yyval.chval = mkchain((char *)yypt[-0].yyv.expval, yypt[-2].yyv.chval); } break;
01933 case 298:
01934
01935 { yyval.chval = mkchain((char *)yypt[-0].yyv.tagval, yypt[-2].yyv.chval); } break;
01936 case 299:
01937
01938 { yyval.tagval = (tagptr) yypt[-0].yyv.expval; } break;
01939 case 300:
01940
01941 { yyval.tagval = (tagptr) yypt[-1].yyv.expval; } break;
01942 case 301:
01943
01944 { yyval.tagval = (tagptr) mkiodo(yypt[-1].yyv.chval, mkchain((char *)yypt[-3].yyv.expval, CHNULL) ); } break;
01945 case 302:
01946
01947 { yyval.tagval = (tagptr) mkiodo(yypt[-1].yyv.chval, mkchain((char *)yypt[-3].yyv.tagval, CHNULL) ); } break;
01948 case 303:
01949
01950 { yyval.tagval = (tagptr) mkiodo(yypt[-1].yyv.chval, revchain(yypt[-3].yyv.chval)); } break;
01951 case 304:
01952
01953 { startioctl(); } break;
01954 }
01955 goto yystack;
01956 }