# define SEOS 1 # define SCOMMENT 2 # define SLABEL 3 # define SUNKNOWN 4 # define SHOLLERITH 5 # define SICON 6 # define SRCON 7 # define SDCON 8 # define SBITCON 9 # define SOCTCON 10 # define SHEXCON 11 # define STRUE 12 # define SFALSE 13 # define SNAME 14 # define SNAMEEQ 15 # define SFIELD 16 # define SSCALE 17 # define SINCLUDE 18 # define SLET 19 # define SASSIGN 20 # define SAUTOMATIC 21 # define SBACKSPACE 22 # define SBLOCK 23 # define SCALL 24 # define SCHARACTER 25 # define SCLOSE 26 # define SCOMMON 27 # define SCOMPLEX 28 # define SCONTINUE 29 # define SDATA 30 # define SDCOMPLEX 31 # define SDIMENSION 32 # define SDO 33 # define SDOUBLE 34 # define SELSE 35 # define SELSEIF 36 # define SEND 37 # define SENDFILE 38 # define SENDIF 39 # define SENTRY 40 # define SEQUIV 41 # define SEXTERNAL 42 # define SFORMAT 43 # define SFUNCTION 44 # define SGOTO 45 # define SASGOTO 46 # define SCOMPGOTO 47 # define SARITHIF 48 # define SLOGIF 49 # define SIMPLICIT 50 # define SINQUIRE 51 # define SINTEGER 52 # define SINTRINSIC 53 # define SLOGICAL 54 # define SOPEN 55 # define SPARAM 56 # define SPAUSE 57 # define SPRINT 58 # define SPROGRAM 59 # define SPUNCH 60 # define SREAD 61 # define SREAL 62 # define SRETURN 63 # define SREWIND 64 # define SSAVE 65 # define SSTATIC 66 # define SSTOP 67 # define SSUBROUTINE 68 # define STHEN 69 # define STO 70 # define SUNDEFINED 71 # define SWRITE 72 # define SLPAR 73 # define SRPAR 74 # define SEQUALS 75 # define SCOLON 76 # define SCOMMA 77 # define SCURRENCY 78 # define SPLUS 79 # define SMINUS 80 # define SSTAR 81 # define SSLASH 82 # define SPOWER 83 # define SCONCAT 84 # define SAND 85 # define SOR 86 # define SNEQV 87 # define SEQV 88 # define SNOT 89 # define SEQ 90 # define SLT 91 # define SGT 92 # define SLE 93 # define SGE 94 # define SNE 95 # define SDECODE 96 # define SENCODE 97 # line 99 "gram.in" #include "defs" #include "string_defs" #ifdef C_OVERLAY #define yyerror(x) {fprintf(diagfile, "%s\n", x); done(3); exit(3);} #else #define yyerror(x) error(x, 0, 0, FATAL) #endif static int nstars; static int ndim; static int vartype; static ftnint varleng; static struct { ptr lb, ub; } dims[8]; static struct labelblock *labarray[MAXLABLIST]; static int lastwasbranch = NO; static int thiswasbranch = NO; extern ftnint yystno; extern flag intonly; ftnint convci(); double convcd(); struct addrblock *nextdata(), *mkbitcon(); struct constblock *mklogcon(), *mkaddcon(), *mkrealcon(); struct constblock *mkstrcon(), *mkcxcon(); struct listblock *mklist(); struct listblock *mklist(); struct impldoblock *mkiodo(); struct extsym *comblock(); #define yyclearin yychar = -1 #define yyerrok yyerrflag = 0 extern int yychar; extern short yyerrflag; #ifndef YYMAXDEPTH #define YYMAXDEPTH 150 #endif #ifndef YYSTYPE #define YYSTYPE int #endif YYSTYPE yylval, yyval; # define YYERRCODE 256 short yyexca[] ={ -1, 1, 0, -1, -2, 0, -1, 20, 1, 31, -2, 205, -1, 24, 1, 35, -2, 205, -1, 148, 1, 221, -2, 170, -1, 166, 77, 242, -2, 170, -1, 219, 76, 156, -2, 123, -1, 241, 73, 205, -2, 202, -1, 268, 1, 264, -2, 127, -1, 272, 1, 273, 77, 273, -2, 129, -1, 317, 76, 157, -2, 125, -1, 348, 1, 244, 14, 244, 73, 244, 77, 244, -2, 171, -1, 409, 90, 0, 91, 0, 92, 0, 93, 0, 94, 0, 95, 0, -2, 137, -1, 428, 1, 267, 77, 267, -2, 127, -1, 430, 1, 269, 77, 269, -2, 127, -1, 432, 1, 271, 77, 271, -2, 127, -1, 480, 77, 267, -2, 127, }; # define YYNPROD 278 # define YYLAST 1345 short yyact[]={ 233, 230, 447, 449, 448, 235, 389, 441, 395, 199, 390, 290, 225, 347, 248, 440, 346, 187, 270, 276, 105, 5, 307, 114, 459, 17, 261, 126, 240, 295, 191, 198, 181, 267, 202, 195, 197, 116, 95, 326, 180, 119, 208, 255, 259, 110, 324, 325, 326, 305, 271, 102, 446, 96, 97, 98, 463, 445, 53, 43, 487, 86, 269, 58, 101, 91, 101, 127, 44, 253, 254, 255, 118, 153, 117, 153, 516, 88, 128, 129, 130, 131, 101, 133, 54, 55, 56, 47, 300, 101, 89, 514, 496, 299, 90, 498, 59, 85, 419, 111, 81, 461, 49, 87, 462, 436, 60, 435, 122, 485, 511, 84, 160, 161, 324, 325, 326, 332, 331, 330, 329, 328, 434, 333, 335, 334, 337, 336, 338, 147, 183, 184, 118, 292, 117, 82, 83, 182, 185, 361, 426, 263, 186, 190, 416, 260, 401, 237, 438, 288, 153, 439, 420, 252, 153, 419, 292, 239, 392, 211, 382, 393, 387, 383, 153, 220, 212, 215, 217, 216, 210, 368, 272, 272, 272, 367, 156, 157, 158, 159, 153, 366, 352, 154, 155, 101, 251, 264, 205, 172, 226, 236, 236, 112, 277, 278, 279, 280, 281, 109, 108, 284, 285, 162, 164, 274, 275, 171, 107, 376, 106, 294, 377, 265, 287, 104, 349, 293, 286, 350, 266, 321, 309, 168, 322, 315, 219, 323, 490, 304, 303, 399, 490, 301, 394, 218, 518, 323, 504, 503, 502, 339, 497, 313, 247, 252, 500, 494, 153, 489, 160, 161, 249, 153, 153, 153, 153, 153, 252, 252, 310, 311, 345, 469, 246, 400, 471, 323, 101, 314, 317, 418, 323, 320, 4, 272, 296, 188, 302, 101, 340, 242, 238, 252, 342, 343, 222, 219, 196, 344, 209, 207, 371, 163, 169, 135, 139, 319, 468, 228, 170, 353, 372, 373, 374, 362, 391, 101, 363, 364, 386, 323, 323, 100, 103, 323, 206, 375, 323, 221, 397, 323, 115, 378, 340, 379, 479, 263, 160, 161, 253, 254, 255, 256, 101, 404, 370, 148, 201, 166, 29, 323, 93, 323, 323, 323, 160, 161, 324, 325, 326, 153, 252, 153, 323, 6, 252, 252, 252, 252, 252, 250, 245, 340, 99, 421, 153, 424, 272, 272, 272, 80, 121, 226, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 79, 78, 450, 451, 425, 437, 232, 103, 103, 103, 103, 77, 76, 386, 75, 165, 189, 74, 192, 193, 194, 470, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 464, 473, 73, 72, 466, 152, 57, 252, 192, 213, 214, 50, 252, 429, 431, 433, 442, 476, 224, 475, 272, 272, 272, 231, 241, 477, 243, 323, 48, 465, 46, 450, 451, 486, 236, 478, 472, 425, 488, 484, 45, 42, 509, 481, 482, 483, 31, 151, 327, 151, 323, 318, 316, 491, 268, 268, 268, 323, 492, 204, 388, 495, 493, 203, 153, 103, 134, 381, 291, 380, 452, 385, 450, 451, 442, 508, 507, 505, 384, 132, 297, 429, 431, 433, 323, 115, 252, 308, 52, 35, 306, 323, 192, 113, 512, 323, 150, 25, 150, 24, 23, 515, 323, 22, 21, 20, 236, 19, 156, 157, 158, 159, 499, 341, 519, 154, 155, 101, 289, 92, 506, 9, 8, 7, 151, 510, 3, 2, 151, 160, 161, 253, 254, 255, 200, 513, 1, 0, 151, 0, 160, 161, 253, 254, 255, 256, 236, 0, 0, 517, 0, 0, 0, 0, 151, 244, 200, 369, 423, 257, 0, 0, 0, 160, 161, 253, 254, 255, 256, 258, 0, 0, 0, 150, 192, 0, 247, 150, 0, 0, 0, 0, 160, 161, 283, 282, 0, 150, 262, 0, 0, 0, 262, 0, 0, 0, 341, 0, 0, 402, 360, 0, 0, 150, 0, 160, 161, 253, 254, 255, 256, 160, 161, 253, 254, 255, 256, 0, 0, 0, 298, 0, 151, 0, 0, 200, 0, 151, 151, 151, 151, 151, 160, 161, 324, 325, 326, 332, 331, 330, 329, 328, 0, 333, 335, 334, 337, 336, 338, 0, 428, 430, 432, 351, 0, 0, 0, 291, 355, 356, 357, 358, 359, 0, 0, 453, 0, 460, 0, 0, 0, 150, 0, 308, 0, 467, 150, 150, 150, 150, 150, 0, 0, 0, 262, 348, 0, 262, 262, 0, 160, 161, 253, 254, 255, 256, 156, 157, 158, 159, 474, 0, 0, 154, 155, 101, 460, 160, 161, 324, 325, 326, 332, 0, 460, 460, 460, 0, 480, 430, 432, 0, 0, 0, 200, 151, 453, 151, 0, 0, 453, 160, 161, 324, 325, 326, 332, 331, 330, 341, 151, 0, 333, 335, 334, 337, 336, 338, 0, 0, 160, 161, 324, 325, 326, 332, 422, 0, 422, 0, 454, 333, 335, 334, 337, 336, 338, 453, 0, 0, 0, 427, 0, 0, 150, 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 365, 150, 160, 161, 324, 325, 326, 332, 331, 330, 329, 328, 0, 333, 335, 334, 337, 336, 338, 444, 0, 0, 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 454, 417, 0, 0, 454, 0, 160, 161, 324, 325, 326, 332, 331, 330, 329, 328, 0, 333, 335, 334, 337, 336, 338, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 151, 0, 0, 0, 415, 0, 0, 0, 454, 160, 161, 324, 325, 326, 332, 331, 330, 329, 328, 0, 333, 335, 334, 337, 336, 338, 0, 0, 0, 0, 0, 501, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 10, 53, 43, 70, 86, 14, 58, 67, 91, 36, 63, 44, 40, 65, 69, 30, 64, 33, 32, 11, 88, 34, 18, 39, 37, 27, 16, 54, 55, 56, 47, 51, 41, 89, 61, 38, 66, 90, 28, 59, 85, 13, 0, 81, 62, 49, 87, 26, 71, 60, 15, 403, 0, 68, 84, 0, 160, 161, 324, 325, 326, 332, 331, 330, 329, 328, 0, 333, 335, 334, 337, 336, 338, 0, 0, 396, 0, 0, 82, 83, 160, 161, 324, 325, 326, 332, 331, 330, 329, 328, 94, 333, 335, 334, 337, 336, 338, 160, 161, 324, 325, 326, 332, 331, 0, 0, 0, 0, 333, 335, 334, 337, 336, 338, 0, 0, 0, 0, 0, 0, 0, 120, 0, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 136, 137, 0, 0, 138, 0, 140, 141, 142, 0, 0, 143, 144, 145, 0, 146, 156, 157, 158, 159, 0, 0, 0, 154, 155, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 174, 175, 176, 177, 178, 179, 156, 157, 158, 159, 0, 0, 0, 154, 155, 101, 0, 156, 157, 158, 159, 0, 0, 0, 154, 155, 101, 0, 156, 157, 158, 159, 0, 0, 0, 154, 155, 101, 0, 0, 0, 0, 156, 157, 158, 159, 0, 229, 223, 154, 155, 101, 0, 160, 161, 227, 0, 156, 157, 158, 159, 0, 0, 234, 154, 155, 101, 0, 156, 157, 158, 159, 0, 0, 229, 154, 155, 101, 0, 0, 160, 161, 443, 0, 0, 229, 0, 0, 0, 0, 234, 160, 161, 227, 0, 0, 229, 0, 0, 0, 0, 234, 160, 161, 398, 0, 156, 157, 158, 159, 229, 0, 234, 154, 155, 101, 160, 161, 354, 0, 156, 157, 158, 159, 0, 229, 234, 154, 155, 101, 0, 160, 161, 0, 0, 0, 273, 156, 157, 158, 159, 234, 160, 161, 154, 155, 101, 0, 0, 0, 0, 0, 234, 156, 157, 158, 159, 458, 457, 456, 154, 155, 101, 156, 157, 158, 159, 0, 0, 0, 154, 155, 101, 0, 312, 0, 0, 0, 0, 0, 160, 161, 0, 0, 0, 0, 0, 0, 149, 0, 234, 0, 0, 0, 160, 161, 167, 0, 0, 0, 0, 0, 0, 70, 0, 247, 0, 67, 0, 0, 63, 160, 161, 65, 69, 0, 64, 0, 0, 0, 0, 455, 0, 0, 0, 0, 0, 160, 161, 0, 0, 149, 0, 0, 61, 0, 66, 160, 161, 0, 0, 0, 0, 0, 62, 0, 0, 0, 71, 0, 0, 0, 0, 68 }; short yypact[]={ -1000, 18, 354, 902,-1000,-1000,-1000,-1000,-1000,-1000, 337,-1000,-1000,-1000,-1000,-1000,-1000, 320, 293, 138, 133, 131, 123, 122, 22, 116, 50,-1000,-1000,-1000, -1000, 39,-1000,-1000,-1000, -14,-1000,-1000,-1000,-1000, -1000,-1000, 293,-1000,-1000,-1000,-1000,-1000, 223,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,1249, 220,1206, 221, 221, 220, 112,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000, 293, 293, 293, 293,-1000, -1000,-1000, 204,-1000, 293, -10, 293, 293, 293, 215, 265,-1000,-1000, 111,-1000,-1000,-1000,-1000, 302, 218, -1000,-1000,-1000, 217,-1000,-1000,-1000,-1000, 50, 293, 293, 215, 265,-1000, 160, 214, 313,-1000, 213,1065, 1143,1143, 209, 313, 293, 208, 293,-1000,-1000, 171, -1000,-1000, 548,1223,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000, 171, 68, 110,-1000,-1000, 254,1143, 1154,1154,1154,-1000,-1000,-1000,-1000,-1000,-1000, 519, -1000,-1000,-1000, 204, 204, 293, -14,-1000, 75, -14, 22,-1000, 203,-1000,-1000,-1000, 293,-1000, 11,-1000, -1000, 265,-1000, 205,1273, 50, -33, 293, 313,1143, 1192,-1000, 293,-1000,-1000,-1000,-1000,-1000,1143,1143, 227,-1000,1143,-1000, 147,-1000, 569, 313,-1000,1143, -1000,-1000,-1000,1143,1143,-1000, 569,-1000,1143,-1000, -1000, 22, 313,-1000, 627, 142,-1000,1223, 105,-1000, 1128,-1000,1223,1223,1223,1223,1223, -40, 542, 62, 254,-1000,-1000, 254, 254, 62, 727,-1000, 104, 98, 94, 569,-1000,1154,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000, 548,-1000,-1000,-1000, 204, 203,-1000, 135, -1000,-1000,-1000, 203, 293,-1000,-1000, 86,-1000,-1000, 265, 85, 292,-1000,-1000,-1000, 84,-1000, 159,-1000, 921, 569,1114,-1000, 569, 155, 191, 569, 69, 293, 897,-1000,1103,1143,1143,1143,1143,1143,1143,1143, 1143,1143,1143,-1000,-1000,-1000,-1000,-1000,-1000,-1000, 800, 67, -44, 687, 764, 198, 78,-1000,-1000,-1000, 171, 500, 171, 569,-1000, -12, -40, -40, -40, 466, -1000, 254, 62, 63, 62,1223,1154,1154,1154, 45, 30, 28,-1000,-1000,-1000,-1000,-1000, 52,-1000,-1000, 74,1092,-1000, 293, -25,1239,-1000, 265, 27,-1000, -24,-1000,-1000, 293,1143, 293, 229,-1000, 189,1143, 193,1143,-1000, 313,-1000, -35, -44, -44, -44, 644, 668, 668, 938, 687, 267,-1000,1143,-1000, 313, 313, 22,-1000, 548,-1000,-1000,-1000, 254, 249,-1000,-1000, -1000,-1000,-1000,-1000,1154,1154,1154,-1000,-1000,1092, -1000,-1000, 33,-1000,-1000,-1000,1239,-1000,-1000, -21, 707,-1000,-1000,-1000,-1000,1143,-1000,-1000,-1000, 175, 153,-1000, 292, 292,-1000, 569,-1000, 157,-1000,-1000, 173,1143, 569, 15, 168, 21,-1000,1143, 172,1223, 168, 166, 165, 164,-1000,1092,-1000,1239,-1000,-1000, 1143,-1000,-1000,-1000,-1000, 34, 313,-1000,-1000, 569, -1000, 477,-1000,-1000,-1000,-1000, 569,-1000,-1000, 14, 569,1143, -1,-1000,1143, 162, 313, 569,-1000,-1000 }; short yypgo[]={ 0, 552, 543, 542, 539, 538, 537, 535,1010, 38, 40, 32, 17, 25, 295, 534, 11, 523, 521, 520, 519, 516, 515, 513, 509, 41, 506, 27, 29, 505, 504, 42, 50, 8, 30, 37, 20, 35, 496, 439, 495, 36, 31, 494, 487, 2, 4, 3, 0, 1, 486, 23, 22, 9, 24, 485, 483, 15, 7, 16, 13, 28, 34, 479, 476, 475, 6, 10, 468, 467, 299, 390, 464, 5, 421, 264, 340, 462, 458, 457, 456, 446, 444, 434, 427, 12, 422, 419, 129, 418, 401, 44, 399, 398, 223, 396, 33, 395, 385, 384, 19, 371, 362, 14, 361, 26, 62, 18 }; short yyr1[]={ 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 4, 4, 4, 4, 4, 4, 9, 11, 14, 10, 10, 12, 12, 12, 15, 15, 16, 16, 7, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 17, 17, 13, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 27, 27, 27, 18, 18, 18, 18, 35, 35, 19, 19, 20, 20, 21, 21, 37, 38, 38, 22, 22, 40, 41, 44, 43, 43, 45, 45, 46, 46, 46, 46, 24, 24, 51, 51, 26, 26, 52, 34, 53, 53, 42, 42, 28, 28, 56, 55, 55, 57, 57, 58, 58, 59, 59, 60, 61, 23, 23, 62, 65, 63, 64, 64, 66, 66, 67, 25, 68, 68, 69, 69, 32, 32, 32, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 48, 48, 72, 72, 72, 72, 72, 72, 39, 39, 39, 39, 73, 73, 47, 47, 71, 71, 71, 71, 71, 71, 49, 50, 50, 50, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 6, 6, 6, 6, 6, 6, 6, 77, 54, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 79, 80, 80, 80, 80, 36, 36, 82, 83, 83, 85, 85, 84, 84, 78, 78, 8, 31, 33, 81, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 87, 99, 99, 99, 89, 101, 101, 101, 92, 92, 88, 88, 102, 102, 103, 103, 103, 103, 104, 94, 90, 97, 93, 95, 98, 98, 91, 91, 105, 105, 96, 96, 96, 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 100 }; short yyr2[]={ 0, 0, 3, 2, 2, 2, 3, 3, 2, 1, 1, 3, 3, 4, 4, 5, 3, 0, 1, 1, 0, 1, 0, 2, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 5, 5, 5, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, 6, 3, 4, 5, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 0, 4, 0, 2, 3, 1, 3, 1, 2, 1, 1, 1, 3, 1, 1, 1, 3, 3, 2, 1, 5, 1, 3, 0, 3, 0, 2, 3, 1, 3, 1, 1, 1, 3, 1, 1, 3, 3, 4, 0, 2, 1, 3, 1, 3, 1, 0, 0, 1, 1, 3, 1, 3, 1, 1, 1, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 4, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 3, 1, 1, 3, 3, 3, 3, 2, 3, 1, 6, 2, 2, 6, 2, 2, 5, 3, 4, 5, 2, 1, 1, 10, 1, 3, 4, 3, 3, 1, 3, 3, 7, 7, 0, 1, 3, 1, 3, 1, 2, 1, 1, 1, 3, 0, 0, 0, 1, 2, 2, 2, 2, 3, 4, 4, 3, 2, 3, 2, 3, 1, 3, 3, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, 1, 1, 2, 2, 1, 7, 3, 3, 3, 3, 4, 4, 1, 3, 1, 5, 1, 1, 1, 3, 3, 3, 3, 3, 3, 1, 5, 5, 5, 0 }; short yychk[]={ -1000, -1, -2, -3, 256, 3, 1, -4, -5, -6, 18, 37, 4, 59, 23, 68, 44, -13, 40, -17, -18, -19, -20, -21, -22, -23, 65, 43, 56, -76, 33, -77, 36, 35, 39, -29, 27, 42, 53, 41, 30, 50, -79, 20, 29, -80, -81, 48, -82, 63, -84, 49, -30, 19, 45, 46, 47, -86, 24, 57, 67, 52, 62, 28, 34, 31, 54, 25, 71, 32, 21, 66, -87, -89, -90, -93, -95, -97, -98, -99, -101, 61, 96, 97, 72, 58, 22, 64, 38, 51, 55, 26, -7, 5, -8, -9, -9, -9, -9, 44, -14, 14, -11, -14, 77, -36, 77, 77, 77, 77, -36, 77, 77, -24, -51, -14, -35, 84, 82, -25, -8, -76, 69, -8, -8, -8, -27, 81, -25, -25, -25, -25, -40, -25, -39, -14, -8, -8, -8, 73, -8, -8, -8, -8, -8, -8, -8, -88, -75, 73, -39, -71, -74, -48, 12, 13, 5, 6, 7, 8, 79, 80, -88, 73, -88, -92, -75, 81, -94, 73, -94, -88, 77, -8, -8, -8, -8, -8, -8, -8, -10, -11, -10, -11, -11, -9, -25, -12, 73, -14, -35, -34, -14, -14, -14, -37, 73, -41, -42, -53, -39, 73, -62, -63, -65, 77, 14, 73, -31, 73, -31, -34, -35, -14, -14, -37, -41, -62, 75, 73, -61, 6, 73, 74, -83, -85, -32, 81, -70, 73, -49, -39, -71, -48, 89, -73, -32, -73, 73, -60, -61, -14, 73, -14, -74,-102, -75, 73,-103, 81, -104, 15, -48, 81, 82, 83, 84, -74, -74, -91, 77,-105, -39, 73, 77, -91, -32, -96, -70,-106, -107, -32, -49, 73, -96, -96,-100,-100,-100,-100, -100,-100, -74, 81, -12, -12, -11, -27, 74, -15, -16, -14, 81, -27, -36, -28, 73, -38, -39, 82, 77, -42, 73, -13, -51, 82, -26, -52, -14, -60, -32, -32, 73, -34, -32, -73, -68, -32, -69, 70, -32, 74, 77, -48, 81, 82, 83, -72, 88, 87, 86, 85, 84, 90, 92, 91, 94, 93, 95, -60, -32, -70, -32, -32, -32, -36, -59, -60, 74, 74, 77, -74, 77, -32, 81, -74, -74, -74, -74, -74, 74, 77, -91, -91, -91, 77, 77, 77, 77, -70, -106,-107,-100,-100, -12, -28, 74, 77, -28, -34, -55, -56, 74, 77, -43, -44, -53, 77, -64, -66, -67, 14, 74, 77, 75, -33, 74, -33, 81, 76, 74, 77, -14, 74, -85, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, 74, 77, 74, 73, 77, 74,-103, -74, 74,-103,-105, 77, -74, -70,-106, -70,-106, -70,-106, 77, 77, 77, -16, 74, 77, -57, -58, -32, 81, -39, 82, 77, -45, -46, -47, -48, -49, -50, -14, -71, 73, 11, 10, 9, -54, -14, 74, 77, 80, -52, -32, -54, -14, 69, 74, -73, 73, -32, -60, -70, -59, -60, -36, -54, 77, -70, -54, -54, -54, -57, 76, -45, 81, -47, 74, 75, -66, -67, -33, 74, -73, 77, 74, 74, -32, 74, -74, 74, 74, 74, -58, -32, -46, -47, -78, -32, 76, -60, 74, 77, -73, 77, -32, 74, -60 }; short yydef[]={ 1, -2, 0, 0, 9, 10, 2, 3, 4, 5, 0, 216, 8, 17, 17, 17, 17, 0, 0, 30, -2, 32, 33, 34, -2, 36, 37, 39, 122, 180, 216, 0, 216, 216, 216, 56, 122, 122, 122, 122, 76, 122, 0, 216, 216, 192, 193, 216, 195, 216, 216, 216, 44, 200, 216, 216, 216, 219, 216, 212, 213, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 0, 0, 0, 0, 0, 0, 232, 216, 216, 216, 216, 216, 216, 216, 235, 236, 237, 239, 240, 241, 6, 29, 7, 20, 20, 0, 0, 17, 122, 19, 22, 18, 0, 0, 206, 0, 0, 0, 0, 206, 115, 38, 87, 89, 90, 63, 0, 0, 217, 182, 183, 0, 185, 186, 43, 217, 0, 0, 0, 0, 0, 115, 0, 152, 0, 191, 0, 0, 156, 156, 0, 0, 0, 0, 0, 220, -2, 0, 172, 173, 0, 0, 160, 161, 162, 163, 164, 165, 144, 145, 222, 0, 223, 0, -2, 243, 0, 0, 228, 230, 0, 277, 277, 277, 277, 277, 277, 0, 11, 21, 12, 22, 22, 0, 56, 16, 0, 56, 205, 62, 99, 66, 68, 70, 0, 75, 0, 97, 95, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 65, 67, 69, 74, 112, 0, -2, 0, 111, 0, 196, 0, 208, 210, 0, 127, 0, 129, 130, 131, 0, 0, 198, 157, 199, 0, 201, 110, -2, 0, 207, 248, 0, 170, 0, 0, 249, 0, 252, 0, 0, 0, 0, 0, 178, 248, 224, 0, 260, 262, 0, 0, 227, 0, 229, -2, 265, 266, 0, -2, 0, 231, 233, 234, 238, 254, 256, 257, 255, 277, 277, 13, 14, 22, 99, 23, 0, 25, 27, 28, 99, 0, 94, 101, 0, 72, 78, 0, 0, 0, 116, 88, 64, 0, 91, 0, 218, 0, 218, 0, 60, 189, 0, 0, -2, 124, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 147, 148, 149, 150, 151, 211, 0, 127, 136, 142, 0, 0, 0, 108, -2, 245, 0, 0, 0, 250, 251, 174, 175, 176, 177, 179, 244, 0, 226, 0, 225, 0, 0, 0, 0, 127, 0, 0, 258, 259, 15, 41, 24, 0, 42, 61, 0, 0, 71, 0, 0, 0, 98, 0, 0, 117, 119, 121, 40, 0, 0, 0, 0, 57, 0, 156, 154, 0, 190, 0, 209, 132, 133, 134, 135, -2, 138, 139, 140, 141, 143, 128, 0, 187, 0, 0, 205, 247, 248, 171, 246, 261, 0, 0, -2, 268, -2, 270, -2, 272, 0, 0, 0, 26, 100, 0, 102, 104, 107, 106, 73, 77, 0, 79, 81, 83, 0, 85, 86, 158, 159, 0, 167, 168, 169, 0, 152, 114, 0, 0, 92, 93, 181, 0, 184, 218, 0, 156, 126, 0, 127, 0, 109, 0, 0, 0, -2, 0, 0, 0, 103, 0, 80, 0, 84, 96, 0, 118, 120, 58, 153, 0, 0, 166, 203, 204, 263, 0, 274, 275, 276, 105, 107, 82, 83, 188, 214, 156, 0, 253, 0, 0, 0, 215, 155, 194 }; # # define YYFLAG -1000 # define YYERROR goto yyerrlab # define YYACCEPT return(0) # define YYABORT return(1) /* parser for yacc output */ int yydebug = 0; /* 1 for debugging */ YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */ int yychar = -1; /* current input token number */ int yynerrs = 0; /* number of errors */ short yyerrflag = 0; /* error recovery flag */ yyparse() { short yys[YYMAXDEPTH]; short yyj, yym; register YYSTYPE *yypvt; register short yystate, *yyps, yyn; register YYSTYPE *yypv; register short *yyxi; yystate = 0; yychar = -1; yynerrs = 0; yyerrflag = 0; yyps= &yys[-1]; yypv= &yyv[-1]; yystack: /* put a state and value onto the stack */ if( yydebug ) printf( "state %d, char 0%o\n", yystate, yychar ); if( ++yyps> &yys[YYMAXDEPTH] ) { yyerror( "yacc stack overflow" ); return(1); } *yyps = yystate; ++yypv; *yypv = yyval; yynewstate: yyn = yypact[yystate]; if( yyn<= YYFLAG ) goto yydefault; /* simple state */ if( yychar<0 ) if( (yychar=yylex())<0 ) yychar=0; if( (yyn += yychar)<0 || yyn >= YYLAST ) goto yydefault; if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */ yychar = -1; yyval = yylval; yystate = yyn; if( yyerrflag > 0 ) --yyerrflag; goto yystack; } yydefault: /* default state action */ if( (yyn=yydef[yystate]) == -2 ) { if( yychar<0 ) if( (yychar=yylex())<0 ) yychar = 0; /* look through exception table */ for( yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate) ; yyxi += 2 ) ; /* VOID */ while( *(yyxi+=2) >= 0 ){ if( *yyxi == yychar ) break; } if( (yyn = yyxi[1]) < 0 ) return(0); /* accept */ } if( yyn == 0 ){ /* error */ /* error ... attempt to resume parsing */ switch( yyerrflag ){ case 0: /* brand new error */ yyerror( "syntax error" ); yyerrlab: ++yynerrs; case 1: case 2: /* incompletely recovered error ... try again */ yyerrflag = 3; /* find a state where "error" is a legal shift action */ while ( yyps >= yys ) { yyn = yypact[*yyps] + YYERRCODE; if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){ yystate = yyact[yyn]; /* simulate a shift of "error" */ goto yystack; } yyn = yypact[*yyps]; /* the current yyps has no shift onn "error", pop stack */ if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] ); --yyps; --yypv; } /* there is no state on the stack with an error shift ... abort */ yyabort: return(1); case 3: /* no shift yet; clobber input char */ if( yydebug ) printf( "error recovery discards char %d\n", yychar ); if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */ yychar = -1; goto yynewstate; /* try again in the same state */ } } /* reduction by production yyn */ if( yydebug ) printf("reduce %d\n",yyn); yyps -= yyr2[yyn]; yypvt = yypv; yypv -= yyr2[yyn]; yyval = yypv[1]; yym=yyn; /* consult goto table to find next state */ yyn = yyr1[yyn]; yyj = yypgo[yyn] + *yyps + 1; if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]]; switch(yym){ case 3: # line 153 "gram.in" { lastwasbranch = NO; } break; case 5: # line 156 "gram.in" { if(yypvt[-1] && (yypvt[-1]->labelno==dorange)) enddo(yypvt[-1]->labelno); if(lastwasbranch && thislabel==NULL) error("statement cannot be reached",0,0,WARN1); lastwasbranch = thiswasbranch; thiswasbranch = NO; } break; case 6: # line 164 "gram.in" { doinclude( yypvt[-0] ); } break; case 7: # line 166 "gram.in" { lastwasbranch = NO; endproc(); } break; case 8: # line 168 "gram.in" { error("unclassifiable statement",0,0,EXECERR); flline(); } break; case 9: # line 170 "gram.in" { flline(); needkwd = NO; inioctl = NO; yyerrok; yyclearin; } break; case 10: # line 175 "gram.in" { if(yystno != 0) { yyval = thislabel = mklabel(yystno); if( ! headerdone ) puthead(NULL, procclass); if(thislabel->labdefined) error("label %s already defined", convic(thislabel->stateno),0,EXECERR); else { if(thislabel->blklevel!=0 && thislabel->blklevellabtype!=LABFORMAT) error("there is a branch to label %s from outside block", convic( (ftnint) (thislabel->stateno) ),0,WARN1); thislabel->blklevel = blklevel; thislabel->labdefined = YES; if(thislabel->labtype != LABFORMAT) putlabel(thislabel->labelno); } } else yyval = thislabel = NULL; } break; case 11: # line 200 "gram.in" { startproc(yypvt[-0], CLMAIN); } break; case 12: # line 202 "gram.in" { startproc(yypvt[-0], CLBLOCK); } break; case 13: # line 204 "gram.in" { entrypt(CLPROC, TYSUBR, (ftnint) 0, yypvt[-1], yypvt[-0]); } break; case 14: # line 206 "gram.in" { entrypt(CLPROC, TYUNKNOWN, (ftnint) 0, yypvt[-1], yypvt[-0]); } break; case 15: # line 208 "gram.in" { entrypt(CLPROC, yypvt[-4], varleng, yypvt[-1], yypvt[-0]); } break; case 16: # line 210 "gram.in" { if(parstate==OUTSIDE || procclass==CLMAIN || procclass==CLBLOCK) error("misplaced entry statement", 0,0,EXECERR); entrypt(CLENTRY, 0, (ftnint) 0, yypvt[-1], yypvt[-0]); } break; case 17: # line 218 "gram.in" { newproc(); } break; case 18: # line 222 "gram.in" { yyval = newentry(yypvt[-0]); } break; case 19: # line 226 "gram.in" { yyval = mkname(toklen, token); } break; case 20: # line 229 "gram.in" { yyval = NULL; } break; case 22: # line 234 "gram.in" { yyval = 0; } break; case 23: # line 236 "gram.in" { yyval = 0; } break; case 24: # line 238 "gram.in" {yyval = yypvt[-1]; } break; case 25: # line 242 "gram.in" { yyval = (yypvt[-0] ? mkchain(yypvt[-0],0) : 0 ); } break; case 26: # line 244 "gram.in" { if(yypvt[-0]) yypvt[-2] = yyval = hookup(yypvt[-2], mkchain(yypvt[-0],0)); } break; case 27: # line 248 "gram.in" { yypvt[-0]->vstg = STGARG; } break; case 28: # line 250 "gram.in" { yyval = 0; substars = YES; } break; case 29: # line 256 "gram.in" { char *s; s = copyn(toklen+1, token); s[toklen] = '\0'; yyval = s; } break; case 37: # line 271 "gram.in" { saveall = YES; } break; case 39: # line 274 "gram.in" { fmtstmt(thislabel); setfmt(thislabel); } break; case 41: # line 279 "gram.in" { settype(yypvt[-3], yypvt[-4], yypvt[-1]); if(ndim>0) setbound(yypvt[-3],ndim,dims); } break; case 42: # line 283 "gram.in" { settype(yypvt[-2], yypvt[-4], yypvt[-1]); if(ndim>0) setbound(yypvt[-2],ndim,dims); } break; case 43: # line 289 "gram.in" { varleng = yypvt[-0]; } break; case 44: # line 293 "gram.in" { varleng = (yypvt[-0]<0 || yypvt[-0]==TYLONG ? 0 : typesize[yypvt[-0]]); } break; case 45: # line 296 "gram.in" { yyval = TYLONG; } break; case 46: # line 297 "gram.in" { yyval = TYREAL; } break; case 47: # line 298 "gram.in" { yyval = TYCOMPLEX; } break; case 48: # line 299 "gram.in" { yyval = TYDREAL; } break; case 49: # line 300 "gram.in" { yyval = TYDCOMPLEX; } break; case 50: # line 301 "gram.in" { yyval = TYLOGICAL; } break; case 51: # line 302 "gram.in" { yyval = TYCHAR; } break; case 52: # line 303 "gram.in" { yyval = TYUNKNOWN; } break; case 53: # line 304 "gram.in" { yyval = TYUNKNOWN; } break; case 54: # line 305 "gram.in" { yyval = - STGAUTO; } break; case 55: # line 306 "gram.in" { yyval = - STGBSS; } break; case 56: # line 310 "gram.in" { yyval = varleng; } break; case 57: # line 312 "gram.in" { if( ! ISICON(yypvt[-1]) ) { yyval = 0; error("length must be an integer constant", 0, 0, DCLERR); } else yyval = yypvt[-1]->const.ci; } break; case 58: # line 321 "gram.in" { yyval = 0; } break; case 59: # line 325 "gram.in" { incomm( yyval = comblock(0, 0) , yypvt[-0] ); } break; case 60: # line 327 "gram.in" { yyval = yypvt[-1]; incomm(yypvt[-1], yypvt[-0]); } break; case 61: # line 329 "gram.in" { yyval = yypvt[-2]; incomm(yypvt[-2], yypvt[-0]); } break; case 62: # line 331 "gram.in" { incomm(yypvt[-2], yypvt[-0]); } break; case 63: # line 335 "gram.in" { yyval = comblock(0, 0); } break; case 64: # line 337 "gram.in" { yyval = comblock(toklen, token); } break; case 65: # line 341 "gram.in" { setext(yypvt[-0]); } break; case 66: # line 343 "gram.in" { setext(yypvt[-0]); } break; case 67: # line 347 "gram.in" { setintr(yypvt[-0]); } break; case 68: # line 349 "gram.in" { setintr(yypvt[-0]); } break; case 71: # line 357 "gram.in" { struct equivblock *p; if(nequiv >= MAXEQUIV) error("too many equivalences",0,0,FATAL); p = & eqvclass[nequiv++]; p->eqvinit = 0; p->eqvbottom = 0; p->eqvtop = 0; p->equivs = yypvt[-1]; } break; case 72: # line 370 "gram.in" { yyval = ALLOC(eqvchain); yyval->eqvitem = yypvt[-0]; } break; case 73: # line 372 "gram.in" { yyval = ALLOC(eqvchain); yyval->eqvitem = yypvt[-0]; yyval->nextp = yypvt[-2]; } break; case 76: # line 380 "gram.in" { if(parstate == OUTSIDE) { newproc(); startproc(0, CLMAIN); } if(parstate < INDATA) { enddcl(); parstate = INDATA; } } break; case 77: # line 394 "gram.in" { ftnint junk; if(nextdata(&junk,&junk) != NULL) { error("too few initializers",0,0,ERR); curdtp = NULL; } frdata(yypvt[-3]); frrpl(); } break; case 78: # line 405 "gram.in" { toomanyinit = NO; } break; case 81: # line 410 "gram.in" { dataval(NULL, yypvt[-0]); } break; case 82: # line 412 "gram.in" { dataval(yypvt[-2], yypvt[-0]); } break; case 84: # line 417 "gram.in" { if( yypvt[-1]==OPMINUS && ISCONST(yypvt[-0]) ) consnegop(yypvt[-0]); yyval = yypvt[-0]; } break; case 89: # line 430 "gram.in" { int k; yypvt[-0]->vsave = 1; k = yypvt[-0]->vstg; if( ! ONEOF(k, M(STGUNKNOWN)|M(STGBSS)|M(STGINIT)) ) error("can only save static variables", yypvt[-0], 0, DCLERR); } break; case 90: # line 437 "gram.in" { yypvt[-0]->extsave = 1; } break; case 93: # line 445 "gram.in" { if(yypvt[-2]->vclass == CLUNKNOWN) { yypvt[-2]->vclass = CLPARAM; yypvt[-2]->paramval = yypvt[-0]; } else error("cannot make %s parameter", yypvt[-2], 0, DCLERR); } break; case 94: # line 454 "gram.in" { if(ndim>0) setbounds(yypvt[-1], ndim, dims); } break; case 95: # line 458 "gram.in" { ptr np; vardcl(np = yypvt[-0]->namep); if(np->vstg == STGBSS) np->vstg = STGINIT; else if(np->vstg == STGCOMMON) extsymtab[np->vardesc.varno].extinit = YES; else if(np->vstg==STGEQUIV) eqvclass[np->vardesc.varno].eqvinit = YES; else if(np->vstg != STGINIT) error("inconsistent storage classes", np, 0, DCLERR); yyval = mkchain(yypvt[-0], 0); } break; case 96: # line 471 "gram.in" { chainp p; struct impldoblock *q; q = ALLOC(impldoblock); q->tag = TIMPLDO; q->varnp = yypvt[-1]->datap; p = yypvt[-1]->nextp; if(p) { q->implb = p->datap; p = p->nextp; } if(p) { q->impub = p->datap; p = p->nextp; } if(p) { q->impstep = p->datap; p = p->nextp; } frchain( & (yypvt[-1]) ); yyval = mkchain(q, 0); q->datalist = hookup(yypvt[-3], yyval); } break; case 97: # line 486 "gram.in" { curdtp = yypvt[-0]; curdtelt = 0; } break; case 98: # line 488 "gram.in" { yyval = hookup(yypvt[-2], yypvt[-0]); } break; case 99: # line 492 "gram.in" { ndim = 0; } break; case 101: # line 496 "gram.in" { ndim = 0; } break; case 104: # line 501 "gram.in" { dims[ndim].lb = 0; dims[ndim].ub = yypvt[-0]; ++ndim; } break; case 105: # line 506 "gram.in" { dims[ndim].lb = yypvt[-2]; dims[ndim].ub = yypvt[-0]; ++ndim; } break; case 106: # line 513 "gram.in" { yyval = 0; } break; case 108: # line 518 "gram.in" { nstars = 1; labarray[0] = yypvt[-0]; } break; case 109: # line 520 "gram.in" { if(nstars < MAXLABLIST) labarray[nstars++] = yypvt[-0]; } break; case 110: # line 524 "gram.in" { if(yypvt[-0]->labinacc) error("illegal branch to inner block, statement %s", convic( (ftnint) (yypvt[-0]->stateno) ),0,WARN1); else if(yypvt[-0]->labdefined == NO) yypvt[-0]->blklevel = blklevel; yypvt[-0]->labused = YES; } break; case 111: # line 534 "gram.in" { yyval = mklabel( convci(toklen, token) ); } break; case 115: # line 544 "gram.in" { needkwd = 1; } break; case 116: # line 545 "gram.in" { vartype = yypvt[-0]; } break; case 119: # line 553 "gram.in" { setimpl(vartype, varleng, yypvt[-0], yypvt[-0]); } break; case 120: # line 555 "gram.in" { setimpl(vartype, varleng, yypvt[-2], yypvt[-0]); } break; case 121: # line 559 "gram.in" { if(toklen!=1 || token[0]<'a' || token[0]>'z') { error("implicit item must be single letter", 0, 0, DCLERR); yyval = 0; } else yyval = token[0]; } break; case 122: # line 569 "gram.in" { switch(parstate) { case OUTSIDE: newproc(); startproc(0, CLMAIN); case INSIDE: parstate = INDCL; case INDCL: break; default: error("declaration among executables", 0, 0, DCLERR); } } break; case 123: # line 582 "gram.in" { yyval = 0; } break; case 125: # line 587 "gram.in" { yyval = mkchain(yypvt[-0], 0); } break; case 126: # line 589 "gram.in" { yyval = hookup(yypvt[-2], mkchain(yypvt[-0],0) ); } break; case 128: # line 594 "gram.in" { yyval = yypvt[-1]; } break; case 132: # line 601 "gram.in" { yyval = mkexpr(yypvt[-1], yypvt[-2], yypvt[-0]); } break; case 133: # line 603 "gram.in" { yyval = mkexpr(OPSTAR, yypvt[-2], yypvt[-0]); } break; case 134: # line 605 "gram.in" { yyval = mkexpr(OPSLASH, yypvt[-2], yypvt[-0]); } break; case 135: # line 607 "gram.in" { yyval = mkexpr(OPPOWER, yypvt[-2], yypvt[-0]); } break; case 136: # line 609 "gram.in" { if(yypvt[-1] == OPMINUS) yyval = mkexpr(OPNEG, yypvt[-0], 0); else yyval = yypvt[-0]; } break; case 137: # line 614 "gram.in" { yyval = mkexpr(yypvt[-1], yypvt[-2], yypvt[-0]); } break; case 138: # line 616 "gram.in" { yyval = mkexpr(OPEQV, yypvt[-2],yypvt[-0]); } break; case 139: # line 618 "gram.in" { yyval = mkexpr(OPNEQV, yypvt[-2], yypvt[-0]); } break; case 140: # line 620 "gram.in" { yyval = mkexpr(OPOR, yypvt[-2], yypvt[-0]); } break; case 141: # line 622 "gram.in" { yyval = mkexpr(OPAND, yypvt[-2], yypvt[-0]); } break; case 142: # line 624 "gram.in" { yyval = mkexpr(OPNOT, yypvt[-0], 0); } break; case 143: # line 626 "gram.in" { yyval = mkexpr(OPCONCAT, yypvt[-2], yypvt[-0]); } break; case 144: # line 629 "gram.in" { yyval = OPPLUS; } break; case 145: # line 630 "gram.in" { yyval = OPMINUS; } break; case 146: # line 633 "gram.in" { yyval = OPEQ; } break; case 147: # line 634 "gram.in" { yyval = OPGT; } break; case 148: # line 635 "gram.in" { yyval = OPLT; } break; case 149: # line 636 "gram.in" { yyval = OPGE; } break; case 150: # line 637 "gram.in" { yyval = OPLE; } break; case 151: # line 638 "gram.in" { yyval = OPNE; } break; case 152: # line 642 "gram.in" { yyval = mkprim(yypvt[-0], 0, 0, 0); } break; case 153: # line 644 "gram.in" { yyval = mkprim(yypvt[-5], 0, yypvt[-3], yypvt[-1]); } break; case 154: # line 646 "gram.in" { yyval = mkprim(yypvt[-3], mklist(yypvt[-1]), 0, 0); } break; case 155: # line 648 "gram.in" { yyval = mkprim(yypvt[-8], mklist(yypvt[-6]), yypvt[-3], yypvt[-1]); } break; case 156: # line 652 "gram.in" { yyval = 0; } break; case 158: # line 657 "gram.in" { if(yypvt[-0]->vclass == CLPARAM) yyval = cpexpr(yypvt[-0]->paramval); } break; case 160: # line 663 "gram.in" { yyval = mklogcon(1); } break; case 161: # line 664 "gram.in" { yyval = mklogcon(0); } break; case 162: # line 665 "gram.in" { yyval = mkstrcon(toklen, token); } break; case 163: # line 666 "gram.in" { yyval = mkintcon( convci(toklen, token) ); } break; case 164: # line 667 "gram.in" { yyval = mkrealcon(TYREAL, convcd(toklen, token)); } break; case 165: # line 668 "gram.in" { yyval = mkrealcon(TYDREAL, convcd(toklen, token)); } break; case 166: # line 672 "gram.in" { yyval = mkcxcon(yypvt[-3],yypvt[-1]); } break; case 167: # line 676 "gram.in" { yyval = mkbitcon(4, toklen, token); } break; case 168: # line 678 "gram.in" { yyval = mkbitcon(3, toklen, token); } break; case 169: # line 680 "gram.in" { yyval = mkbitcon(1, toklen, token); } break; case 171: # line 685 "gram.in" { yyval = yypvt[-1]; } break; case 174: # line 691 "gram.in" { yyval = mkexpr(yypvt[-1], yypvt[-2], yypvt[-0]); } break; case 175: # line 693 "gram.in" { yyval = mkexpr(OPSTAR, yypvt[-2], yypvt[-0]); } break; case 176: # line 695 "gram.in" { yyval = mkexpr(OPSLASH, yypvt[-2], yypvt[-0]); } break; case 177: # line 697 "gram.in" { yyval = mkexpr(OPPOWER, yypvt[-2], yypvt[-0]); } break; case 178: # line 699 "gram.in" { if(yypvt[-1] == OPMINUS) yyval = mkexpr(OPNEG, yypvt[-0], 0); else yyval = yypvt[-0]; } break; case 179: # line 704 "gram.in" { yyval = mkexpr(OPCONCAT, yypvt[-2], yypvt[-0]); } break; case 181: # line 708 "gram.in" { if(yypvt[-2]->labdefined) error("no backward DO loops",0,0,EXECERR); yypvt[-2]->blklevel = blklevel+1; exdo(yypvt[-2]->labelno, yypvt[-0]); } break; case 182: # line 715 "gram.in" { exendif(); thiswasbranch = NO; } break; case 184: # line 718 "gram.in" { exelif(yypvt[-2]); } break; case 185: # line 720 "gram.in" { exelse(); } break; case 186: # line 722 "gram.in" { exendif(); } break; case 187: # line 726 "gram.in" { exif(yypvt[-1]); } break; case 188: # line 730 "gram.in" { yyval = mkchain(yypvt[-2], yypvt[-0]); } break; case 189: # line 734 "gram.in" { exequals(yypvt[-2], yypvt[-0]); } break; case 190: # line 736 "gram.in" { exassign(yypvt[-0], yypvt[-2]); } break; case 193: # line 740 "gram.in" { inioctl = NO; } break; case 194: # line 742 "gram.in" { exarif(yypvt[-6], yypvt[-4], yypvt[-2], yypvt[-0]); thiswasbranch = YES; } break; case 195: # line 744 "gram.in" { excall(yypvt[-0], 0, 0, labarray); } break; case 196: # line 746 "gram.in" { excall(yypvt[-2], 0, 0, labarray); } break; case 197: # line 748 "gram.in" { if(nstars < MAXLABLIST) excall(yypvt[-3], mklist(yypvt[-1]), nstars, labarray); else error("too many alternate returns",0,0,ERR); } break; case 198: # line 754 "gram.in" { exreturn(yypvt[-0]); thiswasbranch = YES; } break; case 199: # line 756 "gram.in" { exstop(yypvt[-2], yypvt[-0]); thiswasbranch = yypvt[-2]; } break; case 200: # line 760 "gram.in" { if(parstate == OUTSIDE) { newproc(); startproc(0, CLMAIN); } } break; case 201: # line 769 "gram.in" { exgoto(yypvt[-0]); thiswasbranch = YES; } break; case 202: # line 771 "gram.in" { exasgoto(yypvt[-0]); thiswasbranch = YES; } break; case 203: # line 773 "gram.in" { exasgoto(yypvt[-4]); thiswasbranch = YES; } break; case 204: # line 775 "gram.in" { if(nstars < MAXLABLIST) putcmgo(fixtype(yypvt[-0]), nstars, labarray); else error("computed GOTO list too long",0,0,ERR); } break; case 207: # line 787 "gram.in" { nstars = 0; yyval = yypvt[-0]; } break; case 208: # line 791 "gram.in" { yyval = (yypvt[-0] ? mkchain(yypvt[-0],0) : 0); } break; case 209: # line 793 "gram.in" { if(yypvt[-0]) if(yypvt[-2]) yyval = hookup(yypvt[-2], mkchain(yypvt[-0],0)); else yyval = mkchain(yypvt[-0],0); } break; case 211: # line 801 "gram.in" { if(nstars