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

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

unix.superglobalmegacorp.com

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