Annotation of researchv8dc/cmd/efl/gram.c, revision 1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.