|
|
1.1 ! root 1: #define YYDEBUG ! 2: # define EOS 1 ! 3: # define NEWLINE 2 ! 4: # define LPAR 3 ! 5: # define RPAR 4 ! 6: # define LBRACK 5 ! 7: # define RBRACK 6 ! 8: # define COMMA 7 ! 9: # define COLON 8 ! 10: # define ASGNOP 9 ! 11: # define REPOP 10 ! 12: # define OR 11 ! 13: # define AND 12 ! 14: # define NOT 13 ! 15: # define RELOP 14 ! 16: # define ADDOP 15 ! 17: # define MULTOP 16 ! 18: # define POWER 17 ! 19: # define DOUBLEADDOP 18 ! 20: # define ARROW 19 ! 21: # define QUALOP 20 ! 22: # define NAME 21 ! 23: # define OPTNAME 22 ! 24: # define STRUCTNAME 23 ! 25: # define COMNAME 24 ! 26: # define CONST 25 ! 27: # define COMMON 26 ! 28: # define INTERNAL 27 ! 29: # define EXTERNAL 28 ! 30: # define AUTOMATIC 29 ! 31: # define STATIC 30 ! 32: # define VALUE 31 ! 33: # define PROCEDURE 32 ! 34: # define BLOCKDATA 33 ! 35: # define OPTION 34 ! 36: # define INCLUDE 35 ! 37: # define DEFINE 36 ! 38: # define END 37 ! 39: # define INTEGER 38 ! 40: # define REAL 39 ! 41: # define COMPLEX 40 ! 42: # define LOGICAL 41 ! 43: # define CHARACTER 42 ! 44: # define STRUCT 43 ! 45: # define FIELD 44 ! 46: # define ARRAY 45 ! 47: # define DIMENSION 46 ! 48: # define LONG 47 ! 49: # define SHORT 48 ! 50: # define INITIAL 49 ! 51: # define EQUIVALENCE 50 ! 52: # define IMPLICIT 51 ! 53: # define DEBUG 52 ! 54: # define IF 53 ! 55: # define ELSE 54 ! 56: # define WHILE 55 ! 57: # define UNTIL 56 ! 58: # define REPEAT 57 ! 59: # define DO 58 ! 60: # define FOR 59 ! 61: # define SWITCH 60 ! 62: # define CASE 61 ! 63: # define DEFAULT 62 ! 64: # define GO 63 ! 65: # define GOTO 64 ! 66: # define BREAK 65 ! 67: # define EXIT 66 ! 68: # define NEXT 67 ! 69: # define RETURN 68 ! 70: # define CONTINUE 69 ! 71: # define CALL 70 ! 72: # define DOUBLE 71 ! 73: # define PRECISION 72 ! 74: # define DOUBLEPRECISION 73 ! 75: # define SIZEOF 74 ! 76: # define LENGTHOF 75 ! 77: # define LETTER 76 ! 78: # define READ 77 ! 79: # define WRITE 78 ! 80: # define READBIN 79 ! 81: # define WRITEBIN 80 ! 82: # define TRUE 81 ! 83: # define FALSE 82 ! 84: # define ESCAPE 83 ! 85: ! 86: # line 85 "gram.in" ! 87: #include "defs" ! 88: ptr bgnexec(), addexec(), bgnproc(), mkvar(), mkcomm(), mkstruct(), mkarrow(); ! 89: ptr mkiost(), mkioitem(), mkiogroup(), mkformat(); ! 90: ptr funcinv(), extrfield(), typexpr(), strucelt(), mkfield(); ! 91: ptr esizeof(), elenof(), mkilab(); ! 92: ptr ifthen(), doloop(); ! 93: struct varblock *subscript(); ! 94: ! 95: # line 95 "gram.in" ! 96: typedef union { int ival; ptr pval; char *cval; } YYSTYPE; ! 97: ! 98: # line 124 "gram.in" ! 99: extern int prevv; ! 100: extern YYSTYPE prevl; ! 101: ptr p; ! 102: ptr procattrs; ! 103: int i,n; ! 104: static int imptype; ! 105: static int ininit =NO; ! 106: ! 107: #define yyclearin yychar = -1 ! 108: #define yyerrok yyerrflag = 0 ! 109: extern int yychar; ! 110: extern short yyerrflag; ! 111: #ifndef YYMAXDEPTH ! 112: #define YYMAXDEPTH 150 ! 113: #endif ! 114: YYSTYPE yylval, yyval; ! 115: # define YYERRCODE 256 ! 116: ! 117: # line 1009 "gram.in" ! 118: ! 119: ! 120: setyydeb() ! 121: { ! 122: #ifdef YYDEBUG ! 123: extern int yydebug; ! 124: yydebug = 1; ! 125: #endif ! 126: } ! 127: short yyexca[] ={ ! 128: -1, 0, ! 129: 0, 1, ! 130: -2, 175, ! 131: -1, 1, ! 132: 0, -1, ! 133: -2, 0, ! 134: -1, 80, ! 135: 9, 152, ! 136: 19, 152, ! 137: 20, 152, ! 138: -2, 178, ! 139: -1, 165, ! 140: 19, 152, ! 141: 20, 152, ! 142: -2, 179, ! 143: -1, 262, ! 144: 6, 191, ! 145: -2, 14, ! 146: -1, 351, ! 147: 14, 0, ! 148: -2, 144, ! 149: }; ! 150: # define YYNPROD 284 ! 151: # define YYLAST 1451 ! 152: short yyact[]={ ! 153: ! 154: 225, 247, 408, 431, 412, 124, 409, 337, 223, 197, ! 155: 157, 20, 258, 224, 185, 156, 19, 6, 140, 3, ! 156: 20, 155, 61, 139, 286, 19, 59, 314, 5, 131, ! 157: 297, 152, 212, 44, 182, 198, 37, 34, 36, 32, ! 158: 33, 35, 21, 22, 16, 191, 14, 135, 38, 39, ! 159: 40, 41, 26, 45, 27, 30, 31, 46, 47, 10, ! 160: 12, 11, 72, 227, 121, 77, 64, 17, 20, 446, ! 161: 66, 60, 413, 19, 179, 189, 425, 58, 195, 196, ! 162: 338, 42, 149, 43, 141, 65, 80, 73, 109, 129, ! 163: 78, 87, 71, 199, 400, 399, 170, 200, 172, 178, ! 164: 167, 175, 176, 177, 154, 211, 233, 305, 120, 315, ! 165: 203, 325, 218, 243, 326, 137, 62, 220, 218, 68, ! 166: 447, 148, 147, 356, 74, 209, 222, 242, 199, 123, ! 167: 204, 256, 200, 201, 202, 213, 229, 216, 215, 214, ! 168: 217, 213, 68, 216, 215, 214, 217, 134, 62, 73, ! 169: 169, 245, 165, 20, 164, 80, 166, 109, 19, 78, ! 170: 87, 278, 76, 132, 260, 133, 273, 161, 201, 202, ! 171: 144, 148, 147, 163, 382, 267, 250, 263, 160, 265, ! 172: 271, 272, 273, 148, 147, 259, 433, 280, 394, 282, ! 173: 148, 147, 228, 268, 269, 270, 239, 279, 69, 287, ! 174: 272, 273, 289, 235, 250, 127, 295, 296, 298, 298, ! 175: 58, 303, 240, 291, 292, 238, 262, 146, 128, 18, ! 176: 65, 252, 251, 344, 343, 449, 307, 148, 147, 55, ! 177: 310, 460, 429, 417, 253, 254, 434, 264, 283, 300, ! 178: 293, 20, 329, 20, 304, 173, 19, 20, 19, 319, ! 179: 322, 321, 19, 171, 372, 428, 316, 330, 429, 317, ! 180: 327, 323, 281, 141, 392, 377, 7, 393, 378, 367, ! 181: 342, 248, 348, 349, 350, 351, 352, 353, 354, 355, ! 182: 335, 364, 143, 154, 365, 357, 360, 234, 339, 363, ! 183: 462, 340, 333, 463, 287, 334, 277, 275, 276, 159, ! 184: 274, 271, 272, 273, 274, 271, 272, 273, 373, 376, ! 185: 255, 158, 375, 159, 380, 145, 302, 371, 366, 358, ! 186: 361, 276, 301, 274, 271, 272, 273, 379, 418, 389, ! 187: 423, 236, 396, 390, 420, 391, 237, 277, 275, 276, ! 188: 414, 274, 271, 272, 273, 398, 134, 416, 331, 397, ! 189: 415, 332, 451, 395, 277, 275, 276, 381, 274, 271, ! 190: 272, 273, 369, 259, 312, 277, 275, 276, 410, 274, ! 191: 271, 272, 273, 279, 445, 407, 279, 436, 465, 427, ! 192: 250, 150, 419, 250, 277, 275, 276, 421, 274, 271, ! 193: 272, 273, 125, 406, 20, 125, 403, 306, 285, 19, ! 194: 284, 424, 422, 308, 74, 122, 277, 275, 276, 249, ! 195: 274, 271, 272, 273, 219, 210, 207, 206, 435, 48, ! 196: 205, 439, 437, 50, 438, 52, 53, 162, 442, 126, ! 197: 410, 125, 441, 440, 444, 388, 443, 410, 448, 450, ! 198: 387, 386, 385, 383, 347, 453, 456, 345, 457, 458, ! 199: 150, 49, 414, 459, 51, 411, 142, 9, 461, 454, ! 200: 188, 370, 186, 208, 464, 187, 107, 192, 68, 99, ! 201: 44, 97, 180, 37, 34, 36, 32, 33, 35, 96, ! 202: 426, 95, 266, 174, 88, 38, 39, 40, 41, 26, ! 203: 45, 27, 30, 31, 46, 47, 455, 86, 84, 341, ! 204: 168, 452, 277, 275, 276, 116, 274, 271, 272, 273, ! 205: 277, 275, 276, 261, 274, 271, 272, 273, 42, 82, ! 206: 43, 193, 194, 150, 113, 114, 111, 112, 195, 196, ! 207: 384, 230, 328, 188, 221, 186, 226, 336, 187, 153, ! 208: 192, 68, 241, 44, 70, 180, 37, 34, 36, 32, ! 209: 33, 35, 151, 63, 136, 54, 8, 75, 38, 39, ! 210: 40, 41, 26, 45, 27, 30, 31, 46, 47, 430, ! 211: 13, 277, 275, 276, 404, 274, 271, 272, 273, 232, ! 212: 277, 275, 276, 231, 274, 271, 272, 273, 4, 2, ! 213: 102, 42, 432, 43, 193, 194, 110, 113, 114, 111, ! 214: 112, 195, 196, 150, 181, 29, 23, 288, 25, 294, ! 215: 299, 290, 346, 188, 85, 186, 15, 246, 187, 67, ! 216: 192, 68, 184, 44, 183, 180, 37, 34, 36, 32, ! 217: 33, 35, 28, 56, 309, 24, 318, 138, 38, 39, ! 218: 40, 41, 26, 45, 27, 30, 31, 46, 47, 401, ! 219: 130, 257, 320, 1, 0, 277, 275, 276, 0, 274, ! 220: 271, 272, 273, 0, 0, 0, 0, 0, 0, 0, ! 221: 0, 42, 0, 43, 193, 194, 0, 113, 114, 111, ! 222: 112, 195, 196, 0, 150, 244, 0, 0, 0, 0, ! 223: 0, 0, 0, 0, 188, 0, 186, 0, 0, 187, ! 224: 0, 192, 68, 190, 44, 0, 180, 37, 34, 36, ! 225: 32, 33, 35, 0, 0, 0, 0, 0, 0, 38, ! 226: 39, 40, 41, 26, 45, 27, 30, 31, 46, 47, ! 227: 374, 0, 0, 0, 0, 0, 277, 275, 276, 0, ! 228: 274, 271, 272, 273, 0, 0, 0, 0, 0, 0, ! 229: 0, 0, 42, 0, 43, 193, 194, 150, 113, 114, ! 230: 111, 112, 195, 196, 0, 0, 0, 188, 0, 186, ! 231: 0, 0, 187, 0, 192, 68, 190, 44, 0, 180, ! 232: 37, 34, 36, 32, 33, 35, 0, 0, 0, 0, ! 233: 0, 0, 38, 39, 40, 41, 26, 45, 27, 30, ! 234: 31, 46, 47, 368, 0, 0, 0, 0, 0, 277, ! 235: 275, 276, 0, 274, 271, 272, 273, 0, 0, 0, ! 236: 0, 0, 0, 0, 0, 42, 0, 43, 193, 194, ! 237: 0, 113, 114, 111, 112, 195, 196, 150, 0, 0, ! 238: 0, 0, 0, 0, 0, 0, 0, 188, 0, 186, ! 239: 0, 0, 187, 0, 192, 68, 190, 44, 0, 180, ! 240: 37, 34, 36, 32, 33, 35, 0, 0, 0, 0, ! 241: 0, 0, 38, 39, 40, 41, 362, 45, 27, 30, ! 242: 31, 46, 47, 313, 0, 277, 275, 276, 311, 274, ! 243: 271, 272, 273, 0, 277, 275, 276, 0, 274, 271, ! 244: 272, 273, 0, 0, 0, 42, 0, 43, 193, 194, ! 245: 0, 113, 114, 111, 112, 195, 196, 0, 150, 0, ! 246: 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, ! 247: 186, 0, 0, 187, 0, 192, 68, 190, 44, 0, ! 248: 180, 37, 34, 36, 32, 33, 35, 0, 0, 0, ! 249: 0, 0, 0, 38, 39, 40, 41, 359, 45, 27, ! 250: 30, 31, 46, 47, 0, 0, 0, 0, 0, 0, ! 251: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 252: 0, 0, 0, 0, 0, 0, 42, 0, 43, 193, ! 253: 194, 0, 113, 114, 111, 112, 195, 196, 44, 0, ! 254: 0, 37, 34, 36, 32, 33, 35, 0, 0, 0, ! 255: 190, 14, 0, 38, 39, 40, 41, 26, 45, 27, ! 256: 30, 31, 46, 47, 10, 12, 11, 0, 0, 0, ! 257: 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, ! 258: 57, 0, 0, 0, 0, 0, 42, 0, 43, 0, ! 259: 0, 0, 79, 0, 0, 91, 62, 0, 44, 92, ! 260: 0, 37, 34, 36, 32, 33, 35, 21, 22, 0, ! 261: 0, 0, 0, 38, 39, 40, 41, 26, 45, 27, ! 262: 30, 31, 46, 47, 0, 0, 90, 104, 0, 106, ! 263: 190, 105, 116, 115, 108, 94, 93, 101, 100, 118, ! 264: 119, 117, 98, 103, 81, 0, 42, 0, 43, 0, ! 265: 0, 113, 114, 111, 112, 0, 62, 89, 44, 0, ! 266: 0, 37, 34, 36, 32, 33, 35, 0, 0, 0, ! 267: 0, 0, 0, 38, 39, 40, 41, 26, 45, 27, ! 268: 30, 31, 46, 47, 10, 12, 11, 0, 0, 0, ! 269: 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, ! 270: 37, 34, 36, 32, 33, 35, 42, 0, 43, 0, ! 271: 0, 190, 38, 39, 40, 41, 26, 45, 27, 30, ! 272: 31, 46, 47, 10, 12, 11, 0, 0, 0, 0, ! 273: 0, 0, 0, 0, 0, 0, 0, 150, 405, 0, ! 274: 0, 0, 0, 0, 0, 42, 0, 43, 0, 0, ! 275: 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, ! 276: 37, 34, 36, 32, 33, 35, 0, 0, 0, 0, ! 277: 0, 324, 38, 39, 40, 41, 26, 45, 27, 30, ! 278: 31, 46, 47, 0, 0, 0, 150, 402, 0, 0, ! 279: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 280: 0, 0, 0, 0, 0, 42, 44, 43, 0, 37, ! 281: 34, 36, 32, 33, 35, 0, 0, 0, 0, 0, ! 282: 0, 38, 39, 40, 41, 26, 45, 27, 30, 31, ! 283: 46, 47, 0, 0, 0, 0, 0, 57, 0, 0, ! 284: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 285: 0, 0, 0, 62, 42, 44, 43, 0, 37, 34, ! 286: 36, 32, 33, 35, 0, 0, 0, 0, 0, 0, ! 287: 38, 39, 40, 41, 26, 45, 27, 30, 31, 46, ! 288: 47, 0, 0, 0, 150, 0, 0, 0, 0, 0, ! 289: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 290: 0, 0, 0, 42, 44, 43, 0, 37, 34, 36, ! 291: 32, 33, 35, 0, 0, 0, 0, 0, 0, 38, ! 292: 39, 40, 41, 26, 45, 27, 30, 31, 46, 47, ! 293: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 294: 44, 0, 0, 37, 34, 36, 32, 33, 35, 0, ! 295: 0, 0, 42, 0, 43, 38, 39, 40, 41, 26, ! 296: 45, 27, 30, 31, 46, 47, 0, 0, 0, 0, ! 297: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 298: 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, ! 299: 43 }; ! 300: short yypact[]={ ! 301: ! 302: 10,-1000, 450, 450, 453, 450, 450,-1000,-1000,1035, ! 303: 98,-1000, 121, 141,-1000,1034,-1000,-1000,-1000, 402, ! 304: 402,-1000,-1000,-1000,-1000,-1000, 428, 426,-1000,-1000, ! 305: -1000,-1000,-1000,-1000,-1000,-1000,-1000, 202,-1000,-1000, ! 306: -1000,-1000, 17,-1000,-1000, 142,-1000,-1000,-1000,-1000, ! 307: -1000,-1000,-1000,-1000, 93,-1000,-1000,1095,-1000, 275, ! 308: -1000, 402,-1000, 308,-1000, 208,-1000, 378,-1000,1377, ! 309: 304, 292,-1000, 171, 98, 424,-1000,-1000, 164, 98, ! 310: -1000, 98,-1000,-1000,1034,-1000,-1000,-1000,-1000,-1000, ! 311: -1000, 245,-1000, 237,-1000,-1000,-1000,-1000, 754,-1000, ! 312: 107, 109, 417,-1000, 414,-1000, 413,-1000, 412,-1000, ! 313: 80,-1000,-1000,-1000,-1000, 411, 754,-1000,-1000,-1000, ! 314: -1000,-1000,-1000,-1000,-1000, 754, 520,-1000,-1000,-1000, ! 315: -1000,-1000,-1000,-1000,-1000, 69, 280, 194, 330,-1000, ! 316: -1000, 275,1292, 95, 187, 98,-1000, 106, 90,-1000, ! 317: 681, 264,-1000, 406,1377,-1000,-1000, 402, 401, 98, ! 318: 98, 306, 127, 754, 102,-1000, 102,-1000,-1000,-1000, ! 319: -1000,-1000, 229,-1000, 754,-1000,-1000,-1000, 355, 152, ! 320: -1000,-1000,1341,-1000,-1000,-1000, 754, 98, 754,-1000, ! 321: -1000,-1000, -3, 397, 395,-1000,-1000,-1000, 600,-1000, ! 322: -1000, 754,-1000, 72, 107, 754, 754, 754, 754, 315, ! 323: 754, 86, 82,-1000,-1000,-1000,-1000,-1000,-1000,-1000, ! 324: 396, 520, 884, 360,-1000, 875,-1000, 85, 85, 341, ! 325: 1134,-1000, 975,-1000,-1000, 89,1095,-1000,-1000,-1000, ! 326: -1000, 754, 378,-1000,-1000, 344, 288,-1000,1377, 4, ! 327: -1000,-1000,-1000, 102, 102,-1000,-1000, 284,-1000,-1000, ! 328: 355,-1000,-1000,-1000,-1000,-1000, 216, 355, 446, 443, ! 329: -1000, 754, 754, 754, 754, 754, 754, 754, 754,-1000, ! 330: 149, 102, 290, 103, 915, 834,-1000, 355, 754, 355, ! 331: 277,-1000,-1000, 600, 262, 355, 799, 358, 355,-1000, ! 332: 247,-1000,-1000, 726,-1000,-1000,-1000,-1000, 754, 261, ! 333: -1000,-1000,-1000, 520, 353,-1000, 158,-1000, 442,-1000, ! 334: -1000, 441, 440, 439, 434,-1000,-1000,-1000, 754, 355, ! 335: -1000,-1000, 754,-1000, 754,-1000, 260,-1000, 173,-1000, ! 336: 95, 326,-1000,-1000, 754, 41,-1000, 38, 184, 149, ! 337: 149, 165, 309, 290, 355, 355,-1000, 645,1243, 392, ! 338: 570,1194, 389, 355,-1000, 72,-1000, 447,-1000,-1000, ! 339: -1000, 346,-1000, 226,-1000,-1000, 327,-1000, 520,-1000, ! 340: 355,-1000,-1000,1134, 324,-1000,-1000,-1000,-1000, 355, ! 341: 355, 355,-1000, 4, 0,-1000,-1000,-1000, 355,-1000, ! 342: 376,-1000,-1000,-1000,-1000,-1000,-1000,-1000, 251,-1000, ! 343: 561,-1000, 228, 335,-1000,-1000,-1000,-1000,-1000,-1000, ! 344: 754,-1000,-1000, 432,-1000,-1000,-1000, 754,-1000, 447, ! 345: -1000,-1000, 371, 44,-1000, 217, 447, 348,-1000, 500, ! 346: -1000,-1000, 492,-1000,-1000, 754,-1000,-1000,-1000,-1000, ! 347: 225,-1000,-1000,-1000,-1000,-1000, 286,-1000,-1000,-1000, ! 348: -1000,-1000,-1000, 754, 374,-1000 }; ! 349: short yypgo[]={ ! 350: ! 351: 0, 653, 18, 652, 17, 47, 219, 651, 12, 22, ! 352: 27, 650, 23, 637, 636, 34, 92, 456, 67, 635, ! 353: 108, 64, 634, 8, 13, 633, 26, 71, 21, 15, ! 354: 632, 29, 0, 74, 14, 75, 624, 622, 70, 619, ! 355: 617, 616, 614, 612, 611, 35, 24, 72, 30, 610, ! 356: 609, 2, 6, 4, 3, 608, 606, 605, 604, 45, ! 357: 596, 32, 592, 590, 9, 589, 419, 588, 583, 28, ! 358: 579, 570, 557, 556, 555, 554, 5, 553, 186, 552, ! 359: 1, 544, 66, 542, 31, 539, 537, 7, 62, 10, ! 360: 534, 532, 63, 531, 530, 65, 519, 513, 500, 499, ! 361: 498, 497, 484, 483, 482, 481, 480, 479, 471, 469, ! 362: 466, 463, 461, 377 }; ! 363: short yyr1[]={ ! 364: ! 365: 0, 1, 1, 1, 1, 1, 1, 1, 66, 3, ! 366: 3, 3, 3, 5, 70, 5, 67, 67, 67, 67, ! 367: 72, 71, 71, 6, 6, 7, 7, 8, 65, 73, ! 368: 74, 74, 74, 75, 75, 75, 69, 68, 76, 13, ! 369: 13, 13, 12, 12, 2, 2, 2, 2, 2, 2, ! 370: 14, 14, 14, 77, 77, 83, 82, 79, 79, 84, ! 371: 84, 85, 86, 86, 87, 87, 81, 81, 88, 16, ! 372: 16, 17, 17, 18, 18, 20, 20, 90, 21, 22, ! 373: 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, ! 374: 91, 27, 9, 15, 15, 28, 28, 29, 29, 29, ! 375: 29, 29, 29, 29, 56, 56, 56, 56, 56, 19, ! 376: 19, 92, 10, 10, 55, 55, 55, 55, 55, 55, ! 377: 30, 30, 30, 11, 11, 93, 94, 31, 89, 89, ! 378: 57, 57, 32, 32, 32, 32, 32, 32, 32, 32, ! 379: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, ! 380: 32, 32, 33, 38, 38, 38, 38, 38, 39, 34, ! 381: 34, 34, 40, 40, 36, 36, 36, 37, 37, 37, ! 382: 58, 58, 59, 59, 4, 41, 95, 95, 95, 95, ! 383: 95, 95, 95, 95, 95, 95, 95, 95, 102, 102, ! 384: 98, 99, 100, 100, 100, 100, 103, 100, 104, 104, ! 385: 42, 42, 42, 42, 105, 106, 107, 43, 43, 101, ! 386: 101, 101, 101, 101, 101, 101, 45, 44, 44, 46, ! 387: 46, 64, 64, 64, 64, 109, 109, 109, 109, 109, ! 388: 60, 60, 60, 61, 61, 61, 61, 61, 61, 108, ! 389: 108, 108, 108, 47, 47, 47, 47, 47, 47, 110, ! 390: 111, 111, 49, 112, 112, 48, 48, 96, 97, 35, ! 391: 63, 63, 63, 63, 50, 50, 51, 51, 52, 52, ! 392: 52, 52, 52, 52, 52, 113, 53, 54, 54, 54, ! 393: 54, 62, 78, 80 }; ! 394: short yyr2[]={ ! 395: ! 396: 0, 0, 2, 2, 4, 2, 2, 1, 1, 2, ! 397: 2, 2, 2, 0, 0, 3, 1, 2, 4, 5, ! 398: 1, 1, 2, 1, 1, 1, 3, 1, 2, 1, ! 399: 0, 2, 3, 1, 3, 3, 1, 1, 0, 1, ! 400: 2, 3, 1, 1, 2, 4, 2, 4, 2, 2, ! 401: 1, 2, 3, 1, 3, 0, 4, 1, 3, 1, ! 402: 4, 1, 1, 3, 1, 3, 1, 3, 3, 3, ! 403: 3, 1, 2, 2, 2, 0, 1, 0, 4, 1, ! 404: 3, 1, 3, 1, 1, 0, 1, 1, 3, 2, ! 405: 0, 5, 1, 1, 2, 1, 2, 1, 2, 1, ! 406: 4, 4, 1, 1, 1, 1, 1, 1, 1, 5, ! 407: 5, 0, 0, 1, 1, 1, 1, 1, 2, 1, ! 408: 1, 4, 2, 1, 1, 0, 0, 6, 1, 1, ! 409: 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, ! 410: 3, 3, 2, 2, 3, 3, 3, 2, 3, 3, ! 411: 1, 1, 1, 1, 2, 3, 4, 3, 1, 2, ! 412: 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, ! 413: 1, 3, 1, 1, 2, 0, 3, 2, 1, 2, ! 414: 3, 5, 2, 1, 1, 1, 1, 1, 0, 1, ! 415: 0, 0, 3, 2, 4, 3, 0, 5, 1, 3, ! 416: 8, 4, 4, 3, 4, 0, 1, 1, 5, 1, ! 417: 2, 1, 2, 3, 3, 4, 3, 1, 3, 1, ! 418: 2, 1, 1, 2, 1, 1, 2, 2, 3, 3, ! 419: 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, ! 420: 4, 4, 1, 4, 3, 6, 5, 8, 7, 2, ! 421: 2, 4, 2, 2, 4, 0, 1, 2, 0, 6, ! 422: 1, 1, 1, 1, 1, 0, 1, 3, 1, 3, ! 423: 2, 1, 2, 4, 3, 0, 4, 1, 4, 6, ! 424: 3, 3, 0, 0 }; ! 425: short yychk[]={ ! 426: ! 427: -1000, -1, -65, -2, -67, -69, -4, 256, -73, -17, ! 428: 49, 51, 50, -71, 36, -41, 34, -18, -6, -29, ! 429: -89, 32, 33, -56, -19, -55, 42, 44, -30, -57, ! 430: 45, 46, 29, 30, 27, 31, 28, 26, 38, 39, ! 431: 40, 41, 71, 73, 23, 43, 47, 48, -66, 1, ! 432: -66, 1, -66, -66, -74, -6, -25, 5, -18, -26, ! 433: -27, -9, 21, -77, -82, -33, -38, -39, 21, -78, ! 434: -81, -16, -88, -33, 3, -72, 21, -95, -33, 18, ! 435: -38, 70, -96, 5,-100, -42,-101, -35,-102, 83, ! 436: 52, 21, 25, 62, 61,-105,-107,-108, 68,-109, ! 437: 64, 63, -63, 69, 53, 57, 55,-110, 60, -47, ! 438: -60, 79, 80, 77, 78, 59, 58, 67, 65, 66, ! 439: -20, -21, 3, -20, -76, 3, 3, 3, 16, 72, ! 440: -11, -31, 21, 23, 5, -5, -75, 22, -13, -12, ! 441: -2, -26, -17, 7, -20, 7, 9, 20, 19, -34, ! 442: 3, -79, -84, -85, -15, -28, -29, -89, 7, 7, ! 443: 7, -16, 3, 9, -33, -38, -33, -4, -98, -95, ! 444: -76, 8, -76, 8,-103, -76, -76, -76, -32, -33, ! 445: 25, -58, -15, -36, -37, -34, 15, 18, 13, -35, ! 446: 256, -59, 20, 74, 75, 81, 82, -64, -45, 21, ! 447: 25, 61, 62, 3, 21, 3, 3, 3,-111, -4, ! 448: 3, 25, -61, 55, 59, 58, 57, 60, 32, 3, ! 449: -32, -90, -32, -23, -24, -32, 16, -92, -92, -76, ! 450: -93, -68, -70, 37, 7, 9, 1, 6, -27, 9, ! 451: -82, -83, 21, 23, 4, -32, -40, -80, 7, 3, ! 452: -28, -21, -88, -33, -33, 4, 4, -7, -8, -9, ! 453: -32, -97, -5, -76, 8, -76,-104, -32, -4, -4, ! 454: -4, 15, 16, 17, 14, 11, 12, 10, 9, -34, ! 455: -32, -33, -32, -59, 3, 3, -46, -32, 7, -32, ! 456: -44, -64, -64, -45, -50, -32, -32, -48, -32, -49, ! 457: -48, 7, 1, -32, -61, 25, 1, -76, 7, -22, ! 458: -23, 4, 4, 8, -10, 24, -10, -31, -14, -2, ! 459: -3, -2, -4, -69, 256, 22, 25, -12, -91, -32, ! 460: -34, 4, 7, 4, 7, -84, -86, -87, 76, 4, ! 461: 7, -99, -76, 8, 7, 1, -43, 1, -32, -32, ! 462: -32, -32, -32, -32, -32, -32, 20, -32, -15, 42, ! 463: -32, -15, 42, -32, 4, 7, -46, 7, 4, 4, ! 464: -112, -4, 7, -76, 4, -76, -32, 4, 7, -24, ! 465: -32, 4, 16, 1, -94, 1, 1, 1, 1, -32, ! 466: -32, -32, 4, 7, 15, -8, 6, -76, -32, 54, ! 467: 56, 4, 4, 4, 4, 4, 4, -64, -51, -52, ! 468: -32, 8, -53, -47, 5, 4, 1, 7, 1, -76, ! 469: 7, -23, -2, 6, -87, 76,-106, 3, 4, 7, ! 470: 8, -54, -62, -78, 8, -53,-113, -76, -76, -32, ! 471: 1, -76, -32, -52, -54, 3, 25, 76, -54, 8, ! 472: -51, 4, 1, -76, -4, 4, -32, -80, -80, -54, ! 473: 6, -76, 4, 7, -32, 4 }; ! 474: short yydef[]={ ! 475: ! 476: -2, -2, 0, 0, 0, 0, 0, 7, 30, 85, ! 477: 0, 282, 0, 16, 36, 188, 29, 71, 21, 75, ! 478: 75, 23, 24, 97, 38, 99, 0, 0, 102, 103, ! 479: 128, 129, 104, 105, 106, 107, 108, 0, 114, 115, ! 480: 116, 117, 0, 119, 120, 0, 130, 131, 2, 8, ! 481: 3, 13, 5, 6, 28, 22, 44, 0, 72, 86, ! 482: 87, 75, 92, 46, 53, 0, 152, 153, 158, 0, ! 483: 48, 49, 66, 0, 0, 17, 20, 174, 0, 0, ! 484: -2, 0, 175, 190, 188, 183, 184, 185, 186, 187, ! 485: 38, 158, 38, 0, 196, 38, 38, 38, 209, 211, ! 486: 0, 0, 0, 189, 0, 206, 0, 175, 0, 242, ! 487: 225, 260, 261, 262, 263, 0, 0, 230, 231, 232, ! 488: 73, 76, 77, 74, 98, 0, 0, 111, 111, 118, ! 489: 38, 122, 123, 124, 125, 14, 31, 33, 0, 39, ! 490: 42, 43, 85, 0, 89, 0, 55, 0, 0, 154, ! 491: 0, 283, 57, 59, 61, 93, 95, 0, 0, 0, ! 492: 0, 0, 0, 0, 177, -2, 0, 258, 13, 182, ! 493: 257, 38, 193, 38, 0, 175, 175, 175, 210, 132, ! 494: 133, 134, 0, 136, 137, 138, 0, 0, 0, 150, ! 495: 151, 170, 0, 0, 0, 172, 173, 212, 0, 221, ! 496: 222, 0, 224, 0, 0, 265, 0, 255, 255, 0, ! 497: 0, 226, 227, 233, 234, 235, 236, 237, 238, 249, ! 498: 38, 0, 0, 0, 81, 83, 84, 112, 112, 0, ! 499: 0, 4, 175, 37, 32, 0, 40, 45, 88, 90, ! 500: 54, 0, 155, 157, 159, 0, 0, 47, 0, 0, ! 501: 94, 96, 67, 70, 69, 68, 18, 0, 25, 27, ! 502: 176, 180, -2, 192, 38, 195, 0, 198, 0, 0, ! 503: 203, 0, 0, 0, 0, 0, 0, 0, 0, 135, ! 504: 142, 143, 147, 0, 0, 0, 214, 219, 0, 223, ! 505: 0, 217, 213, 0, 0, 264, 0, 0, 256, 175, ! 506: 0, 250, 38, 0, 228, 229, 38, 244, 0, 0, ! 507: 79, 100, 101, 0, 0, 113, 0, 121, 126, 50, ! 508: 15, 0, 0, 0, 0, 34, 35, 41, 0, 56, ! 509: 156, 160, 0, 161, 0, 58, 0, 62, 64, 19, ! 510: 0, 0, 194, 38, 0, 201, 202, 207, 139, 140, ! 511: 141, -2, 145, 146, 149, 148, 171, 0, 0, 0, ! 512: 0, 0, 0, 220, 216, 0, 215, 0, 204, 239, ! 513: 240, 0, 252, 0, 241, 243, 38, 78, 0, 82, ! 514: 83, 109, 110, 51, 0, 9, 10, 11, 12, 91, ! 515: 162, 163, 60, 0, 0, 26, 181, 197, 199, 205, ! 516: 0, 164, 165, 166, 167, 168, 169, 218, 0, 266, ! 517: 268, 282, 271, 0, 275, 253, 38, 251, 38, 246, ! 518: 0, 80, 52, 0, 63, 65, 38, 0, 259, 0, ! 519: 282, 270, 277, 0, 282, 272, 0, 0, 245, 38, ! 520: 127, 175, 0, 267, 269, 0, 283, 283, 274, 282, ! 521: 0, 254, 38, 248, 200, 208, 0, 280, 281, 273, ! 522: 276, 247, 278, 0, 0, 279 }; ! 523: #ifndef lint ! 524: static char yaccpar_sccsid[] = "@(#)yaccpar 4.1 (Berkeley) 2/11/83"; ! 525: #endif not lint ! 526: ! 527: # ! 528: # define YYFLAG -1000 ! 529: # define YYERROR goto yyerrlab ! 530: # define YYACCEPT return(0) ! 531: # define YYABORT return(1) ! 532: ! 533: /* parser for yacc output */ ! 534: ! 535: #ifdef YYDEBUG ! 536: int yydebug = 0; /* 1 for debugging */ ! 537: #endif ! 538: YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */ ! 539: int yychar = -1; /* current input token number */ ! 540: int yynerrs = 0; /* number of errors */ ! 541: short yyerrflag = 0; /* error recovery flag */ ! 542: ! 543: yyparse() { ! 544: ! 545: short yys[YYMAXDEPTH]; ! 546: short yyj, yym; ! 547: register YYSTYPE *yypvt; ! 548: register short yystate, *yyps, yyn; ! 549: register YYSTYPE *yypv; ! 550: register short *yyxi; ! 551: ! 552: yystate = 0; ! 553: yychar = -1; ! 554: yynerrs = 0; ! 555: yyerrflag = 0; ! 556: yyps= &yys[-1]; ! 557: yypv= &yyv[-1]; ! 558: ! 559: yystack: /* put a state and value onto the stack */ ! 560: ! 561: #ifdef YYDEBUG ! 562: if( yydebug ) printf( "state %d, char 0%o\n", yystate, yychar ); ! 563: #endif ! 564: if( ++yyps> &yys[YYMAXDEPTH] ) { yyerror( "yacc stack overflow" ); return(1); } ! 565: *yyps = yystate; ! 566: ++yypv; ! 567: *yypv = yyval; ! 568: ! 569: yynewstate: ! 570: ! 571: yyn = yypact[yystate]; ! 572: ! 573: if( yyn<= YYFLAG ) goto yydefault; /* simple state */ ! 574: ! 575: if( yychar<0 ) if( (yychar=yylex())<0 ) yychar=0; ! 576: if( (yyn += yychar)<0 || yyn >= YYLAST ) goto yydefault; ! 577: ! 578: if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */ ! 579: yychar = -1; ! 580: yyval = yylval; ! 581: yystate = yyn; ! 582: if( yyerrflag > 0 ) --yyerrflag; ! 583: goto yystack; ! 584: } ! 585: ! 586: yydefault: ! 587: /* default state action */ ! 588: ! 589: if( (yyn=yydef[yystate]) == -2 ) { ! 590: if( yychar<0 ) if( (yychar=yylex())<0 ) yychar = 0; ! 591: /* look through exception table */ ! 592: ! 593: for( yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate) ; yyxi += 2 ) ; /* VOID */ ! 594: ! 595: while( *(yyxi+=2) >= 0 ){ ! 596: if( *yyxi == yychar ) break; ! 597: } ! 598: if( (yyn = yyxi[1]) < 0 ) return(0); /* accept */ ! 599: } ! 600: ! 601: if( yyn == 0 ){ /* error */ ! 602: /* error ... attempt to resume parsing */ ! 603: ! 604: switch( yyerrflag ){ ! 605: ! 606: case 0: /* brand new error */ ! 607: ! 608: yyerror( "syntax error" ); ! 609: yyerrlab: ! 610: ++yynerrs; ! 611: ! 612: case 1: ! 613: case 2: /* incompletely recovered error ... try again */ ! 614: ! 615: yyerrflag = 3; ! 616: ! 617: /* find a state where "error" is a legal shift action */ ! 618: ! 619: while ( yyps >= yys ) { ! 620: yyn = yypact[*yyps] + YYERRCODE; ! 621: if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){ ! 622: yystate = yyact[yyn]; /* simulate a shift of "error" */ ! 623: goto yystack; ! 624: } ! 625: yyn = yypact[*yyps]; ! 626: ! 627: /* the current yyps has no shift onn "error", pop stack */ ! 628: ! 629: #ifdef YYDEBUG ! 630: if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] ); ! 631: #endif ! 632: --yyps; ! 633: --yypv; ! 634: } ! 635: ! 636: /* there is no state on the stack with an error shift ... abort */ ! 637: ! 638: yyabort: ! 639: return(1); ! 640: ! 641: ! 642: case 3: /* no shift yet; clobber input char */ ! 643: ! 644: #ifdef YYDEBUG ! 645: if( yydebug ) printf( "error recovery discards char %d\n", yychar ); ! 646: #endif ! 647: ! 648: if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */ ! 649: yychar = -1; ! 650: goto yynewstate; /* try again in the same state */ ! 651: ! 652: } ! 653: ! 654: } ! 655: ! 656: /* reduction by production yyn */ ! 657: ! 658: #ifdef YYDEBUG ! 659: if( yydebug ) printf("reduce %d\n",yyn); ! 660: #endif ! 661: yyps -= yyr2[yyn]; ! 662: yypvt = yypv; ! 663: yypv -= yyr2[yyn]; ! 664: yyval = yypv[1]; ! 665: yym=yyn; ! 666: /* consult goto table to find next state */ ! 667: yyn = yyr1[yyn]; ! 668: yyj = yypgo[yyn] + *yyps + 1; ! 669: if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]]; ! 670: switch(yym){ ! 671: ! 672: case 1: ! 673: # line 138 "gram.in" ! 674: { graal = PARSEOF; } break; ! 675: case 2: ! 676: # line 140 "gram.in" ! 677: { graal = PARSOPT; } break; ! 678: case 3: ! 679: # line 142 "gram.in" ! 680: { graal = PARSDCL; doinits(yypvt[-1].pval); frchain( & yypvt[-1].pval); } break; ! 681: case 4: ! 682: # line 144 "gram.in" ! 683: { endproc(); graal = PARSPROC; } break; ! 684: case 5: ! 685: # line 146 "gram.in" ! 686: { graal = PARSDEF; } break; ! 687: case 6: ! 688: # line 148 "gram.in" ! 689: { graal = PARSERR; } break; ! 690: case 7: ! 691: # line 150 "gram.in" ! 692: { graal = PARSERR; ! 693: errmess("Syntax error", "", ""); ! 694: } break; ! 695: case 8: ! 696: # line 155 "gram.in" ! 697: { eofneed = 1; } break; ! 698: case 9: ! 699: # line 158 "gram.in" ! 700: { if(!dclsect) ! 701: warn("declaration amid executables"); ! 702: yyval.pval = bgnexec(); ! 703: TEST fprintf(diagfile,"stat: dcl\n"); ! 704: doinits(yypvt[-1].pval); frchain( & yypvt[-1].pval); } break; ! 705: case 10: ! 706: # line 164 "gram.in" ! 707: { if(dclsect && yypvt[-1].pval->tag!=TSTFUNCT) ! 708: dclsect = 0; ! 709: TEST fprintf(diagfile, "stat: exec\n"); } break; ! 710: case 11: ! 711: # line 168 "gram.in" ! 712: { yyval.pval = bgnexec(); } break; ! 713: case 12: ! 714: # line 170 "gram.in" ! 715: { yyerrok; ! 716: errmess("Syntax error", "", ""); ! 717: yyval.pval = bgnexec(); ! 718: } break; ! 719: case 13: ! 720: # line 177 "gram.in" ! 721: { yyval.pval = bgnexec(); } break; ! 722: case 14: ! 723: # line 178 "gram.in" ! 724: { thisexec->copylab = 1; } break; ! 725: case 15: ! 726: # line 179 "gram.in" ! 727: { yyval.pval = addexec(); thisexec->copylab = 0; } break; ! 728: case 16: ! 729: # line 183 "gram.in" ! 730: { procname = 0; thisargs = 0; ! 731: if(procclass == 0) procclass = PRMAIN; ! 732: goto proctype; ! 733: } break; ! 734: case 17: ! 735: # line 188 "gram.in" ! 736: { thisargs = 0; goto proctype; } break; ! 737: case 18: ! 738: # line 190 "gram.in" ! 739: { thisargs = 0; goto proctype; } break; ! 740: case 19: ! 741: # line 192 "gram.in" ! 742: { thisargs = yypvt[-1].pval; ! 743: proctype: ! 744: if(procattrs) ! 745: if(procname == 0) ! 746: dclerr("attributes on unnamed procedure", ""); ! 747: else { ! 748: attvars(procattrs, mkchain(procname,CHNULL)); ! 749: procclass = PRFUNCT; ! 750: } ! 751: fprintf(diagfile, "Procedure %s:\n", procnm() ); ! 752: if(verbose) ! 753: fprintf(diagfile, " Pass 1\n"); ! 754: } break; ! 755: case 20: ! 756: # line 208 "gram.in" ! 757: { procname = mkvar(yypvt[-0].pval); ! 758: extname(procname); ! 759: } break; ! 760: case 21: ! 761: # line 214 "gram.in" ! 762: { procattrs = 0; } break; ! 763: case 22: ! 764: # line 216 "gram.in" ! 765: { procattrs = yypvt[-1].pval; ! 766: if(procclass == 0) procclass = PRFUNCT; ! 767: } break; ! 768: case 23: ! 769: # line 222 "gram.in" ! 770: { yyval.pval = bgnproc(); procclass = 0; } break; ! 771: case 24: ! 772: # line 224 "gram.in" ! 773: { yyval.pval = bgnproc(); procclass = PRBLOCK; } break; ! 774: case 25: ! 775: # line 228 "gram.in" ! 776: { yyval.pval = mkchain(yypvt[-0].pval,CHNULL); } break; ! 777: case 26: ! 778: # line 230 "gram.in" ! 779: { hookup(yypvt[-2].pval, mkchain(yypvt[-0].pval,CHNULL) ); } break; ! 780: case 27: ! 781: # line 234 "gram.in" ! 782: { if(yypvt[-0].pval->vclass == CLUNDEFINED) ! 783: yypvt[-0].pval->vclass = CLARG; ! 784: else dclerr("argument already used", yypvt[-0].pval->sthead->namep); ! 785: } break; ! 786: case 28: ! 787: # line 240 "gram.in" ! 788: { optneed = 0; } break; ! 789: case 29: ! 790: # line 244 "gram.in" ! 791: { if(blklevel > 0) ! 792: { ! 793: execerr("Option statement inside procedure", ""); ! 794: execerr("procedure %s terminated prematurely", procnm()); ! 795: endproc(); ! 796: } ! 797: optneed = 1; ! 798: } break; ! 799: case 33: ! 800: # line 260 "gram.in" ! 801: { setopt(yypvt[-0].pval,CNULL); cfree(yypvt[-0].pval); } break; ! 802: case 34: ! 803: # line 262 "gram.in" ! 804: { setopt(yypvt[-2].pval,yypvt[-0].pval); cfree(yypvt[-2].pval); cfree(yypvt[-0].pval); } break; ! 805: case 35: ! 806: # line 264 "gram.in" ! 807: { setopt(yypvt[-2].pval,yypvt[-0].pval->leftp); cfree(yypvt[-2].pval); cfree(yypvt[-0].pval); } break; ! 808: case 36: ! 809: # line 268 "gram.in" ! 810: { defneed = 1; } break; ! 811: case 37: ! 812: # line 272 "gram.in" ! 813: { if(thisctl->subtype != STPROC) ! 814: execerr("control stack not empty upon END", ""); ! 815: exnull(); ! 816: popctl(); ! 817: } break; ! 818: case 38: ! 819: # line 280 "gram.in" ! 820: { igeol=1; /* continue past newlines */ } break; ! 821: case 41: ! 822: # line 285 "gram.in" ! 823: { yyval.pval = hookup(yypvt[-2].pval,yypvt[-0].pval); } break; ! 824: case 44: ! 825: # line 293 "gram.in" ! 826: { attvars(yypvt[-1].pval,yypvt[-0].pval); yyval.pval = yypvt[-0].pval; } break; ! 827: case 45: ! 828: # line 295 "gram.in" ! 829: { attvars(yypvt[-3].pval,yypvt[-1].pval); yyval.pval = yypvt[-1].pval; } break; ! 830: case 46: ! 831: # line 297 "gram.in" ! 832: { yyval.pval = 0; } break; ! 833: case 47: ! 834: # line 299 "gram.in" ! 835: { yyval.pval = 0; } break; ! 836: case 48: ! 837: # line 301 "gram.in" ! 838: { yyval.pval = 0; } break; ! 839: case 49: ! 840: # line 303 "gram.in" ! 841: { mkequiv(yypvt[-0].pval); yyval.pval = 0; } break; ! 842: case 52: ! 843: # line 309 "gram.in" ! 844: { yyval.pval = hookup(yypvt[-2].pval,yypvt[-0].pval); } break; ! 845: case 55: ! 846: # line 316 "gram.in" ! 847: {ininit = YES; } break; ! 848: case 56: ! 849: # line 317 "gram.in" ! 850: { ininit = NO; mkinit(yypvt[-3].pval,yypvt[-0].pval); frexpr(yypvt[-3].pval); } break; ! 851: case 59: ! 852: # line 325 "gram.in" ! 853: { setimpl(imptype, 'a', 'z'); } break; ! 854: case 61: ! 855: # line 330 "gram.in" ! 856: { imptype = yypvt[-0].pval->attype; cfree(yypvt[-0].pval); } break; ! 857: case 64: ! 858: # line 338 "gram.in" ! 859: { setimpl(imptype, yypvt[-0].ival, yypvt[-0].ival); } break; ! 860: case 65: ! 861: # line 340 "gram.in" ! 862: { setimpl(imptype, yypvt[-2].ival, yypvt[-0].ival); } break; ! 863: case 68: ! 864: # line 348 "gram.in" ! 865: { mkequiv(yypvt[-1].pval); } break; ! 866: case 69: ! 867: # line 352 "gram.in" ! 868: { yyval.pval = mkchain(yypvt[-2].pval, mkchain(yypvt[-0].pval,CHNULL)); } break; ! 869: case 70: ! 870: # line 354 "gram.in" ! 871: { yyval.pval = hookup(yypvt[-2].pval, mkchain(yypvt[-0].pval,CHNULL)); } break; ! 872: case 72: ! 873: # line 358 "gram.in" ! 874: { attatt(yypvt[-1].pval,yypvt[-0].pval); } break; ! 875: case 73: ! 876: # line 361 "gram.in" ! 877: { yypvt[-1].pval->atdim = yypvt[-0].pval; } break; ! 878: case 74: ! 879: # line 362 "gram.in" ! 880: { yyval.pval = ALLOC(atblock); yyval.pval->atdim = yypvt[-0].pval; } break; ! 881: case 75: ! 882: # line 365 "gram.in" ! 883: { yyval.pval = 0; } break; ! 884: case 77: ! 885: # line 369 "gram.in" ! 886: { inbound = 1; } break; ! 887: case 78: ! 888: # line 370 "gram.in" ! 889: { inbound = 0; yyval.pval = arrays = mkchain(yypvt[-1].pval,arrays); } break; ! 890: case 80: ! 891: # line 374 "gram.in" ! 892: { hookup(yypvt[-2].pval,yypvt[-0].pval); } break; ! 893: case 81: ! 894: # line 378 "gram.in" ! 895: { ! 896: yyval.pval = ALLOC(dimblock); ! 897: yyval.pval->lowerb = 0; ! 898: yyval.pval->upperb = yypvt[-0].pval; ! 899: } break; ! 900: case 82: ! 901: # line 384 "gram.in" ! 902: { ! 903: yyval.pval = ALLOC(dimblock); ! 904: yyval.pval->lowerb = yypvt[-2].pval; ! 905: yyval.pval->upperb = yypvt[-0].pval; ! 906: } break; ! 907: case 84: ! 908: # line 392 "gram.in" ! 909: { yyval.pval = 0; } break; ! 910: case 85: ! 911: # line 395 "gram.in" ! 912: { yyval.pval = 0; } break; ! 913: case 88: ! 914: # line 400 "gram.in" ! 915: { hookup(yypvt[-2].pval,yypvt[-0].pval); } break; ! 916: case 89: ! 917: # line 404 "gram.in" ! 918: { ! 919: if(yypvt[-0].pval!=0) ! 920: if(yypvt[-1].pval->vdim==0) ! 921: yypvt[-1].pval->vdim = yypvt[-0].pval; ! 922: else if(!eqdim(yypvt[-0].pval,yypvt[-1].pval->vdim)) ! 923: dclerr("multiple dimension", yypvt[-1].pval->namep); ! 924: yyval.pval = mkchain(yypvt[-1].pval,CHNULL); ! 925: } break; ! 926: case 90: ! 927: # line 412 "gram.in" ! 928: { ininit = YES; } break; ! 929: case 91: ! 930: # line 413 "gram.in" ! 931: { ! 932: ininit = NO; ! 933: if(yypvt[-2].ival!=OPASGN) ! 934: dclerr("illegal initialization operator", yypvt[-4].pval->sthead->namep); ! 935: if(yypvt[-3].pval!=0) ! 936: if(yypvt[-4].pval->vdim==0) ! 937: yypvt[-4].pval->vdim = yypvt[-3].pval; ! 938: else if(!eqdim(yypvt[-3].pval,yypvt[-4].pval->vdim)) ! 939: dclerr("multiple dimension", yypvt[-4].pval->sthead->namep); ! 940: if(yypvt[-0].pval!=0 && yypvt[-4].pval->vinit!=0) ! 941: dclerr("multiple initialization", yypvt[-4].pval->sthead->namep); ! 942: yypvt[-4].pval->vinit = yypvt[-0].pval; ! 943: yyval.pval = mkchain(yypvt[-4].pval,CHNULL); ! 944: } break; ! 945: case 92: ! 946: # line 430 "gram.in" ! 947: { yyval.pval = mkvar(yypvt[-0].pval); } break; ! 948: case 94: ! 949: # line 435 "gram.in" ! 950: { attatt(yypvt[-1].pval,yypvt[-0].pval); } break; ! 951: case 96: ! 952: # line 440 "gram.in" ! 953: { yyval.pval = ALLOC(atblock); yyval.pval->atdim = yypvt[-0].pval; } break; ! 954: case 97: ! 955: # line 444 "gram.in" ! 956: { ! 957: yyval.pval = ALLOC(atblock); ! 958: if(yypvt[-0].ival == CLEXT) ! 959: yyval.pval->atext = 1; ! 960: yyval.pval->atclass = yypvt[-0].ival; ! 961: } break; ! 962: case 98: ! 963: # line 451 "gram.in" ! 964: { ! 965: yyval.pval = ALLOC(atblock); ! 966: yyval.pval->atclass = CLCOMMON; ! 967: yyval.pval->atcommon = yypvt[-1].pval; ! 968: } break; ! 969: case 99: ! 970: # line 457 "gram.in" ! 971: { yyval.pval = ALLOC(atblock); yyval.pval->attype = yypvt[-0].ival; } break; ! 972: case 100: ! 973: # line 459 "gram.in" ! 974: { yyval.pval = ALLOC(atblock); yyval.pval->attype = TYCHAR; yyval.pval->attypep = yypvt[-1].pval; } break; ! 975: case 101: ! 976: # line 461 "gram.in" ! 977: { yyval.pval = ALLOC(atblock); yyval.pval->attype = TYFIELD; ! 978: yyval.pval->attypep = mkfield(yypvt[-1].pval); } break; ! 979: case 102: ! 980: # line 464 "gram.in" ! 981: { yyval.pval = ALLOC(atblock); yyval.pval->attype = TYSTRUCT; ! 982: yyval.pval->attypep = yypvt[-0].pval; } break; ! 983: case 103: ! 984: # line 467 "gram.in" ! 985: { yyval.pval = ALLOC(atblock); yyval.pval->atprec = yypvt[-0].ival; } break; ! 986: case 104: ! 987: # line 470 "gram.in" ! 988: { yyval.ival = CLAUTO; ! 989: fprintf(diagfile,"AUTOMATIC not yet implemented\n"); } break; ! 990: case 105: ! 991: # line 472 "gram.in" ! 992: { yyval.ival = CLSTAT; } break; ! 993: case 106: ! 994: # line 473 "gram.in" ! 995: { yyval.ival = CLSTAT; } break; ! 996: case 107: ! 997: # line 474 "gram.in" ! 998: { yyval.ival = CLVALUE; ! 999: fprintf(diagfile, "VALUE not yet implemented\n"); } break; ! 1000: case 108: ! 1001: # line 476 "gram.in" ! 1002: { yyval.ival = CLEXT; } break; ! 1003: case 109: ! 1004: # line 480 "gram.in" ! 1005: { yyval.pval = yypvt[-1].pval; } break; ! 1006: case 110: ! 1007: # line 482 "gram.in" ! 1008: { yyval.pval = yypvt[-1].pval; } break; ! 1009: case 111: ! 1010: # line 485 "gram.in" ! 1011: { comneed = 1; } break; ! 1012: case 112: ! 1013: # line 488 "gram.in" ! 1014: { yyval.pval = mkcomm(""); } break; ! 1015: case 114: ! 1016: # line 492 "gram.in" ! 1017: { yyval.ival = TYINT; } break; ! 1018: case 115: ! 1019: # line 493 "gram.in" ! 1020: { yyval.ival = TYREAL; } break; ! 1021: case 116: ! 1022: # line 494 "gram.in" ! 1023: { yyval.ival = TYCOMPLEX; } break; ! 1024: case 117: ! 1025: # line 495 "gram.in" ! 1026: { yyval.ival = TYLOG; } break; ! 1027: case 118: ! 1028: # line 497 "gram.in" ! 1029: { yyval.ival = TYLREAL; /* holdover from Fortran */ } break; ! 1030: case 119: ! 1031: # line 499 "gram.in" ! 1032: { yyval.ival = TYLREAL; /* holdover from Fortran */ } break; ! 1033: case 120: ! 1034: # line 503 "gram.in" ! 1035: { yyval.pval = yypvt[-0].pval->varp; } break; ! 1036: case 121: ! 1037: # line 505 "gram.in" ! 1038: { yyval.pval = mkstruct(yypvt[-2].pval,yypvt[-0].pval); } break; ! 1039: case 122: ! 1040: # line 507 "gram.in" ! 1041: { yyval.pval = mkstruct(PNULL,yypvt[-0].pval); } break; ! 1042: case 123: ! 1043: # line 511 "gram.in" ! 1044: { if(yypvt[-0].pval->varp && yypvt[-0].pval->varp->blklevel<blklevel) ! 1045: hide(yypvt[-0].pval); ! 1046: yypvt[-0].pval->tag = TSTRUCT; ! 1047: } break; ! 1048: case 124: ! 1049: # line 516 "gram.in" ! 1050: { if(yypvt[-0].pval->varp) ! 1051: if(yypvt[-0].pval->varp->blklevel<blklevel) ! 1052: hide(yypvt[-0].pval); ! 1053: else dclerr("multiple declaration for type %s", yypvt[-0].pval->namep); ! 1054: } break; ! 1055: case 125: ! 1056: # line 523 "gram.in" ! 1057: { ++instruct; } break; ! 1058: case 126: ! 1059: # line 523 "gram.in" ! 1060: { --instruct; } break; ! 1061: case 127: ! 1062: # line 524 "gram.in" ! 1063: { yyval.pval = yypvt[-3].pval; prevv = -1; } break; ! 1064: case 130: ! 1065: # line 531 "gram.in" ! 1066: { yyval.ival = 1; } break; ! 1067: case 131: ! 1068: # line 532 "gram.in" ! 1069: { yyval.ival = 0; } break; ! 1070: case 132: ! 1071: # line 535 "gram.in" ! 1072: { if(yypvt[-0].pval->tag == TCALL) ! 1073: yypvt[-0].pval = funcinv(yypvt[-0].pval); ! 1074: if(yypvt[-0].pval->vtype==TYUNDEFINED && yypvt[-0].pval->vext==0) ! 1075: impldecl(yypvt[-0].pval); ! 1076: else if(yypvt[-0].pval->tag==TNAME && yypvt[-0].pval->vdcldone==0 ! 1077: && yypvt[-0].pval->vext==0 && !inbound) ! 1078: dclit(yypvt[-0].pval); ! 1079: if(yypvt[-0].pval->vtype==TYFIELD) ! 1080: yyval.pval = extrfield(yypvt[-0].pval); ! 1081: } break; ! 1082: case 134: ! 1083: # line 547 "gram.in" ! 1084: { yyval.pval = mkconst(TYLOG, (yypvt[-0].ival == TRUE ? ".true." : ".false.") ); } break; ! 1085: case 135: ! 1086: # line 549 "gram.in" ! 1087: { yyval.pval = typexpr(yypvt[-1].pval,yypvt[-0].pval); } break; ! 1088: case 138: ! 1089: # line 553 "gram.in" ! 1090: { if( !ininit && yypvt[-0].pval->tag== TLIST) ! 1091: yyval.pval = compconst(yypvt[-0].pval); ! 1092: else yypvt[-0].pval->needpar = 1; } break; ! 1093: case 139: ! 1094: # line 557 "gram.in" ! 1095: { yyval.pval = mknode(TAROP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval); } break; ! 1096: case 140: ! 1097: # line 559 "gram.in" ! 1098: { yyval.pval = mknode(TAROP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval); } break; ! 1099: case 141: ! 1100: # line 561 "gram.in" ! 1101: { yyval.pval = mknode(TAROP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval); } break; ! 1102: case 142: ! 1103: # line 563 "gram.in" ! 1104: { if(yypvt[-1].ival==OPMINUS) ! 1105: yyval.pval = mknode(TNEGOP,OPMINUS, yypvt[-0].pval, PNULL); ! 1106: else yyval.pval = yypvt[-0].pval; } break; ! 1107: case 143: ! 1108: # line 567 "gram.in" ! 1109: { yyval.pval = mknode(TASGNOP,yypvt[-1].ival,yypvt[-0].pval,mkint(1)); } break; ! 1110: case 144: ! 1111: # line 569 "gram.in" ! 1112: { yyval.pval = mknode(TRELOP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval); } break; ! 1113: case 145: ! 1114: # line 571 "gram.in" ! 1115: { yyval.pval = mknode(TLOGOP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval); } break; ! 1116: case 146: ! 1117: # line 573 "gram.in" ! 1118: { yyval.pval = mknode(TLOGOP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval); } break; ! 1119: case 147: ! 1120: # line 575 "gram.in" ! 1121: { yyval.pval = mknode(TNOTOP,yypvt[-1].ival,yypvt[-0].pval,PNULL); } break; ! 1122: case 148: ! 1123: # line 577 "gram.in" ! 1124: { if(yypvt[-2].pval->tag == TCALL) ! 1125: { ! 1126: exprerr("may not assign to a function", CNULL); ! 1127: yyval.pval = errnode(); ! 1128: } ! 1129: else ! 1130: yyval.pval = mknode(TASGNOP,yypvt[-1].ival,yypvt[-2].pval,yypvt[-0].pval); ! 1131: } break; ! 1132: case 149: ! 1133: # line 586 "gram.in" ! 1134: { yyval.pval = mknode(TREPOP,0,yypvt[-2].pval,yypvt[-0].pval); } break; ! 1135: case 151: ! 1136: # line 589 "gram.in" ! 1137: { yyval.pval = errnode(); } break; ! 1138: case 152: ! 1139: # line 593 "gram.in" ! 1140: { if(yypvt[-0].pval->tag==TNAME && yypvt[-0].pval->vdcldone==0 && ! 1141: yypvt[-0].pval->vsubs==0 && yypvt[-0].pval->vext==0 && !inbound) ! 1142: dclit(yypvt[-0].pval); ! 1143: } break; ! 1144: case 154: ! 1145: # line 601 "gram.in" ! 1146: { ! 1147: if(yypvt[-0].pval->tag!=TLIST) ! 1148: yypvt[-0].pval = mknode(TLIST,0, mkchain(yypvt[-0].pval,CHNULL), PNULL); ! 1149: if(yypvt[-1].pval->vdim) ! 1150: { ! 1151: if(yypvt[-1].pval->vdcldone==0 && yypvt[-1].pval->vext==0) ! 1152: dclit(yypvt[-1].pval); ! 1153: yyval.pval = subscript(yypvt[-1].pval,yypvt[-0].pval); ! 1154: } ! 1155: else yyval.pval = mkcall(yypvt[-1].pval,yypvt[-0].pval); ! 1156: } break; ! 1157: case 155: ! 1158: # line 613 "gram.in" ! 1159: { yyval.pval = strucelt(yypvt[-2].pval,yypvt[-0].pval); } break; ! 1160: case 156: ! 1161: # line 615 "gram.in" ! 1162: { if(yypvt[-0].pval->tag != TLIST) ! 1163: yypvt[-0].pval = mknode(TLIST,0, mkchain(yypvt[-0].pval,CHNULL), PNULL); ! 1164: yyval.pval = subscript(strucelt(yypvt[-3].pval,yypvt[-1].pval), yypvt[-0].pval); ! 1165: } break; ! 1166: case 157: ! 1167: # line 620 "gram.in" ! 1168: { yyval.pval = mkarrow(yypvt[-2].pval,yypvt[-0].pval); } break; ! 1169: case 158: ! 1170: # line 624 "gram.in" ! 1171: { if(yypvt[-0].pval->varp == 0) mkvar(yypvt[-0].pval); ! 1172: if(inbound) ! 1173: yypvt[-0].pval->varp->vadjdim = 1; ! 1174: yyval.pval = cpexpr(yypvt[-0].pval->varp); } break; ! 1175: case 159: ! 1176: # line 631 "gram.in" ! 1177: { yyval.pval = mknode(TLIST, 0, PNULL, PNULL); } break; ! 1178: case 160: ! 1179: # line 633 "gram.in" ! 1180: { yyval.pval = yypvt[-1].pval; } break; ! 1181: case 161: ! 1182: # line 635 "gram.in" ! 1183: { yyval.pval = mknode(TLIST,0,yypvt[-1].pval,PNULL); } break; ! 1184: case 162: ! 1185: # line 639 "gram.in" ! 1186: { yyval.pval = mkchain(yypvt[-2].pval, mkchain(yypvt[-0].pval, CHNULL) ); } break; ! 1187: case 163: ! 1188: # line 641 "gram.in" ! 1189: { hookup(yypvt[-2].pval, mkchain(yypvt[-0].pval,CHNULL) ); } break; ! 1190: case 164: ! 1191: # line 645 "gram.in" ! 1192: { yyval.pval = esizeof(yypvt[-1].pval->vtype, yypvt[-1].pval->vtypep, yypvt[-1].pval->vdim); ! 1193: frexpr(yypvt[-1].pval); } break; ! 1194: case 165: ! 1195: # line 648 "gram.in" ! 1196: { if(yypvt[-1].pval->attype==TYREAL && yypvt[-1].pval->atprec) ! 1197: yypvt[-1].pval->attype = TYLREAL; ! 1198: yyval.pval = esizeof(yypvt[-1].pval->attype, yypvt[-1].pval->attypep, yypvt[-1].pval->atdim); ! 1199: cfree(yypvt[-1].pval); ! 1200: } break; ! 1201: case 166: ! 1202: # line 654 "gram.in" ! 1203: { yyval.pval = mkint(tailor.ftnsize[FTNINT]/tailor.ftnchwd); } break; ! 1204: case 167: ! 1205: # line 658 "gram.in" ! 1206: { yyval.pval = elenof(yypvt[-1].pval->vtype, yypvt[-1].pval->vtypep, yypvt[-1].pval->vdim); ! 1207: frexpr(yypvt[-1].pval); } break; ! 1208: case 168: ! 1209: # line 661 "gram.in" ! 1210: { yyval.pval = elenof(yypvt[-1].pval->attype, yypvt[-1].pval->attypep, yypvt[-1].pval->atdim); ! 1211: cfree(yypvt[-1].pval); ! 1212: } break; ! 1213: case 169: ! 1214: # line 665 "gram.in" ! 1215: { yyval.pval = mkint(1); } break; ! 1216: case 171: ! 1217: # line 670 "gram.in" ! 1218: { yyval.ival = yypvt[-1].ival; } break; ! 1219: case 174: ! 1220: # line 677 "gram.in" ! 1221: { TEST fprintf(diagfile, "exec done\n"); } break; ! 1222: case 175: ! 1223: # line 681 "gram.in" ! 1224: { yyval.pval = bgnexec(); if(ncases > 0) ncases = 0; } break; ! 1225: case 176: ! 1226: # line 685 "gram.in" ! 1227: { ! 1228: if(yypvt[-2].pval->tag==TCALL) ! 1229: { ! 1230: dclerr("no statement functions in EFL", ! 1231: yypvt[-2].pval->sthead->namep); ! 1232: frexpr(yypvt[-2].pval); ! 1233: frexpr(yypvt[-0].pval); ! 1234: } ! 1235: else exasgn(yypvt[-2].pval,yypvt[-1].ival,yypvt[-0].pval); ! 1236: } break; ! 1237: case 177: ! 1238: # line 696 "gram.in" ! 1239: { exasgn(yypvt[-0].pval, yypvt[-1].ival, mkint(1) ); } break; ! 1240: case 178: ! 1241: # line 698 "gram.in" ! 1242: { excall(yypvt[-0].pval); } break; ! 1243: case 179: ! 1244: # line 700 "gram.in" ! 1245: { excall(yypvt[-0].pval); } break; ! 1246: case 181: ! 1247: # line 703 "gram.in" ! 1248: { TEST fprintf(diagfile, "exec: { stats }\n"); ! 1249: addexec(); } break; ! 1250: case 182: ! 1251: # line 706 "gram.in" ! 1252: { thisexec->labeled = 1; } break; ! 1253: case 183: ! 1254: # line 708 "gram.in" ! 1255: { thisexec->uniffable = 1; popctl(); } break; ! 1256: case 184: ! 1257: # line 710 "gram.in" ! 1258: { thisexec->brnchend = 1; } break; ! 1259: case 185: ! 1260: # line 712 "gram.in" ! 1261: { exio(yypvt[-0].pval, 0); } break; ! 1262: case 186: ! 1263: # line 714 "gram.in" ! 1264: { exnull(); } break; ! 1265: case 187: ! 1266: # line 716 "gram.in" ! 1267: { ! 1268: exnull(); ! 1269: putsii(ICCOMMENT, yypvt[-0].pval); ! 1270: cfree(yypvt[-0].pval); ! 1271: exnull(); ! 1272: } break; ! 1273: case 188: ! 1274: # line 725 "gram.in" ! 1275: { TEST fprintf(diagfile, "exec:empty\n"); } break; ! 1276: case 189: ! 1277: # line 727 "gram.in" ! 1278: { TEST fprintf(diagfile, "exec: continue\n"); } break; ! 1279: case 190: ! 1280: # line 731 "gram.in" ! 1281: { ! 1282: thisexec->copylab = 1; ! 1283: ++blklevel; ! 1284: dclsect = 1; ! 1285: ndecl[blklevel] = 0; ! 1286: nhid [blklevel] = 0; ! 1287: } break; ! 1288: case 191: ! 1289: # line 741 "gram.in" ! 1290: { ! 1291: if(ndecl[blklevel]) unhide(); ! 1292: --blklevel; ! 1293: dclsect = 0; ! 1294: } break; ! 1295: case 192: ! 1296: # line 749 "gram.in" ! 1297: { mklabel(yypvt[-2].pval,YES); } break; ! 1298: case 193: ! 1299: # line 751 "gram.in" ! 1300: { mklabel(mkilab(yypvt[-1].pval),YES); } break; ! 1301: case 194: ! 1302: # line 753 "gram.in" ! 1303: { mklabel(mkilab(yypvt[-3].pval),YES); } break; ! 1304: case 195: ! 1305: # line 755 "gram.in" ! 1306: { brkcase(); mkcase(PNULL,1); } break; ! 1307: case 196: ! 1308: # line 756 "gram.in" ! 1309: { brkcase(); } break; ! 1310: case 198: ! 1311: # line 760 "gram.in" ! 1312: { mkcase(yypvt[-0].pval,1); } break; ! 1313: case 199: ! 1314: # line 762 "gram.in" ! 1315: { mkcase(yypvt[-0].pval,1); } break; ! 1316: case 200: ! 1317: # line 766 "gram.in" ! 1318: { TEST fprintf(diagfile, "if-then-else\n"); ! 1319: i = yypvt[-5].pval->brnchend & yypvt[-0].pval->brnchend; ! 1320: addexec(); ! 1321: yyval.pval = addexec(); ! 1322: thisexec->brnchend = i; ! 1323: TEST fprintf(diagfile, "exec: if(expr) exec else exec\n"); } break; ! 1324: case 201: ! 1325: # line 773 "gram.in" ! 1326: { TEST fprintf(diagfile, "if-then\n"); ! 1327: pushlex = 1; ! 1328: yyclearin; ! 1329: yyval.pval = ifthen(); ! 1330: TEST fprintf(diagfile, "exec: if(expr) exec\n"); } break; ! 1331: case 202: ! 1332: # line 779 "gram.in" ! 1333: { TEST fprintf(diagfile, "repeat done\n"); } break; ! 1334: case 203: ! 1335: # line 781 "gram.in" ! 1336: { TEST fprintf(diagfile, "exec: control exec\n"); yyval.pval = addexec(); } break; ! 1337: case 204: ! 1338: # line 785 "gram.in" ! 1339: { pushctl(STIF,yypvt[-1].pval); } break; ! 1340: case 205: ! 1341: # line 789 "gram.in" ! 1342: { ! 1343: if(thisctl->breaklab == 0) ! 1344: thisctl->breaklab = nextlab(); ! 1345: /* if(thisexec->prevexec->brnchend == 0) */ ! 1346: exgoto(thisctl->breaklab); ! 1347: exlab( indifs[thisctl->indifn] = nextlab() ); ! 1348: } break; ! 1349: case 206: ! 1350: # line 799 "gram.in" ! 1351: { pushctl(STREPEAT, PNULL); } break; ! 1352: case 207: ! 1353: # line 803 "gram.in" ! 1354: { pushlex = 1; ! 1355: yyclearin; ! 1356: yyval.pval = addexec(); ! 1357: exgoto(thisctl->xlab); ! 1358: TEST fprintf(diagfile, " no until\n"); } break; ! 1359: case 208: ! 1360: # line 809 "gram.in" ! 1361: { yyval.pval = addexec(); ! 1362: exnull(); ! 1363: exlab( indifs[thisctl->indifn] = nextlab() ); ! 1364: exifgo(mknode(TNOTOP,OPNOT,yypvt[-1].pval,PNULL), thisctl->xlab); ! 1365: TEST fprintf(diagfile, "until\n"); ! 1366: } break; ! 1367: case 209: ! 1368: # line 818 "gram.in" ! 1369: { exretn(PNULL); } break; ! 1370: case 210: ! 1371: # line 820 "gram.in" ! 1372: { exretn(yypvt[-0].pval); } break; ! 1373: case 212: ! 1374: # line 823 "gram.in" ! 1375: { exgoto(yypvt[-0].ival); } break; ! 1376: case 213: ! 1377: # line 825 "gram.in" ! 1378: { if( !equals(yypvt[-1].pval->namep, "to") ) ! 1379: execerr("go %s ??\n", yypvt[-1].pval->namep); ! 1380: else exgoto(yypvt[-0].ival); ! 1381: } break; ! 1382: case 214: ! 1383: # line 830 "gram.in" ! 1384: { excompgoto(yypvt[-1].pval, yypvt[-0].pval); } break; ! 1385: case 215: ! 1386: # line 832 "gram.in" ! 1387: { if(!equals(yypvt[-2].pval->namep, "to") ) ! 1388: execerr("go %s ??\n", yypvt[-2].pval->namep); ! 1389: else excompgoto(yypvt[-1].pval, yypvt[-0].pval); ! 1390: } break; ! 1391: case 216: ! 1392: # line 839 "gram.in" ! 1393: { yyval.pval = yypvt[-1].pval; } break; ! 1394: case 217: ! 1395: # line 844 "gram.in" ! 1396: { yyval.pval = mkchain(yypvt[-0].ival,CHNULL); } break; ! 1397: case 218: ! 1398: # line 846 "gram.in" ! 1399: { yyval.pval = hookup(yypvt[-2].pval, mkchain(yypvt[-0].ival,CHNULL) ); } break; ! 1400: case 220: ! 1401: # line 851 "gram.in" ! 1402: { yyval.pval = yypvt[-0].pval; } break; ! 1403: case 221: ! 1404: # line 856 "gram.in" ! 1405: { yyval.ival = mklabel(yypvt[-0].pval,NO); } break; ! 1406: case 222: ! 1407: # line 858 "gram.in" ! 1408: { yyval.ival = mklabel(mkilab(yypvt[-0].pval),NO); } break; ! 1409: case 223: ! 1410: # line 860 "gram.in" ! 1411: { yyval.ival = mkcase(yypvt[-0].pval,0); } break; ! 1412: case 224: ! 1413: # line 862 "gram.in" ! 1414: { yyval.ival = mkcase(PNULL,0); } break; ! 1415: case 225: ! 1416: # line 866 "gram.in" ! 1417: { exbrk(yypvt[-0].ival, PNULL, 0); } break; ! 1418: case 226: ! 1419: # line 868 "gram.in" ! 1420: { exbrk(yypvt[-1].ival, yypvt[-0].pval, 0); } break; ! 1421: case 227: ! 1422: # line 870 "gram.in" ! 1423: { exbrk(yypvt[-1].ival, PNULL, yypvt[-0].ival); } break; ! 1424: case 228: ! 1425: # line 872 "gram.in" ! 1426: { exbrk(yypvt[-2].ival,yypvt[-1].pval,yypvt[-0].ival); } break; ! 1427: case 229: ! 1428: # line 874 "gram.in" ! 1429: { exbrk(yypvt[-2].ival,yypvt[-0].pval,yypvt[-1].ival); } break; ! 1430: case 230: ! 1431: # line 877 "gram.in" ! 1432: { yyval.ival = 1; } break; ! 1433: case 231: ! 1434: # line 878 "gram.in" ! 1435: { yyval.ival = 0; } break; ! 1436: case 232: ! 1437: # line 879 "gram.in" ! 1438: { yyval.ival = 0; } break; ! 1439: case 233: ! 1440: # line 882 "gram.in" ! 1441: { yyval.ival = STWHILE; } break; ! 1442: case 234: ! 1443: # line 883 "gram.in" ! 1444: { yyval.ival = STFOR; } break; ! 1445: case 235: ! 1446: # line 884 "gram.in" ! 1447: { yyval.ival = STDO; } break; ! 1448: case 236: ! 1449: # line 885 "gram.in" ! 1450: { yyval.ival = STREPEAT; } break; ! 1451: case 237: ! 1452: # line 886 "gram.in" ! 1453: { yyval.ival = STSWITCH; } break; ! 1454: case 238: ! 1455: # line 887 "gram.in" ! 1456: { yyval.ival = STPROC; } break; ! 1457: case 239: ! 1458: # line 891 "gram.in" ! 1459: { pushctl(STWHILE, yypvt[-1].pval); ! 1460: TEST fprintf(diagfile, "while(expr)\n"); } break; ! 1461: case 240: ! 1462: # line 894 "gram.in" ! 1463: { exlab(thisctl->xlab); ! 1464: if(yypvt[-1].pval) ! 1465: exifgo(mknode(TNOTOP,OPNOT,yypvt[-1].pval,PNULL), ! 1466: thisctl->breaklab = nextlab() ); ! 1467: else exnull(); ! 1468: TEST fprintf(diagfile, "for (forlist)\n"); } break; ! 1469: case 241: ! 1470: # line 901 "gram.in" ! 1471: { pushctl(STSWITCH, simple(LVAL,yypvt[-1].pval)); ! 1472: TEST fprintf(diagfile, "switch (expr)\n"); } break; ! 1473: case 242: ! 1474: # line 904 "gram.in" ! 1475: { pushctl(STDO, yypvt[-0].pval); ! 1476: TEST fprintf(diagfile, "do loop\n"); } break; ! 1477: case 243: ! 1478: # line 909 "gram.in" ! 1479: { yyval.pval = doloop(yypvt[-2].pval, PNULL, PNULL); } break; ! 1480: case 244: ! 1481: # line 911 "gram.in" ! 1482: { yyval.pval = doloop(yypvt[-1].pval, PNULL, PNULL); } break; ! 1483: case 245: ! 1484: # line 913 "gram.in" ! 1485: { yyval.pval = doloop(yypvt[-4].pval, yypvt[-2].pval, PNULL); } break; ! 1486: case 246: ! 1487: # line 915 "gram.in" ! 1488: { yyval.pval = doloop(yypvt[-3].pval, yypvt[-1].pval, PNULL); } break; ! 1489: case 247: ! 1490: # line 917 "gram.in" ! 1491: { yyval.pval = doloop(yypvt[-6].pval,yypvt[-4].pval,yypvt[-2].pval); } break; ! 1492: case 248: ! 1493: # line 919 "gram.in" ! 1494: { yyval.pval = doloop(yypvt[-5].pval,yypvt[-3].pval,yypvt[-1].pval); } break; ! 1495: case 249: ! 1496: # line 923 "gram.in" ! 1497: { pushctl(STFOR, PNULL); } break; ! 1498: case 250: ! 1499: # line 927 "gram.in" ! 1500: { exgoto(thisctl->xlab); ! 1501: exlab(thisctl->nextlab); ! 1502: addexec(); ! 1503: } break; ! 1504: case 251: ! 1505: # line 932 "gram.in" ! 1506: { exgoto(thisctl->xlab); ! 1507: exlab(thisctl->nextlab); ! 1508: addexec(); ! 1509: } break; ! 1510: case 253: ! 1511: # line 942 "gram.in" ! 1512: { addexec(); } break; ! 1513: case 254: ! 1514: # line 944 "gram.in" ! 1515: { addexec(); } break; ! 1516: case 255: ! 1517: # line 947 "gram.in" ! 1518: { yyval.pval = 0; } break; ! 1519: case 257: ! 1520: # line 952 "gram.in" ! 1521: { if(dbgopt) ++dbglevel; } break; ! 1522: case 258: ! 1523: # line 956 "gram.in" ! 1524: { if(dbgopt) --dbglevel; } break; ! 1525: case 259: ! 1526: # line 960 "gram.in" ! 1527: { yyval.pval = mkiost(yypvt[-5].ival, yypvt[-3].pval, yypvt[-1].pval); } break; ! 1528: case 260: ! 1529: # line 963 "gram.in" ! 1530: { yyval.ival = 0; } break; ! 1531: case 261: ! 1532: # line 964 "gram.in" ! 1533: { yyval.ival = 1; } break; ! 1534: case 262: ! 1535: # line 965 "gram.in" ! 1536: { yyval.ival = 2; } break; ! 1537: case 263: ! 1538: # line 966 "gram.in" ! 1539: { yyval.ival = 3; } break; ! 1540: case 265: ! 1541: # line 970 "gram.in" ! 1542: { yyval.pval = NULL; } break; ! 1543: case 266: ! 1544: # line 973 "gram.in" ! 1545: { yyval.pval = mkchain(yypvt[-0].pval,CHNULL); } break; ! 1546: case 267: ! 1547: # line 974 "gram.in" ! 1548: { hookup(yypvt[-2].pval, mkchain(yypvt[-0].pval,CHNULL)); } break; ! 1549: case 268: ! 1550: # line 977 "gram.in" ! 1551: { yyval.pval = mkioitem(yypvt[-0].pval,CNULL); } break; ! 1552: case 269: ! 1553: # line 978 "gram.in" ! 1554: { yyval.pval = mkioitem(yypvt[-2].pval,yypvt[-0].pval); } break; ! 1555: case 270: ! 1556: # line 979 "gram.in" ! 1557: { yyval.pval = mkioitem(PNULL,yypvt[-0].pval); } break; ! 1558: case 271: ! 1559: # line 980 "gram.in" ! 1560: { yyval.pval = mkiogroup(yypvt[-0].pval, CNULL, PNULL); } break; ! 1561: case 272: ! 1562: # line 981 "gram.in" ! 1563: { yyval.pval = mkiogroup(yypvt[-0].pval, CNULL, yypvt[-1].pval); } break; ! 1564: case 273: ! 1565: # line 982 "gram.in" ! 1566: { yyval.pval = mkiogroup(yypvt[-2].pval,yypvt[-0].pval,yypvt[-3].pval); } break; ! 1567: case 274: ! 1568: # line 983 "gram.in" ! 1569: { yyval.pval = mkiogroup(yypvt[-2].pval,yypvt[-0].pval,PNULL); } break; ! 1570: case 275: ! 1571: # line 986 "gram.in" ! 1572: { ++iobrlevel; } break; ! 1573: case 276: ! 1574: # line 987 "gram.in" ! 1575: { --iobrlevel; yyval.pval = yypvt[-1].pval; } break; ! 1576: case 277: ! 1577: # line 991 "gram.in" ! 1578: { yyval.pval = mkformat(yypvt[-0].ival, PNULL, PNULL); } break; ! 1579: case 278: ! 1580: # line 993 "gram.in" ! 1581: { yyval.pval = mkformat(yypvt[-3].ival, yypvt[-1].pval, PNULL); } break; ! 1582: case 279: ! 1583: # line 995 "gram.in" ! 1584: { yyval.pval = mkformat(yypvt[-5].ival,yypvt[-3].pval,yypvt[-1].pval); } break; ! 1585: case 280: ! 1586: # line 997 "gram.in" ! 1587: { yyval.pval = yypvt[-1].pval->leftp; frexpblock(yypvt[-1].pval); } break; ! 1588: case 281: ! 1589: # line 1000 "gram.in" ! 1590: { yyval.ival = yypvt[-1].ival; } break; ! 1591: case 282: ! 1592: # line 1003 "gram.in" ! 1593: { lettneed = YES;} break; ! 1594: case 283: ! 1595: # line 1006 "gram.in" ! 1596: { lettneed = NO; } 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.