Annotation of cci/usr/src/usr.bin/efl/gram.c, revision 1.1.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.