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