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