Annotation of cci/usr/src/usr.bin/efl/gram.c, revision 1.1

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

unix.superglobalmegacorp.com

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