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