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