Annotation of cci/usr/src/usr.bin/sf77/gram.c, revision 1.1.1.1

1.1       root        1: # define SEOS 1
                      2: # define SCOMMENT 2
                      3: # define SLABEL 3
                      4: # define SUNKNOWN 4
                      5: # define SHOLLERITH 5
                      6: # define SICON 6
                      7: # define SRCON 7
                      8: # define SDCON 8
                      9: # define SBITCON 9
                     10: # define SOCTCON 10
                     11: # define SHEXCON 11
                     12: # define STRUE 12
                     13: # define SFALSE 13
                     14: # define SNAME 14
                     15: # define SNAMEEQ 15
                     16: # define SFIELD 16
                     17: # define SSCALE 17
                     18: # define SINCLUDE 18
                     19: # define SLET 19
                     20: # define SASSIGN 20
                     21: # define SAUTOMATIC 21
                     22: # define SBACKSPACE 22
                     23: # define SBLOCK 23
                     24: # define SCALL 24
                     25: # define SCHARACTER 25
                     26: # define SCLOSE 26
                     27: # define SCOMMON 27
                     28: # define SCOMPLEX 28
                     29: # define SCONTINUE 29
                     30: # define SDATA 30
                     31: # define SDCOMPLEX 31
                     32: # define SDIMENSION 32
                     33: # define SDO 33
                     34: # define SDOUBLE 34
                     35: # define SELSE 35
                     36: # define SELSEIF 36
                     37: # define SEND 37
                     38: # define SENDFILE 38
                     39: # define SENDIF 39
                     40: # define SENTRY 40
                     41: # define SEQUIV 41
                     42: # define SEXTERNAL 42
                     43: # define SFORMAT 43
                     44: # define SFUNCTION 44
                     45: # define SGOTO 45
                     46: # define SASGOTO 46
                     47: # define SCOMPGOTO 47
                     48: # define SARITHIF 48
                     49: # define SLOGIF 49
                     50: # define SIMPLICIT 50
                     51: # define SINQUIRE 51
                     52: # define SINTEGER 52
                     53: # define SINTRINSIC 53
                     54: # define SLOGICAL 54
                     55: # define SNAMELIST 55
                     56: # define SOPEN 56
                     57: # define SPARAM 57
                     58: # define SPAUSE 58
                     59: # define SPRINT 59
                     60: # define SPROGRAM 60
                     61: # define SPUNCH 61
                     62: # define SREAD 62
                     63: # define SREAL 63
                     64: # define SRETURN 64
                     65: # define SREWIND 65
                     66: # define SSAVE 66
                     67: # define SSTATIC 67
                     68: # define SSTOP 68
                     69: # define SSUBROUTINE 69
                     70: # define STHEN 70
                     71: # define STO 71
                     72: # define SUNDEFINED 72
                     73: # define SWRITE 73
                     74: # define SLPAR 74
                     75: # define SRPAR 75
                     76: # define SEQUALS 76
                     77: # define SCOLON 77
                     78: # define SCOMMA 78
                     79: # define SCURRENCY 79
                     80: # define SPLUS 80
                     81: # define SMINUS 81
                     82: # define SSTAR 82
                     83: # define SSLASH 83
                     84: # define SPOWER 84
                     85: # define SCONCAT 85
                     86: # define SAND 86
                     87: # define SOR 87
                     88: # define SNEQV 88
                     89: # define SEQV 89
                     90: # define SNOT 90
                     91: # define SEQ 91
                     92: # define SLT 92
                     93: # define SGT 93
                     94: # define SLE 94
                     95: # define SGE 95
                     96: # define SNE 96
                     97: 
                     98: # line 98 "gram.in"
                     99: #      include "defs"
                    100: 
                    101: #ifdef SDB
                    102: #      include <a.out.h>
                    103: char *stabline();
                    104: #      ifdef UCBVAXASM
                    105:                char *stabdline();
                    106: #      endif
                    107: 
                    108: #      ifndef N_SO
                    109: #              include <stab.h>
                    110: #      endif
                    111: #endif
                    112: 
                    113: static int nstars;
                    114: static int ndim;
                    115: static int vartype;
                    116: static ftnint varleng;
                    117: static struct { expptr lb, ub; } dims[MAXDIM+1];
                    118: static struct Labelblock *labarray[MAXLABLIST];
                    119: static int lastwasbranch = NO;
                    120: static int thiswasbranch = NO;
                    121: extern ftnint yystno;
                    122: extern flag intonly;
                    123: 
                    124: ftnint convci();
                    125: double convcd();
                    126: Addrp nextdata();
                    127: expptr mklogcon(), mkaddcon(), mkrealcon(), mkstrcon(), mkbitcon();
                    128: expptr mkcxcon();
                    129: struct Listblock *mklist();
                    130: struct Listblock *mklist();
                    131: struct Impldoblock *mkiodo();
                    132: struct Extsym *comblock();
                    133: 
                    134: 
                    135: # line 137 "gram.in"
                    136: typedef union  {
                    137:        int ival;
                    138:        char *charpval;
                    139:        chainp chval;
                    140:        tagptr tagval;
                    141:        expptr expval;
                    142:        struct Labelblock *labval;
                    143:        struct Nameblock *namval;
                    144:        struct Eqvchain *eqvval;
                    145:        struct Extsym *extval;
                    146:        } YYSTYPE;
                    147: #define yyclearin yychar = -1
                    148: #define yyerrok yyerrflag = 0
                    149: extern int yychar;
                    150: extern short yyerrflag;
                    151: #ifndef YYMAXDEPTH
                    152: #define YYMAXDEPTH 150
                    153: #endif
                    154: YYSTYPE yylval, yyval;
                    155: # define YYERRCODE 256
                    156: short yyexca[] ={
                    157: -1, 1,
                    158:        0, -1,
                    159:        -2, 0,
                    160: -1, 20,
                    161:        1, 31,
                    162:        -2, 214,
                    163: -1, 24,
                    164:        1, 35,
                    165:        -2, 214,
                    166: -1, 148,
                    167:        1, 230,
                    168:        -2, 178,
                    169: -1, 168,
                    170:        1, 251,
                    171:        78, 251,
                    172:        -2, 178,
                    173: -1, 218,
                    174:        77, 164,
                    175:        -2, 130,
                    176: -1, 240,
                    177:        74, 214,
                    178:        -2, 211,
                    179: -1, 266,
                    180:        1, 272,
                    181:        -2, 134,
                    182: -1, 270,
                    183:        1, 281,
                    184:        78, 281,
                    185:        -2, 136,
                    186: -1, 315,
                    187:        77, 165,
                    188:        -2, 132,
                    189: -1, 345,
                    190:        1, 253,
                    191:        14, 253,
                    192:        74, 253,
                    193:        78, 253,
                    194:        -2, 179,
                    195: -1, 407,
                    196:        91, 0,
                    197:        92, 0,
                    198:        93, 0,
                    199:        94, 0,
                    200:        95, 0,
                    201:        96, 0,
                    202:        -2, 144,
                    203: -1, 424,
                    204:        1, 275,
                    205:        78, 275,
                    206:        -2, 134,
                    207: -1, 426,
                    208:        1, 277,
                    209:        78, 277,
                    210:        -2, 134,
                    211: -1, 428,
                    212:        1, 279,
                    213:        78, 279,
                    214:        -2, 134,
                    215: -1, 479,
                    216:        78, 275,
                    217:        -2, 134,
                    218:        };
                    219: # define YYNPROD 286
                    220: # define YYLAST 1293
                    221: short yyact[]={
                    222: 
                    223:  232, 269, 446, 229, 386, 393, 445, 444, 385, 438,
                    224:  267, 437, 343, 261, 196, 344, 313, 285, 126, 224,
                    225:   98, 217, 456, 247, 184, 114, 304, 268,   5, 265,
                    226:   17, 199, 192, 116, 288, 194, 323, 177, 178, 206,
                    227:  118, 104, 117, 255, 119, 109, 302, 300, 231, 162,
                    228:  163, 321, 322, 323, 329, 188, 102, 100, 112, 486,
                    229:  330, 332, 331, 334, 333, 335, 162, 163, 321, 322,
                    230:  323, 259, 102,  93, 127, 155, 443, 155, 321, 322,
                    231:  323, 442, 128, 129, 130, 131, 135, 133,  94,  95,
                    232:   96, 461, 484, 489, 511, 162, 163, 321, 322, 323,
                    233:  329, 328, 327, 326, 325, 101, 330, 332, 331, 334,
                    234:  333, 335, 102, 398, 115, 162, 163, 321, 322, 323,
                    235:  329, 328, 327, 153, 287, 153, 330, 332, 331, 334,
                    236:  333, 335, 179, 283, 180, 181,  97, 510, 187, 421,
                    237:  287, 225, 235, 235, 162, 163, 253, 254, 255, 256,
                    238:  497, 459, 155, 417, 460, 252, 155, 234, 236, 238,
                    239:  435, 495, 210, 436, 213, 215, 155, 208, 214, 102,
                    240:   99, 182, 263, 227, 270, 270, 260, 155,  99, 462,
                    241:  101, 101, 101, 101, 209, 183, 253, 254, 255, 432,
                    242:  186, 295, 189, 190, 191, 418, 294, 431, 417, 202,
                    243:  153, 272, 430, 358, 153, 279, 280, 423, 290, 307,
                    244:  308, 414, 399, 297, 153, 189, 211, 212, 311, 383,
                    245:  315, 281, 306, 317, 291, 153, 320, 364, 282, 301,
                    246:  337, 240, 299, 242, 339, 340, 320, 363, 118, 341,
                    247:  117, 362, 336, 390, 252, 378, 391, 155, 379, 264,
                    248:  273, 203, 349, 155, 155, 155, 155, 155, 252, 252,
                    249:  372, 342, 346, 373, 318, 347, 310, 319, 171, 101,
                    250:  320, 110, 286, 337, 108, 270, 107, 106, 252, 357,
                    251:  105,   4, 366, 103, 162, 163, 253, 254, 255, 256,
                    252:  115, 218, 305, 489, 392, 153, 216, 189, 502, 367,
                    253:  501, 153, 153, 153, 153, 153, 370, 374, 320, 320,
                    254:  382, 337, 320, 500, 395, 496, 320, 371, 320, 499,
                    255:  245, 225, 403, 404, 405, 406, 407, 408, 409, 410,
                    256:  411, 412, 359, 494, 488, 360, 361, 468, 320, 402,
                    257:  320, 320, 320, 397, 266, 266, 377, 470, 155, 252,
                    258:  320, 416, 316, 252, 252, 252, 252, 252, 162, 163,
                    259:  253, 254, 255, 256, 289, 185, 270, 270, 270, 298,
                    260:  241, 419, 422, 425, 427, 429, 237, 189, 439, 221,
                    261:  147, 218, 447, 193, 207, 448, 205, 389, 154, 102,
                    262:  433, 434, 102, 165, 464, 148, 153, 168, 457, 139,
                    263:  235, 472, 338, 400, 320, 320, 320, 320, 320, 320,
                    264:  320, 320, 320, 320, 467, 471, 465, 473, 463, 469,
                    265:  102, 252, 387, 204, 274, 275, 276, 239,  30, 475,
                    266:  451, 230, 220, 476, 270, 270, 270, 422, 439, 477,
                    267:  320, 425, 427, 429, 447, 365, 478, 448, 483, 263,
                    268:  487, 485, 198, 480, 481, 482, 164, 166, 170,  91,
                    269:  286, 121,   6, 244,  80, 320, 491,  79, 450, 490,
                    270:  458,  78, 235, 320, 493,  77, 134, 167, 305, 498,
                    271:  466,  76,  75, 338,  74,  59, 504, 447,  48, 506,
                    272:  448, 508, 451, 505, 503,  47, 451,  44,  32, 320,
                    273:  162, 163, 253, 254, 255, 320, 152, 111, 152, 320,
                    274:  458, 509, 512, 320, 201, 345, 384, 458, 458, 458,
                    275:  162, 163, 253, 254, 255, 256, 200, 513, 368, 369,
                    276:  450, 376, 375, 381, 450, 451, 424, 426, 428, 380,
                    277:  243, 197, 132, 303, 257, 113,  26,  25,  24, 492,
                    278:   23,  22,  21,   9, 258, 162, 163, 321, 322, 323,
                    279:  329, 328,   8,   7, 197, 277, 330, 332, 331, 334,
                    280:  333, 335,   2, 450, 162, 163, 321, 322, 323, 329,
                    281:  292,  20, 449, 152,  50, 507, 284, 152, 474, 223,
                    282:  314, 312, 158, 159, 160, 161, 388, 152, 262, 156,
                    283:  157, 102, 296, 195, 479, 426, 428,  90, 152, 250,
                    284:   52, 324,  19,  54, 158, 159, 160, 161, 455, 454,
                    285:  453, 156, 157, 102,  36, 293, 338, 219,   3,   1,
                    286:  197,   0,   0,   0,   0, 348,   0,   0,   0,   0,
                    287:    0, 352, 353, 354, 355, 356, 415,   0,   0,   0,
                    288:    0, 162, 163, 321, 322, 323, 329, 328, 327, 326,
                    289:  325,   0, 330, 332, 331, 334, 333, 335,   0,   0,
                    290:    0,   0,   0,   0,   0,   0,   0,   0, 152,   0,
                    291:    0,   0,   0, 452, 152, 152, 152, 152, 152, 162,
                    292:  163,   0, 262, 413,   0, 262, 262,   0, 162, 163,
                    293:  321, 322, 323, 329, 328, 327, 326, 325,   0, 330,
                    294:  332, 331, 334, 333, 335,   0,   0,   0,   0,   0,
                    295:    0,   0,   0,   0,   0,   0,   0, 197,   0,   0,
                    296:    0,   0, 401,   0,   0,   0, 420, 162, 163, 321,
                    297:  322, 323, 329, 328, 327, 326, 325,   0, 330, 332,
                    298:  331, 334, 333, 335, 394,   0,   0,   0,   0, 162,
                    299:  163, 321, 322, 323, 329, 328, 327, 326, 325,   0,
                    300:  330, 332, 331, 334, 333, 335,   0,   0,   0, 152,
                    301:  162, 163, 321, 322, 323, 329, 328, 327, 326, 325,
                    302:  262, 330, 332, 331, 334, 333, 335,  72,   0,   0,
                    303:    0,  69,   0,   0,  65,   0,   0,  67,  71,   0,
                    304:   66, 441,   0,   0,   0, 197,   0,   0,   0,   0,
                    305:    0,   0,   0,   0,   0,   0,   0,   0,  63,   0,
                    306:   68,   0,   0,   0,   0,   0,   0,   0,   0,  64,
                    307:    0,   0,  12,  73, 158, 159, 160, 161,  70,   0,
                    308:    0, 156, 157, 102,   0, 262,  10,  55,  45,  72,
                    309:   84,  14,  60,  69,  89,  37,  65,  46,  41,  67,
                    310:   71,  31,  66,  34,  33,  11,  86,  35,  18,  40,
                    311:   38,  28,  16,  56,  57,  58,  49,  53,  42,  87,
                    312:   63,  39,  68,  43,  88,  29,  61,  83,  13,   0,
                    313:   81,  64,  51,  85,  27,  73,  62,  15,  92,   0,
                    314:   70,  82,   0, 228,   0,   0,   0,   0,   0, 162,
                    315:  163, 350,   0, 351, 158, 159, 160, 161,   0, 233,
                    316:    0, 156, 157, 102,   0,   0,   0,   0,   0,   0,
                    317:  120,   0, 123, 124, 125,   0,   0,   0,   0,   0,
                    318:    0,   0,   0,   0, 136, 137,   0,   0, 138,   0,
                    319:  140, 141, 142,   0,   0, 143, 144, 145,   0, 146,
                    320:  158, 159, 160, 161,   0,   0,   0, 156, 157, 102,
                    321:    0,   0,   0,   0,   0,   0,   0,   0, 172, 173,
                    322:  174, 175, 176, 228, 222, 158, 159, 160, 161, 162,
                    323:  163, 226, 156, 157, 102,   0,   0,   0,   0, 233,
                    324:  158, 159, 160, 161,   0,   0,   0, 156, 157, 102,
                    325:    0, 158, 159, 160, 161,   0,   0,   0, 156, 157,
                    326:  102,   0,   0, 158, 159, 160, 161,   0,   0, 228,
                    327:  156, 157, 102,   0,   0, 162, 163, 440,   0,   0,
                    328:  158, 159, 160, 161,   0, 233,   0, 156, 157, 102,
                    329:    0,   0,   0,   0, 228,   0,   0,   0,   0,   0,
                    330:  162, 163, 226,   0, 158, 159, 160, 161,   0, 228,
                    331:  233, 156, 157, 102, 251, 162, 163, 396,   0,   0,
                    332:  228, 158, 159, 160, 161, 233, 162, 163, 156, 157,
                    333:  102,   0, 271,   0,   0,   0, 233,   0, 162, 163,
                    334:    0,   0,   0,   0,   0,   0,   0,   0, 233, 309,
                    335:  158, 159, 160, 161,   0, 162, 163, 156, 157, 102,
                    336:    0,   0,   0,   0,   0, 233,   0, 158, 159, 160,
                    337:  161,   0,   0, 246, 156, 157, 102,   0,   0, 162,
                    338:  163, 248,   0, 249,  55,  45,   0,  84,   0,  60,
                    339:  151,  89,   0,   0,  46,   0, 162, 163, 149,   0,
                    340:  150,   0,   0,  86,   0,   0,   0,   0,   0,   0,
                    341:   56,  57,  58,  49,   0,   0,  87,   0,   0, 246,
                    342:    0,  88,   0,  61,  83, 162, 163,  81,   0,  51,
                    343:   85,   0,   0,  62,   0, 122, 246,   0,  82,   0,
                    344:    0,   0, 162, 163, 278, 158, 159, 160, 161,   0,
                    345:    0,   0, 156, 157, 102,   0,   0,   0,   0,   0,
                    346:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
                    347:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
                    348:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
                    349:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
                    350:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
                    351:    0,   0,   0,   0, 151,   0,   0,   0,   0,   0,
                    352:  162, 163, 169 };
                    353: short yypact[]={
                    354: 
                    355: -1000,  25, 461, 838,-1000,-1000,-1000,-1000,-1000,-1000,
                    356:  454,-1000,-1000,-1000,-1000,-1000,-1000,  92, 406, 205,
                    357:  202, 199, 198, 196, 100, 193, -25, 155,-1000,-1000,
                    358: -1000,-1000,1135,-1000,-1000,-1000,  -8,-1000,-1000,-1000,
                    359: -1000,-1000,-1000,-1000, 406,-1000,-1000,-1000,-1000,-1000,
                    360:  325,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
                    361: -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
                    362: -1000,-1000,-1000,-1000,1086, 319,1210, 319, 190,-1000,
                    363: -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
                    364: -1000,-1000,-1000, 406, 406, 406, 406,-1000, 406,-1000,
                    365:  291,-1000,-1000, 406, -43, 406, 406, 406, 309, 378,
                    366: -1000,-1000, 406, 173,-1000,-1000,-1000,-1000, 409, 312,
                    367: -1000,-1000,-1000, 310,-1000,-1000,-1000,-1000, 155, 406,
                    368:  406, 309, 378,-1000, 220, 307, 426,-1000, 305, 919,
                    369: 1016,1016, 302, 421, 406, 296, 406,-1000,-1000,-1000,
                    370: -1000,1069,-1000,-1000, 278,1115,-1000,-1000,-1000,-1000,
                    371: -1000,-1000,-1000,-1000,-1000,1069,  98, 171,-1000,-1000,
                    372: 1028,1028,-1000,-1000,-1000,-1000,1132,-1000,-1000,-1000,
                    373:  291, 291, 406,-1000,-1000,  58, 290, 100,-1000, 290,
                    374: -1000,-1000,-1000, 406,-1000, 113,-1000,-1000, 378,-1000,
                    375:  295, 776, -36, 155, -37, 406, 421,1016,1045,-1000,
                    376:  406,-1000,-1000,-1000,-1000,-1000,1016,-1000,1016, 281,
                    377: -1000,1016,-1000, 189,-1000, 700, 421,-1000,1016,-1000,
                    378: -1000,-1000,1016,1016,-1000, 700,-1000,1016,-1000,-1000,
                    379:  100, 421,-1000, 440, 187,-1000,1115,-1000,-1000,-1000,
                    380:  839,-1000,1115,1115,1115,1115,1115, -41, 204, 125,
                    381:  375,-1000,-1000, 375, 375,-1000, 163, 159, 149, 700,
                    382: -1000,1028,-1000,-1000,-1000,-1000,-1000, 278,-1000,-1000,
                    383: -1000, 291, 290,-1000, 185,-1000,-1000,-1000,  -8,-1000,
                    384:  406,-1000, 170,-1000,-1000, 378, 141,-1000, 408,-1000,
                    385:  406,-1000,-1000, 168,-1000, 218,-1000, 679, 700,1005,
                    386: -1000, 700, 268,  36, 134, 700, 406, 657,-1000, 990,
                    387: 1016,1016,1016,1016,1016,1016,1016,1016,1016,1016,
                    388: -1000,-1000,-1000,-1000,-1000,-1000,-1000, 618, 133, -48,
                    389:  -31, 571, 277, 120,-1000,-1000,-1000,1069,  64, 700,
                    390: -1000,-1000, 104, -41, -41, -41, 420,-1000, 375, 125,
                    391:  129, 125,1028,1028,1028, 124, 119, 111,-1000,-1000,
                    392: -1000,  -8,-1000,  42,-1000,  85, 965,-1000,-1000, 406,
                    393:   -2, 609,-1000, 378,  76,-1000,  10,-1000, 101,-1000,
                    394: -1000, 406,1016, 406, 344,-1000, 262, 273,1016,1016,
                    395: -1000, 421,-1000,  -4, -48, -48, -48, 494,  35,  35,
                    396:  475, -31, -14,-1000,1016,-1000, 421, 421, 100,-1000,
                    397:  278,-1000,-1000, 375,-1000,-1000,-1000,-1000,-1000,-1000,
                    398: 1028,1028,1028,-1000,-1000,-1000, 965,-1000,-1000,  15,
                    399: -1000,-1000,-1000, 609,-1000,-1000, -23, 587,-1000,-1000,
                    400: -1000,-1000,1016,-1000,-1000,-1000, 259,-1000, 217,-1000,
                    401:  408, 408, 406,-1000, 700,-1000,  17,-1000,-1000,-1000,
                    402: 1016, 258, 700,  83, 240,  75,-1000,1016, 244, 240,
                    403:  238, 225, 223,-1000, 965,-1000, 609,-1000,-1000,1016,
                    404: -1000,-1000,-1000,-1000,-1000, 421,-1000,-1000, 700,-1000,
                    405: -1000,-1000,-1000,-1000, 700,-1000,-1000,  59, 700,  16,
                    406: 1016, 421, 700,-1000 };
                    407: short yypgo[]={
                    408: 
                    409:    0, 629, 628,  15, 627,  10,  13,  18,  30, 624,
                    410:  613, 612,   4,   0, 611, 610, 609, 607,  14, 603,
                    411:  602, 596, 591, 590,  22, 589,  24, 586, 585,  71,
                    412:   29,  27,  21,  86,  17, 584,  55, 431,   1, 173,
                    413:   16, 388, 320,   9,   2,   6,  19,   3,  48, 582,
                    414:  581,  33,  38,  37, 580, 572, 563, 562, 553, 908,
                    415:   73, 552, 551, 550, 548, 547, 546, 545,  44, 543,
                    416:   20,  34,  39,   5,  32, 542,  35, 539, 533,   7,
                    417:   25,  26, 532, 531,  11,  12,  31, 526, 516, 514,
                    418:    8, 507, 428, 498, 497, 495, 488, 485, 484, 380,
                    419:  482, 481, 477, 475, 471, 467, 250, 464, 463,  23 };
                    420: short yyr1[]={
                    421: 
                    422:    0,   1,   1,  55,  55,  55,  55,  55,  55,  55,
                    423:    2,  56,  56,  56,  56,  56,  56,  60,  52,  33,
                    424:   53,  53,  26,  26,  26,  27,  27,  34,  34,  17,
                    425:   57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
                    426:   57,  57,  11,  11,   8,   9,  10,  10,  10,  10,
                    427:   10,  10,  10,  10,  10,  10,  10,   7,   7,   7,
                    428:   50,  50,  50,  50,  51,  51,  61,  61,  62,  62,
                    429:   63,  63,  74,  54,  54,  64,  64,  75,  76,  78,
                    430:   77,  77,  79,  79,  45,  45,  45,  45,  67,  67,
                    431:   80,  80,  69,  69,  81,  36,  18,  18,  19,  19,
                    432:   20,  20,  71,  71,  83,  82,  82,  84,  84,  43,
                    433:   43,  85,  85,   3,  65,  65,  86,  89,  87,  88,
                    434:   88,  90,  90,  12,  66,  66,  91,  21,  21,  68,
                    435:   22,  22,  23,  23,  38,  38,  38,  39,  39,  39,
                    436:   39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
                    437:   39,  13,  13,  14,  14,  14,  14,  14,  14,  37,
                    438:   37,  37,  37,  32,  40,  40,  44,  44,  48,  48,
                    439:   48,  48,  48,  48,  47,  49,  49,  49,  41,  41,
                    440:   42,  42,  42,  42,  42,  42,  42,  42,  58,  58,
                    441:   58,  58,  58,  58,  58,  93,  24,  92,  92,  92,
                    442:   92,  92,  92,  92,  92,  92,  92,  92,   4,  94,
                    443:   95,  95,  95,  95,  70,  70,  35,  25,  25,  46,
                    444:   46,  15,  15,  28,  28,  59,  72,  73,  96,  97,
                    445:   97,  97,  97,  97,  97,  97,  97,  97,  97,  97,
                    446:   97,  97,  97,  98, 105, 105, 105, 100, 107, 107,
                    447:  107, 102, 102,  99,  99, 108, 108, 109, 109, 109,
                    448:  109, 109, 109,  16, 101, 103, 104, 104,  29,  29,
                    449:    6,   6,  30,  30,  30,  31,  31,  31,  31,  31,
                    450:   31,   5,   5,   5,   5, 106 };
                    451: short yyr2[]={
                    452: 
                    453:    0,   0,   3,   2,   2,   2,   3,   3,   2,   1,
                    454:    1,   3,   3,   4,   4,   5,   3,   0,   1,   1,
                    455:    0,   1,   0,   2,   3,   1,   3,   1,   1,   1,
                    456:    1,   1,   1,   1,   1,   1,   1,   1,   1,   2,
                    457:    1,   5,   6,   5,   2,   1,   1,   1,   1,   1,
                    458:    1,   1,   1,   1,   1,   1,   1,   0,   4,   6,
                    459:    3,   4,   5,   3,   1,   3,   3,   3,   3,   3,
                    460:    3,   3,   3,   1,   3,   3,   3,   0,   4,   0,
                    461:    2,   3,   1,   3,   1,   2,   1,   1,   1,   3,
                    462:    1,   1,   1,   3,   3,   2,   1,   5,   1,   3,
                    463:    1,   3,   0,   3,   0,   2,   3,   1,   3,   1,
                    464:    1,   1,   3,   1,   3,   3,   4,   0,   2,   1,
                    465:    3,   1,   3,   1,   1,   2,   4,   1,   3,   0,
                    466:    0,   1,   1,   3,   1,   3,   1,   1,   1,   3,
                    467:    3,   3,   3,   2,   3,   3,   3,   3,   3,   2,
                    468:    3,   1,   1,   1,   1,   1,   1,   1,   1,   1,
                    469:    2,   4,   5,   5,   0,   1,   1,   1,   1,   1,
                    470:    1,   1,   1,   1,   5,   1,   1,   1,   1,   3,
                    471:    1,   1,   3,   3,   3,   3,   2,   3,   1,   6,
                    472:    2,   2,   6,   2,   2,   5,   3,   4,   5,   2,
                    473:    1,   1,  10,   1,   3,   4,   3,   3,   1,   1,
                    474:    3,   3,   7,   7,   0,   1,   3,   1,   3,   1,
                    475:    2,   1,   1,   1,   3,   0,   0,   0,   1,   2,
                    476:    2,   2,   2,   2,   2,   2,   3,   4,   4,   2,
                    477:    3,   1,   3,   3,   1,   1,   1,   3,   1,   1,
                    478:    1,   1,   1,   3,   3,   1,   3,   1,   1,   1,
                    479:    2,   2,   2,   1,   3,   3,   4,   4,   1,   3,
                    480:    1,   5,   1,   1,   1,   3,   3,   3,   3,   3,
                    481:    3,   1,   5,   5,   5,   0 };
                    482: short yychk[]={
                    483: 
                    484: -1000,  -1, -55,  -2, 256,   3,   1, -56, -57, -58,
                    485:   18,  37,   4,  60,  23,  69,  44,  -8,  40, -11,
                    486:  -50, -61, -62, -63, -64, -65, -66,  66,  43,  57,
                    487:  -92,  33, -93,  36,  35,  39,  -9,  27,  42,  53,
                    488:   41,  30,  50,  55, -94,  20,  29, -95, -96,  48,
                    489:  -35,  64, -15,  49, -10,  19,  45,  46,  47, -97,
                    490:   24,  58,  68,  52,  63,  28,  34,  31,  54,  25,
                    491:   72,  32,  21,  67, -98,-100,-101,-103,-104,-105,
                    492: -107,  62,  73,  59,  22,  65,  38,  51,  56,  26,
                    493:  -17,   5, -59, -60, -60, -60, -60,  44, -70,  78,
                    494:  -52, -33,  14,  78, -70,  78,  78,  78,  78, -70,
                    495:   78, -91,  83, -67, -80, -33, -51,  85,  83, -68,
                    496:  -59, -92,  70, -59, -59, -59,  -7,  82, -68, -68,
                    497:  -68, -68, -75, -68, -37, -33, -59, -59, -59,  74,
                    498:  -59, -59, -59, -59, -59, -59, -59, -99, -42,  82,
                    499:   84,  74, -37, -48, -41, -13,  12,  13,   5,   6,
                    500:    7,   8,  80,  81, -99,  74, -99,-102, -42,  82,
                    501:  -99,  78, -59, -59, -59, -59, -59, -53, -52, -53,
                    502:  -52, -52, -60, -33, -26,  74, -33, -51, -36, -33,
                    503:  -33, -33, -74,  74, -76, -19, -18, -37,  74, -86,
                    504:  -87, -89, -33,  78,  14,  74, -72,  74, -72, -36,
                    505:  -51, -33, -33, -74, -76, -86,  76, -32,  74,  -4,
                    506:    6,  74,  75, -25, -46, -38,  82, -39,  74, -47,
                    507:  -37, -48, -13,  90, -40, -38, -40,  74,  -3,   6,
                    508:  -33,  74, -33, -41,-108, -42,  74,-109,  82,  84,
                    509:  -16,  15, -13,  82,  83,  84,  85, -41, -41, -29,
                    510:   78,  -6, -37,  74,  78, -30, -39,  -5, -31, -38,
                    511:  -47,  74, -30,-106,-106,-106,-106, -41,  82, -26,
                    512:  -26, -52, -68,  75, -27, -34, -33,  82, -71,  74,
                    513:  -70, -71, -54, -37,  83,  78, -20, -18,  74,  -8,
                    514:   83, -80,  83, -69, -81, -33,  -3, -38, -38,  74,
                    515:  -36, -38, -22, -40, -23, -38,  71, -38,  75,  78,
                    516:  -13,  82,  83,  84, -14,  89,  88,  87,  86,  85,
                    517:   91,  93,  92,  95,  94,  96,  -3, -38, -39, -38,
                    518:  -38, -38, -70, -85,  -3,  75,  75,  78, -41, -38,
                    519:   82,  84, -41, -41, -41, -41, -41,  75,  78, -29,
                    520:  -29, -29,  78,  78,  78, -39,  -5, -31,-106,-106,
                    521:  -26, -71,  75,  78,  -7, -82, -83, -36,  75,  78,
                    522:  -77, -78, -18,  78, -88, -90, -12,  14, -21, -33,
                    523:   75,  78,  76, -73,  75, -73,  82,  75,  77,  78,
                    524:  -33,  75, -46, -38, -38, -38, -38, -38, -38, -38,
                    525:  -38, -38, -38,  75,  78,  75,  74,  78,  75,-109,
                    526:  -41,  75,  -6,  78, -39,  -5, -39,  -5, -39,  -5,
                    527:   78,  78,  78,  -7, -34,  75,  78, -84, -43, -38,
                    528:   82, -37,  83,  78, -79, -45, -44, -13, -47, -49,
                    529:  -33, -48,  74,  11,  10,   9, -24, -18, -33,  75,
                    530:   78,  81,  78, -81, -38, -24, -33,  70,  75, -32,
                    531:   74, -40, -38,  -3, -39, -85,  -3, -70, -24, -39,
                    532:  -24, -24, -24, -84,  77, -79,  82, -44,  75,  76,
                    533:  -90, -12, -33, -73,  75,  78,  75,  75, -38,  75,
                    534:   75,  75,  75, -43, -38, -45, -44, -28, -38,  -3,
                    535:   78,  78, -38,  -3 };
                    536: short yydef[]={
                    537: 
                    538:    1,  -2,   0,   0,   9,  10,   2,   3,   4,   5,
                    539:    0, 225,   8,  17,  17,  17,  17, 214,   0,  30,
                    540:   -2,  32,  33,  34,  -2,  36,  37,  38,  40, 129,
                    541:  188, 225,   0, 225, 225, 225,  57, 129, 129, 129,
                    542:  129,  77, 129, 124,   0, 225, 225, 200, 201, 225,
                    543:  203, 225, 225, 225,  45, 209, 225, 225, 225, 228,
                    544:  225, 221, 222,  46,  47,  48,  49,  50,  51,  52,
                    545:   53,  54,  55,  56,   0,   0,   0,   0, 241, 225,
                    546:  225, 225, 225, 225, 244, 245, 246, 248, 249, 250,
                    547:    6,  29,   7,  20,  20,   0,   0,  17,   0, 215,
                    548:   22,  18,  19,   0,   0, 215,   0,   0,   0,   0,
                    549:  117, 125,   0,  39,  88,  90,  91,  64,   0,   0,
                    550:  226, 190, 191,   0, 193, 194,  44, 226,   0,   0,
                    551:    0,   0,   0, 117,   0, 159,   0, 199,   0,   0,
                    552:  164, 164,   0,   0,   0,   0,   0, 229,  -2, 231,
                    553:  232,   0, 180, 181,   0,   0, 168, 169, 170, 171,
                    554:  172, 173, 151, 152, 233,   0, 234, 235,  -2, 252,
                    555:  239,   0, 285, 285, 285, 285,   0,  11,  21,  12,
                    556:   22,  22,   0, 129,  16,   0, 102, 214,  63, 102,
                    557:   67,  69,  71,   0,  76,   0,  98,  96,   0, 115,
                    558:    0,   0,   0,   0,   0,   0,   0,   0,   0,  60,
                    559:    0,  66,  68,  70,  75, 114,   0, 160,  -2,   0,
                    560:  208,   0, 204,   0, 217, 219,   0, 134,   0, 136,
                    561:  137, 138,   0,   0, 206, 165, 207,   0, 210, 113,
                    562:   -2,   0, 216, 257,   0, 178,   0, 255, 258, 259,
                    563:    0, 263,   0,   0,   0,   0,   0, 186, 257, 236,
                    564:    0, 268, 270,   0,   0, 240,  -2, 273, 274,   0,
                    565:   -2,   0, 242, 243, 247, 264, 265, 285, 285,  13,
                    566:   14,  22, 102,  23,   0,  25,  27,  28,  57, 104,
                    567:    0,  95,   0,  73,  79,   0,   0, 100,   0, 118,
                    568:    0,  89,  65,   0,  92,   0, 227,   0, 227,   0,
                    569:   61, 197,   0,   0, 131,  -2,   0,   0, 205,   0,
                    570:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
                    571:  153, 154, 155, 156, 157, 158, 220,   0, 134, 143,
                    572:  149,   0,   0,   0, 111,  -2, 254,   0,   0, 260,
                    573:  261, 262, 182, 183, 184, 185, 187, 253,   0, 238,
                    574:    0, 237,   0,   0,   0, 134,   0,   0, 266, 267,
                    575:   15,  57,  24,   0,  43,   0,   0,  62,  72,   0,
                    576:    0,   0,  99,   0,   0, 119, 121, 123, 126, 127,
                    577:   41,   0,   0,   0,   0,  58,   0, 161, 164,   0,
                    578:  198,   0, 218, 139, 140, 141, 142,  -2, 145, 146,
                    579:  147, 148, 150, 135,   0, 195,   0,   0, 214, 256,
                    580:  257, 179, 269,   0,  -2, 276,  -2, 278,  -2, 280,
                    581:    0,   0,   0,  42,  26, 103,   0, 105, 107, 110,
                    582:  109,  74,  78,   0,  80,  82,  84,   0,  86,  87,
                    583:  166, 167,   0, 175, 176, 177,   0, 101, 159, 116,
                    584:    0,   0,   0,  93,  94, 189,   0, 192, 227, 162,
                    585:  164,   0, 133,   0, 134,   0, 112,   0,   0,  -2,
                    586:    0,   0,   0, 106,   0,  81,   0,  85,  97,   0,
                    587:  120, 122, 128,  59, 163,   0, 174, 212, 213, 271,
                    588:  282, 283, 284, 108, 110,  83,  84, 196, 223,   0,
                    589:    0,   0, 224, 202 };
                    590: #ifndef lint
                    591: static char yaccpar_sccsid[] = "@(#)yaccpar    4.1     (Berkeley)      2/11/83";
                    592: #endif not lint
                    593: 
                    594: #
                    595: # define YYFLAG -1000
                    596: # define YYERROR goto yyerrlab
                    597: # define YYACCEPT return(0)
                    598: # define YYABORT return(1)
                    599: 
                    600: /*     parser for yacc output  */
                    601: 
                    602: #ifdef YYDEBUG
                    603: int yydebug = 0; /* 1 for debugging */
                    604: #endif
                    605: YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */
                    606: int yychar = -1; /* current input token number */
                    607: int yynerrs = 0;  /* number of errors */
                    608: short yyerrflag = 0;  /* error recovery flag */
                    609: 
                    610: yyparse() {
                    611: 
                    612:        short yys[YYMAXDEPTH];
                    613:        short yyj, yym;
                    614:        register YYSTYPE *yypvt;
                    615:        register short yystate, *yyps, yyn;
                    616:        register YYSTYPE *yypv;
                    617:        register short *yyxi;
                    618: 
                    619:        yystate = 0;
                    620:        yychar = -1;
                    621:        yynerrs = 0;
                    622:        yyerrflag = 0;
                    623:        yyps= &yys[-1];
                    624:        yypv= &yyv[-1];
                    625: 
                    626:  yystack:    /* put a state and value onto the stack */
                    627: 
                    628: #ifdef YYDEBUG
                    629:        if( yydebug  ) printf( "state %d, char 0%o\n", yystate, yychar );
                    630: #endif
                    631:                if( ++yyps> &yys[YYMAXDEPTH] ) { yyerror( "yacc stack overflow" ); return(1); }
                    632:                *yyps = yystate;
                    633:                ++yypv;
                    634:                *yypv = yyval;
                    635: 
                    636:  yynewstate:
                    637: 
                    638:        yyn = yypact[yystate];
                    639: 
                    640:        if( yyn<= YYFLAG ) goto yydefault; /* simple state */
                    641: 
                    642:        if( yychar<0 ) if( (yychar=yylex())<0 ) yychar=0;
                    643:        if( (yyn += yychar)<0 || yyn >= YYLAST ) goto yydefault;
                    644: 
                    645:        if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */
                    646:                yychar = -1;
                    647:                yyval = yylval;
                    648:                yystate = yyn;
                    649:                if( yyerrflag > 0 ) --yyerrflag;
                    650:                goto yystack;
                    651:                }
                    652: 
                    653:  yydefault:
                    654:        /* default state action */
                    655: 
                    656:        if( (yyn=yydef[yystate]) == -2 ) {
                    657:                if( yychar<0 ) if( (yychar=yylex())<0 ) yychar = 0;
                    658:                /* look through exception table */
                    659: 
                    660:                for( yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate) ; yyxi += 2 ) ; /* VOID */
                    661: 
                    662:                while( *(yyxi+=2) >= 0 ){
                    663:                        if( *yyxi == yychar ) break;
                    664:                        }
                    665:                if( (yyn = yyxi[1]) < 0 ) return(0);   /* accept */
                    666:                }
                    667: 
                    668:        if( yyn == 0 ){ /* error */
                    669:                /* error ... attempt to resume parsing */
                    670: 
                    671:                switch( yyerrflag ){
                    672: 
                    673:                case 0:   /* brand new error */
                    674: 
                    675:                        yyerror( "syntax error" );
                    676:                yyerrlab:
                    677:                        ++yynerrs;
                    678: 
                    679:                case 1:
                    680:                case 2: /* incompletely recovered error ... try again */
                    681: 
                    682:                        yyerrflag = 3;
                    683: 
                    684:                        /* find a state where "error" is a legal shift action */
                    685: 
                    686:                        while ( yyps >= yys ) {
                    687:                           yyn = yypact[*yyps] + YYERRCODE;
                    688:                           if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){
                    689:                              yystate = yyact[yyn];  /* simulate a shift of "error" */
                    690:                              goto yystack;
                    691:                              }
                    692:                           yyn = yypact[*yyps];
                    693: 
                    694:                           /* the current yyps has no shift onn "error", pop stack */
                    695: 
                    696: #ifdef YYDEBUG
                    697:                           if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] );
                    698: #endif
                    699:                           --yyps;
                    700:                           --yypv;
                    701:                           }
                    702: 
                    703:                        /* there is no state on the stack with an error shift ... abort */
                    704: 
                    705:        yyabort:
                    706:                        return(1);
                    707: 
                    708: 
                    709:                case 3:  /* no shift yet; clobber input char */
                    710: 
                    711: #ifdef YYDEBUG
                    712:                        if( yydebug ) printf( "error recovery discards char %d\n", yychar );
                    713: #endif
                    714: 
                    715:                        if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */
                    716:                        yychar = -1;
                    717:                        goto yynewstate;   /* try again in the same state */
                    718: 
                    719:                        }
                    720: 
                    721:                }
                    722: 
                    723:        /* reduction by production yyn */
                    724: 
                    725: #ifdef YYDEBUG
                    726:                if( yydebug ) printf("reduce %d\n",yyn);
                    727: #endif
                    728:                yyps -= yyr2[yyn];
                    729:                yypvt = yypv;
                    730:                yypv -= yyr2[yyn];
                    731:                yyval = yypv[1];
                    732:                yym=yyn;
                    733:                        /* consult goto table to find next state */
                    734:                yyn = yyr1[yyn];
                    735:                yyj = yypgo[yyn] + *yyps + 1;
                    736:                if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]];
                    737:                switch(yym){
                    738:                        
                    739: case 3:
                    740: # line 182 "gram.in"
                    741: { lastwasbranch = NO; } break;
                    742: case 5:
                    743: # line 185 "gram.in"
                    744: { if(yypvt[-1].labval && (yypvt[-1].labval->labelno==dorange))
                    745:                        enddo(yypvt[-1].labval->labelno);
                    746:                  if(lastwasbranch && thislabel==NULL)
                    747:                        warn("statement cannot be reached");
                    748:                  lastwasbranch = thiswasbranch;
                    749:                  thiswasbranch = NO;
                    750:                  if(yypvt[-1].labval)
                    751:                        {
                    752:                        if(yypvt[-1].labval->labtype == LABFORMAT)
                    753:                                err("label already that of a format");
                    754:                        else
                    755:                                yypvt[-1].labval->labtype = LABEXEC;
                    756:                        }
                    757:                } break;
                    758: case 6:
                    759: # line 200 "gram.in"
                    760: { doinclude( yypvt[-0].charpval ); } break;
                    761: case 7:
                    762: # line 202 "gram.in"
                    763: { lastwasbranch = NO;  endproc(); } break;
                    764: case 8:
                    765: # line 204 "gram.in"
                    766: { execerr("unclassifiable statement", CNULL);  flline(); } break;
                    767: case 9:
                    768: # line 206 "gram.in"
                    769: { flline();  needkwd = NO;  inioctl = NO; 
                    770:                  yyerrok; yyclearin; } break;
                    771: case 10:
                    772: # line 211 "gram.in"
                    773: {
                    774: #ifdef SDB
                    775:                char buff[10];
                    776:                if( sdbflag )
                    777:                        {
                    778: #      ifdef UCBVAXASM
                    779:                        p2pass( stabdline(N_SLINE, lineno) );
                    780: #      else
                    781:                        sprintf(buff,"LL%d", ++dbglabel);
                    782:                        p2pass( stabline(0, N_SLINE, lineno, buff) );
                    783:                        p2pi("LL%d:\n", dbglabel);
                    784: #      endif
                    785:                        }
                    786: #endif
                    787: 
                    788:                if(yystno != 0)
                    789:                        {
                    790:                        yyval.labval = thislabel =  mklabel(yystno);
                    791:                        if( ! headerdone )
                    792:                                puthead(CNULL, procclass);
                    793:                        if(thislabel->labdefined)
                    794:                                execerr("label %s already defined",
                    795:                                        convic(thislabel->stateno) );
                    796:                        else    {
                    797:                                if(thislabel->blklevel!=0 && thislabel->blklevel<blklevel
                    798:                                    && thislabel->labtype!=LABFORMAT)
                    799:                                        warn1("there is a branch to label %s from outside block",
                    800:                                              convic( (ftnint) (thislabel->stateno) ) );
                    801:                                thislabel->blklevel = blklevel;
                    802:                                thislabel->labdefined = YES;
                    803:                                if(thislabel->labtype != LABFORMAT)
                    804:                                        putlabel(thislabel->labelno);
                    805:                                }
                    806:                        }
                    807:                else    yyval.labval = thislabel = NULL;
                    808:                } break;
                    809: case 11:
                    810: # line 250 "gram.in"
                    811: {startproc(yypvt[-0].extval, CLMAIN); } break;
                    812: case 12:
                    813: # line 252 "gram.in"
                    814: { if(yypvt[-0].extval) NO66("named BLOCKDATA");
                    815:                  startproc(yypvt[-0].extval, CLBLOCK); } break;
                    816: case 13:
                    817: # line 255 "gram.in"
                    818: { entrypt(CLPROC, TYSUBR, (ftnint) 0,  yypvt[-1].extval, yypvt[-0].chval); } break;
                    819: case 14:
                    820: # line 257 "gram.in"
                    821: { entrypt(CLPROC, TYUNKNOWN, (ftnint) 0, yypvt[-1].extval, yypvt[-0].chval); } break;
                    822: case 15:
                    823: # line 259 "gram.in"
                    824: { entrypt(CLPROC, yypvt[-4].ival, varleng, yypvt[-1].extval, yypvt[-0].chval); } break;
                    825: case 16:
                    826: # line 261 "gram.in"
                    827: { if(parstate==OUTSIDE || procclass==CLMAIN
                    828:                        || procclass==CLBLOCK)
                    829:                                execerr("misplaced entry statement", CNULL);
                    830:                  entrypt(CLENTRY, 0, (ftnint) 0, yypvt[-1].extval, yypvt[-0].chval);
                    831:                } break;
                    832: case 17:
                    833: # line 269 "gram.in"
                    834: { newproc(); } break;
                    835: case 18:
                    836: # line 273 "gram.in"
                    837: { yyval.extval = newentry(yypvt[-0].namval); } break;
                    838: case 19:
                    839: # line 277 "gram.in"
                    840: { yyval.namval = mkname(toklen, token); } break;
                    841: case 20:
                    842: # line 280 "gram.in"
                    843: { yyval.extval = NULL; } break;
                    844: case 22:
                    845: # line 285 "gram.in"
                    846: { yyval.chval = 0; } break;
                    847: case 23:
                    848: # line 287 "gram.in"
                    849: { NO66(" () argument list");
                    850:                  yyval.chval = 0; } break;
                    851: case 24:
                    852: # line 290 "gram.in"
                    853: {yyval.chval = yypvt[-1].chval; } break;
                    854: case 25:
                    855: # line 294 "gram.in"
                    856: { yyval.chval = (yypvt[-0].namval ? mkchain(yypvt[-0].namval,CHNULL) : CHNULL ); } break;
                    857: case 26:
                    858: # line 296 "gram.in"
                    859: { if(yypvt[-0].namval) yypvt[-2].chval = yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].namval,CHNULL)); } break;
                    860: case 27:
                    861: # line 300 "gram.in"
                    862: { if(yypvt[-0].namval->vstg!=STGUNKNOWN && yypvt[-0].namval->vstg!=STGARG)
                    863:                        dclerr("name declared as argument after use", yypvt[-0].namval);
                    864:                  yypvt[-0].namval->vstg = STGARG;
                    865:                } break;
                    866: case 28:
                    867: # line 305 "gram.in"
                    868: { NO66("altenate return argument");
                    869:                  yyval.namval = 0;  substars = YES; } break;
                    870: case 29:
                    871: # line 312 "gram.in"
                    872: {
                    873:                char *s;
                    874:                s = copyn(toklen+1, token);
                    875:                s[toklen] = '\0';
                    876:                yyval.charpval = s;
                    877:                } break;
                    878: case 38:
                    879: # line 328 "gram.in"
                    880: { NO66("SAVE statement");
                    881:                  saveall = YES; } break;
                    882: case 39:
                    883: # line 331 "gram.in"
                    884: { NO66("SAVE statement"); } break;
                    885: case 40:
                    886: # line 333 "gram.in"
                    887: { fmtstmt(thislabel); setfmt(thislabel); } break;
                    888: case 41:
                    889: # line 335 "gram.in"
                    890: { NO66("PARAMETER statement"); } break;
                    891: case 42:
                    892: # line 339 "gram.in"
                    893: { settype(yypvt[-3].namval, yypvt[-5].ival, yypvt[-0].ival);
                    894:                  if(ndim>0) setbound(yypvt[-3].namval,ndim,dims);
                    895:                } break;
                    896: case 43:
                    897: # line 343 "gram.in"
                    898: { settype(yypvt[-2].namval, yypvt[-4].ival, yypvt[-0].ival);
                    899:                  if(ndim>0) setbound(yypvt[-2].namval,ndim,dims);
                    900:                } break;
                    901: case 44:
                    902: # line 349 "gram.in"
                    903: { varleng = yypvt[-0].ival; } break;
                    904: case 45:
                    905: # line 353 "gram.in"
                    906: { varleng = (yypvt[-0].ival<0 || yypvt[-0].ival==TYLONG ? 0 : typesize[yypvt[-0].ival]); } break;
                    907: case 46:
                    908: # line 356 "gram.in"
                    909: { yyval.ival = TYLONG; } break;
                    910: case 47:
                    911: # line 357 "gram.in"
                    912: { yyval.ival = TYREAL; } break;
                    913: case 48:
                    914: # line 358 "gram.in"
                    915: { yyval.ival = TYCOMPLEX; } break;
                    916: case 49:
                    917: # line 359 "gram.in"
                    918: { yyval.ival = TYDREAL; } break;
                    919: case 50:
                    920: # line 360 "gram.in"
                    921: { NOEXT("DOUBLE COMPLEX statement"); yyval.ival = TYDCOMPLEX; } break;
                    922: case 51:
                    923: # line 361 "gram.in"
                    924: { yyval.ival = TYLOGICAL; } break;
                    925: case 52:
                    926: # line 362 "gram.in"
                    927: { NO66("CHARACTER statement"); yyval.ival = TYCHAR; } break;
                    928: case 53:
                    929: # line 363 "gram.in"
                    930: { yyval.ival = TYUNKNOWN; } break;
                    931: case 54:
                    932: # line 364 "gram.in"
                    933: { yyval.ival = TYUNKNOWN; } break;
                    934: case 55:
                    935: # line 365 "gram.in"
                    936: { NOEXT("AUTOMATIC statement"); yyval.ival = - STGAUTO; } break;
                    937: case 56:
                    938: # line 366 "gram.in"
                    939: { NOEXT("STATIC statement"); yyval.ival = - STGBSS; } break;
                    940: case 57:
                    941: # line 370 "gram.in"
                    942: { yyval.ival = varleng; } break;
                    943: case 58:
                    944: # line 372 "gram.in"
                    945: {
                    946:                expptr p;
                    947:                p = yypvt[-1].expval;
                    948:                NO66("length specification *n");
                    949:                if( ! ISICON(p) || p->constblock.const.ci<0 )
                    950:                        {
                    951:                        yyval.ival = 0;
                    952:                        dclerr("length must be a positive integer constant",
                    953:                                PNULL);
                    954:                        }
                    955:                else yyval.ival = p->constblock.const.ci;
                    956:                } break;
                    957: case 59:
                    958: # line 385 "gram.in"
                    959: { NO66("length specification *(*)"); yyval.ival = -1; } break;
                    960: case 60:
                    961: # line 389 "gram.in"
                    962: { incomm( yyval.extval = comblock(0, CNULL) , yypvt[-0].namval ); } break;
                    963: case 61:
                    964: # line 391 "gram.in"
                    965: { yyval.extval = yypvt[-1].extval;  incomm(yypvt[-1].extval, yypvt[-0].namval); } break;
                    966: case 62:
                    967: # line 393 "gram.in"
                    968: { yyval.extval = yypvt[-2].extval;  incomm(yypvt[-2].extval, yypvt[-0].namval); } break;
                    969: case 63:
                    970: # line 395 "gram.in"
                    971: { incomm(yypvt[-2].extval, yypvt[-0].namval); } break;
                    972: case 64:
                    973: # line 399 "gram.in"
                    974: { yyval.extval = comblock(0, CNULL); } break;
                    975: case 65:
                    976: # line 401 "gram.in"
                    977: { yyval.extval = comblock(toklen, token); } break;
                    978: case 66:
                    979: # line 405 "gram.in"
                    980: { setext(yypvt[-0].namval); } break;
                    981: case 67:
                    982: # line 407 "gram.in"
                    983: { setext(yypvt[-0].namval); } break;
                    984: case 68:
                    985: # line 411 "gram.in"
                    986: { NO66("INTRINSIC statement"); setintr(yypvt[-0].namval); } break;
                    987: case 69:
                    988: # line 413 "gram.in"
                    989: { setintr(yypvt[-0].namval); } break;
                    990: case 72:
                    991: # line 421 "gram.in"
                    992: {
                    993:                struct Equivblock *p;
                    994:                if(nequiv >= maxequiv)
                    995:                        many("equivalences", 'q');
                    996:                p  =  & eqvclass[nequiv++];
                    997:                p->eqvinit = NO;
                    998:                p->eqvbottom = 0;
                    999:                p->eqvtop = 0;
                   1000:                p->equivs = yypvt[-1].eqvval;
                   1001:                } break;
                   1002: case 73:
                   1003: # line 434 "gram.in"
                   1004: { yyval.eqvval=ALLOC(Eqvchain);
                   1005:                  yyval.eqvval->eqvitem.eqvlhs = (struct Primblock *)yypvt[-0].expval;
                   1006:                } break;
                   1007: case 74:
                   1008: # line 438 "gram.in"
                   1009: { yyval.eqvval=ALLOC(Eqvchain);
                   1010:                  yyval.eqvval->eqvitem.eqvlhs = (struct Primblock *) yypvt[-0].expval;
                   1011:                  yyval.eqvval->eqvnextp = yypvt[-2].eqvval;
                   1012:                } break;
                   1013: case 77:
                   1014: # line 449 "gram.in"
                   1015: { if(parstate == OUTSIDE)
                   1016:                        {
                   1017:                        newproc();
                   1018:                        startproc(PNULL, CLMAIN);
                   1019:                        }
                   1020:                  if(parstate < INDATA)
                   1021:                        {
                   1022:                        enddcl();
                   1023:                        parstate = INDATA;
                   1024:                        }
                   1025:                } break;
                   1026: case 78:
                   1027: # line 463 "gram.in"
                   1028: { ftnint junk;
                   1029:                  if(nextdata(&junk,&junk) != NULL)
                   1030:                        {
                   1031:                        err("too few initializers");
                   1032:                        curdtp = NULL;
                   1033:                        }
                   1034:                  frdata(yypvt[-3].chval);
                   1035:                  frrpl();
                   1036:                } break;
                   1037: case 79:
                   1038: # line 474 "gram.in"
                   1039: { toomanyinit = NO; } break;
                   1040: case 82:
                   1041: # line 479 "gram.in"
                   1042: { dataval(PNULL, yypvt[-0].expval); } break;
                   1043: case 83:
                   1044: # line 481 "gram.in"
                   1045: { dataval(yypvt[-2].expval, yypvt[-0].expval); } break;
                   1046: case 85:
                   1047: # line 486 "gram.in"
                   1048: { if( yypvt[-1].ival==OPMINUS && ISCONST(yypvt[-0].expval) )
                   1049:                        consnegop(yypvt[-0].expval);
                   1050:                  yyval.expval = yypvt[-0].expval;
                   1051:                } break;
                   1052: case 90:
                   1053: # line 499 "gram.in"
                   1054: { int k;
                   1055:                  yypvt[-0].namval->vsave = YES;
                   1056:                  k = yypvt[-0].namval->vstg;
                   1057:                if( ! ONEOF(k, M(STGUNKNOWN)|M(STGBSS)|M(STGINIT)) )
                   1058:                        dclerr("can only save static variables", yypvt[-0].namval);
                   1059:                } break;
                   1060: case 91:
                   1061: # line 506 "gram.in"
                   1062: { yypvt[-0].extval->extsave = 1; } break;
                   1063: case 94:
                   1064: # line 514 "gram.in"
                   1065: { if(yypvt[-2].namval->vclass == CLUNKNOWN)
                   1066:                        { yypvt[-2].namval->vclass = CLPARAM;
                   1067:                          ( (struct Paramblock *) (yypvt[-2].namval) )->paramval = yypvt[-0].expval;
                   1068:                        }
                   1069:                  else dclerr("cannot make %s parameter", yypvt[-2].namval);
                   1070:                } break;
                   1071: case 95:
                   1072: # line 523 "gram.in"
                   1073: { if(ndim>0) setbound(yypvt[-1].namval, ndim, dims); } break;
                   1074: case 96:
                   1075: # line 527 "gram.in"
                   1076: { Namep np;
                   1077:                  np = ( (struct Primblock *) yypvt[-0].expval) -> namep;
                   1078:                  vardcl(np);
                   1079:                  if(np->vstg == STGCOMMON)
                   1080:                        extsymtab[np->vardesc.varno].extinit = YES;
                   1081:                  else if(np->vstg==STGEQUIV)
                   1082:                        eqvclass[np->vardesc.varno].eqvinit = YES;
                   1083:                  else if(np->vstg!=STGINIT && np->vstg!=STGBSS)
                   1084:                        dclerr("inconsistent storage classes", np);
                   1085:                  yyval.chval = mkchain(yypvt[-0].expval, CHNULL);
                   1086:                } break;
                   1087: case 97:
                   1088: # line 539 "gram.in"
                   1089: { chainp p; struct Impldoblock *q;
                   1090:                q = ALLOC(Impldoblock);
                   1091:                q->tag = TIMPLDO;
                   1092:                q->varnp = (Namep) (yypvt[-1].chval->datap);
                   1093:                p = yypvt[-1].chval->nextp;
                   1094:                if(p)  { q->implb = (expptr)(p->datap); p = p->nextp; }
                   1095:                if(p)  { q->impub = (expptr)(p->datap); p = p->nextp; }
                   1096:                if(p)  { q->impstep = (expptr)(p->datap); p = p->nextp; }
                   1097:                frchain( & (yypvt[-1].chval) );
                   1098:                yyval.chval = mkchain(q, CHNULL);
                   1099:                q->datalist = hookup(yypvt[-3].chval, yyval.chval);
                   1100:                } break;
                   1101: case 98:
                   1102: # line 554 "gram.in"
                   1103: { curdtp = yypvt[-0].chval; curdtelt = 0; } break;
                   1104: case 99:
                   1105: # line 556 "gram.in"
                   1106: { yyval.chval = hookup(yypvt[-2].chval, yypvt[-0].chval); } break;
                   1107: case 101:
                   1108: # line 561 "gram.in"
                   1109: { yyval.chval = hookup(yypvt[-2].chval, yypvt[-0].chval); } break;
                   1110: case 102:
                   1111: # line 565 "gram.in"
                   1112: { ndim = 0; } break;
                   1113: case 104:
                   1114: # line 569 "gram.in"
                   1115: { ndim = 0; } break;
                   1116: case 107:
                   1117: # line 574 "gram.in"
                   1118: { if(ndim == maxdim)
                   1119:                        err("too many dimensions");
                   1120:                  else if(ndim < maxdim)
                   1121:                        { dims[ndim].lb = 0;
                   1122:                          dims[ndim].ub = yypvt[-0].expval;
                   1123:                        }
                   1124:                  ++ndim;
                   1125:                } break;
                   1126: case 108:
                   1127: # line 583 "gram.in"
                   1128: { if(ndim == maxdim)
                   1129:                        err("too many dimensions");
                   1130:                  else if(ndim < maxdim)
                   1131:                        { dims[ndim].lb = yypvt[-2].expval;
                   1132:                          dims[ndim].ub = yypvt[-0].expval;
                   1133:                        }
                   1134:                  ++ndim;
                   1135:                } break;
                   1136: case 109:
                   1137: # line 594 "gram.in"
                   1138: { yyval.expval = 0; } break;
                   1139: case 111:
                   1140: # line 599 "gram.in"
                   1141: { nstars = 1; labarray[0] = yypvt[-0].labval; } break;
                   1142: case 112:
                   1143: # line 601 "gram.in"
                   1144: { if(nstars < MAXLABLIST)  labarray[nstars++] = yypvt[-0].labval; } break;
                   1145: case 113:
                   1146: # line 605 "gram.in"
                   1147: { yyval.labval = execlab( convci(toklen, token) ); } break;
                   1148: case 114:
                   1149: # line 609 "gram.in"
                   1150: { NO66("IMPLICIT statement"); } break;
                   1151: case 117:
                   1152: # line 616 "gram.in"
                   1153: { needkwd = 1; } break;
                   1154: case 118:
                   1155: # line 617 "gram.in"
                   1156: { vartype = yypvt[-0].ival; } break;
                   1157: case 121:
                   1158: # line 625 "gram.in"
                   1159: { setimpl(vartype, varleng, yypvt[-0].ival, yypvt[-0].ival); } break;
                   1160: case 122:
                   1161: # line 627 "gram.in"
                   1162: { setimpl(vartype, varleng, yypvt[-2].ival, yypvt[-0].ival); } break;
                   1163: case 123:
                   1164: # line 631 "gram.in"
                   1165: { if(toklen!=1 || token[0]<'a' || token[0]>'z')
                   1166:                        {
                   1167:                        dclerr("implicit item must be single letter", PNULL);
                   1168:                        yyval.ival = 0;
                   1169:                        }
                   1170:                  else yyval.ival = token[0];
                   1171:                } break;
                   1172: case 126:
                   1173: # line 645 "gram.in"
                   1174: {
                   1175:                if(yypvt[-2].namval->vclass == CLUNKNOWN)
                   1176:                        {
                   1177:                        yypvt[-2].namval->vclass = CLNAMELIST;
                   1178:                        yypvt[-2].namval->vtype = TYINT;
                   1179:                        yypvt[-2].namval->vstg = STGINIT;
                   1180:                        yypvt[-2].namval->varxptr.namelist = yypvt[-0].chval;
                   1181:                        yypvt[-2].namval->vardesc.varno = ++lastvarno;
                   1182:                        }
                   1183:                else dclerr("cannot be a namelist name", yypvt[-2].namval);
                   1184:                } break;
                   1185: case 127:
                   1186: # line 659 "gram.in"
                   1187: { yyval.chval = mkchain(yypvt[-0].namval, CHNULL); } break;
                   1188: case 128:
                   1189: # line 661 "gram.in"
                   1190: { yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].namval, CHNULL)); } break;
                   1191: case 129:
                   1192: # line 665 "gram.in"
                   1193: { switch(parstate)     
                   1194:                        {
                   1195:                        case OUTSIDE:   newproc();
                   1196:                                        startproc(PNULL, CLMAIN);
                   1197:                        case INSIDE:    parstate = INDCL;
                   1198:                        case INDCL:     break;
                   1199: 
                   1200:                        default:
                   1201:                                dclerr("declaration among executables", PNULL);
                   1202:                        }
                   1203:                } break;
                   1204: case 130:
                   1205: # line 678 "gram.in"
                   1206: { yyval.chval = 0; } break;
                   1207: case 132:
                   1208: # line 683 "gram.in"
                   1209: { yyval.chval = mkchain(yypvt[-0].expval, CHNULL); } break;
                   1210: case 133:
                   1211: # line 685 "gram.in"
                   1212: { yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].expval,CHNULL) ); } break;
                   1213: case 135:
                   1214: # line 690 "gram.in"
                   1215: { yyval.expval = yypvt[-1].expval; } break;
                   1216: case 139:
                   1217: # line 697 "gram.in"
                   1218: { yyval.expval = mkexpr(yypvt[-1].ival, yypvt[-2].expval, yypvt[-0].expval); } break;
                   1219: case 140:
                   1220: # line 699 "gram.in"
                   1221: { yyval.expval = mkexpr(OPSTAR, yypvt[-2].expval, yypvt[-0].expval); } break;
                   1222: case 141:
                   1223: # line 701 "gram.in"
                   1224: { yyval.expval = mkexpr(OPSLASH, yypvt[-2].expval, yypvt[-0].expval); } break;
                   1225: case 142:
                   1226: # line 703 "gram.in"
                   1227: { yyval.expval = mkexpr(OPPOWER, yypvt[-2].expval, yypvt[-0].expval); } break;
                   1228: case 143:
                   1229: # line 705 "gram.in"
                   1230: { if(yypvt[-1].ival == OPMINUS)
                   1231:                        yyval.expval = mkexpr(OPNEG, yypvt[-0].expval, ENULL);
                   1232:                  else  yyval.expval = yypvt[-0].expval;
                   1233:                } break;
                   1234: case 144:
                   1235: # line 710 "gram.in"
                   1236: { yyval.expval = mkexpr(yypvt[-1].ival, yypvt[-2].expval, yypvt[-0].expval); } break;
                   1237: case 145:
                   1238: # line 712 "gram.in"
                   1239: { NO66(".EQV. operator");
                   1240:                  yyval.expval = mkexpr(OPEQV, yypvt[-2].expval,yypvt[-0].expval); } break;
                   1241: case 146:
                   1242: # line 715 "gram.in"
                   1243: { NO66(".NEQV. operator");
                   1244:                  yyval.expval = mkexpr(OPNEQV, yypvt[-2].expval, yypvt[-0].expval); } break;
                   1245: case 147:
                   1246: # line 718 "gram.in"
                   1247: { yyval.expval = mkexpr(OPOR, yypvt[-2].expval, yypvt[-0].expval); } break;
                   1248: case 148:
                   1249: # line 720 "gram.in"
                   1250: { yyval.expval = mkexpr(OPAND, yypvt[-2].expval, yypvt[-0].expval); } break;
                   1251: case 149:
                   1252: # line 722 "gram.in"
                   1253: { yyval.expval = mkexpr(OPNOT, yypvt[-0].expval, ENULL); } break;
                   1254: case 150:
                   1255: # line 724 "gram.in"
                   1256: { NO66("concatenation operator //");
                   1257:                  yyval.expval = mkexpr(OPCONCAT, yypvt[-2].expval, yypvt[-0].expval); } break;
                   1258: case 151:
                   1259: # line 728 "gram.in"
                   1260: { yyval.ival = OPPLUS; } break;
                   1261: case 152:
                   1262: # line 729 "gram.in"
                   1263: { yyval.ival = OPMINUS; } break;
                   1264: case 153:
                   1265: # line 732 "gram.in"
                   1266: { yyval.ival = OPEQ; } break;
                   1267: case 154:
                   1268: # line 733 "gram.in"
                   1269: { yyval.ival = OPGT; } break;
                   1270: case 155:
                   1271: # line 734 "gram.in"
                   1272: { yyval.ival = OPLT; } break;
                   1273: case 156:
                   1274: # line 735 "gram.in"
                   1275: { yyval.ival = OPGE; } break;
                   1276: case 157:
                   1277: # line 736 "gram.in"
                   1278: { yyval.ival = OPLE; } break;
                   1279: case 158:
                   1280: # line 737 "gram.in"
                   1281: { yyval.ival = OPNE; } break;
                   1282: case 159:
                   1283: # line 741 "gram.in"
                   1284: { yyval.expval = mkprim(yypvt[-0].namval, PNULL, CHNULL); } break;
                   1285: case 160:
                   1286: # line 743 "gram.in"
                   1287: { NO66("substring operator :");
                   1288:                  yyval.expval = mkprim(yypvt[-1].namval, PNULL, yypvt[-0].chval); } break;
                   1289: case 161:
                   1290: # line 746 "gram.in"
                   1291: { yyval.expval = mkprim(yypvt[-3].namval, mklist(yypvt[-1].chval), CHNULL); } break;
                   1292: case 162:
                   1293: # line 748 "gram.in"
                   1294: { NO66("substring operator :");
                   1295:                  yyval.expval = mkprim(yypvt[-4].namval, mklist(yypvt[-2].chval), yypvt[-0].chval); } break;
                   1296: case 163:
                   1297: # line 753 "gram.in"
                   1298: { yyval.chval = mkchain(yypvt[-3].expval, mkchain(yypvt[-1].expval,CHNULL)); } break;
                   1299: case 164:
                   1300: # line 757 "gram.in"
                   1301: { yyval.expval = 0; } break;
                   1302: case 166:
                   1303: # line 762 "gram.in"
                   1304: { if(yypvt[-0].namval->vclass == CLPARAM)
                   1305:                        yyval.expval = (expptr) cpexpr(
                   1306:                                ( (struct Paramblock *) (yypvt[-0].namval) ) -> paramval);
                   1307:                } break;
                   1308: case 168:
                   1309: # line 769 "gram.in"
                   1310: { yyval.expval = mklogcon(1); } break;
                   1311: case 169:
                   1312: # line 770 "gram.in"
                   1313: { yyval.expval = mklogcon(0); } break;
                   1314: case 170:
                   1315: # line 771 "gram.in"
                   1316: { yyval.expval = mkstrcon(toklen, token); } break;
                   1317: case 171:
                   1318: # line 772 "gram.in"
                   1319:  { yyval.expval = mkintcon( convci(toklen, token) ); } break;
                   1320: case 172:
                   1321: # line 773 "gram.in"
                   1322:  { yyval.expval = mkrealcon(TYREAL, convcd(toklen, token)); } break;
                   1323: case 173:
                   1324: # line 774 "gram.in"
                   1325:  { yyval.expval = mkrealcon(TYDREAL, convcd(toklen, token)); } break;
                   1326: case 174:
                   1327: # line 778 "gram.in"
                   1328: { yyval.expval = mkcxcon(yypvt[-3].expval,yypvt[-1].expval); } break;
                   1329: case 175:
                   1330: # line 782 "gram.in"
                   1331: { NOEXT("hex constant");
                   1332:                  yyval.expval = mkbitcon(4, toklen, token); } break;
                   1333: case 176:
                   1334: # line 785 "gram.in"
                   1335: { NOEXT("octal constant");
                   1336:                  yyval.expval = mkbitcon(3, toklen, token); } break;
                   1337: case 177:
                   1338: # line 788 "gram.in"
                   1339: { NOEXT("binary constant");
                   1340:                  yyval.expval = mkbitcon(1, toklen, token); } break;
                   1341: case 179:
                   1342: # line 794 "gram.in"
                   1343: { yyval.expval = yypvt[-1].expval; } break;
                   1344: case 182:
                   1345: # line 800 "gram.in"
                   1346: { yyval.expval = mkexpr(yypvt[-1].ival, yypvt[-2].expval, yypvt[-0].expval); } break;
                   1347: case 183:
                   1348: # line 802 "gram.in"
                   1349: { yyval.expval = mkexpr(OPSTAR, yypvt[-2].expval, yypvt[-0].expval); } break;
                   1350: case 184:
                   1351: # line 804 "gram.in"
                   1352: { yyval.expval = mkexpr(OPSLASH, yypvt[-2].expval, yypvt[-0].expval); } break;
                   1353: case 185:
                   1354: # line 806 "gram.in"
                   1355: { yyval.expval = mkexpr(OPPOWER, yypvt[-2].expval, yypvt[-0].expval); } break;
                   1356: case 186:
                   1357: # line 808 "gram.in"
                   1358: { if(yypvt[-1].ival == OPMINUS)
                   1359:                        yyval.expval = mkexpr(OPNEG, yypvt[-0].expval, ENULL);
                   1360:                  else  yyval.expval = yypvt[-0].expval;
                   1361:                } break;
                   1362: case 187:
                   1363: # line 813 "gram.in"
                   1364: { NO66("concatenation operator //");
                   1365:                  yyval.expval = mkexpr(OPCONCAT, yypvt[-2].expval, yypvt[-0].expval); } break;
                   1366: case 189:
                   1367: # line 818 "gram.in"
                   1368: {
                   1369:                if(yypvt[-2].labval->labdefined)
                   1370:                        execerr("no backward DO loops", CNULL);
                   1371:                yypvt[-2].labval->blklevel = blklevel+1;
                   1372:                exdo(yypvt[-2].labval->labelno, yypvt[-0].chval);
                   1373:                } break;
                   1374: case 190:
                   1375: # line 825 "gram.in"
                   1376: { exendif();  thiswasbranch = NO; } break;
                   1377: case 192:
                   1378: # line 828 "gram.in"
                   1379: { exelif(yypvt[-2].expval); lastwasbranch = NO; } break;
                   1380: case 193:
                   1381: # line 830 "gram.in"
                   1382: { exelse(); lastwasbranch = NO; } break;
                   1383: case 194:
                   1384: # line 832 "gram.in"
                   1385: { exendif(); lastwasbranch = NO; } break;
                   1386: case 195:
                   1387: # line 836 "gram.in"
                   1388: { exif(yypvt[-1].expval); } break;
                   1389: case 196:
                   1390: # line 840 "gram.in"
                   1391: { yyval.chval = mkchain(yypvt[-2].namval, yypvt[-0].chval); } break;
                   1392: case 197:
                   1393: # line 844 "gram.in"
                   1394: { exequals(yypvt[-2].expval, yypvt[-0].expval); } break;
                   1395: case 198:
                   1396: # line 846 "gram.in"
                   1397: { exassign(yypvt[-0].namval, yypvt[-2].labval); } break;
                   1398: case 201:
                   1399: # line 850 "gram.in"
                   1400: { inioctl = NO; } break;
                   1401: case 202:
                   1402: # line 852 "gram.in"
                   1403: { exarif(yypvt[-6].expval, yypvt[-4].labval, yypvt[-2].labval, yypvt[-0].labval);  thiswasbranch = YES; } break;
                   1404: case 203:
                   1405: # line 854 "gram.in"
                   1406: { excall(yypvt[-0].namval, PNULL, 0, labarray); } break;
                   1407: case 204:
                   1408: # line 856 "gram.in"
                   1409: { excall(yypvt[-2].namval, PNULL, 0, labarray); } break;
                   1410: case 205:
                   1411: # line 858 "gram.in"
                   1412: { if(nstars < MAXLABLIST)
                   1413:                        excall(yypvt[-3].namval, mklist(yypvt[-1].chval), nstars, labarray);
                   1414:                  else
                   1415:                        err("too many alternate returns");
                   1416:                } break;
                   1417: case 206:
                   1418: # line 864 "gram.in"
                   1419: { exreturn(yypvt[-0].expval);  thiswasbranch = YES; } break;
                   1420: case 207:
                   1421: # line 866 "gram.in"
                   1422: { exstop(yypvt[-2].ival, yypvt[-0].expval);  thiswasbranch = yypvt[-2].ival; } break;
                   1423: case 208:
                   1424: # line 870 "gram.in"
                   1425: { yyval.labval = mklabel( convci(toklen, token) ); } break;
                   1426: case 209:
                   1427: # line 874 "gram.in"
                   1428: { if(parstate == OUTSIDE)
                   1429:                        {
                   1430:                        newproc();
                   1431:                        startproc(PNULL, CLMAIN);
                   1432:                        }
                   1433:                } break;
                   1434: case 210:
                   1435: # line 883 "gram.in"
                   1436: { exgoto(yypvt[-0].labval);  thiswasbranch = YES; } break;
                   1437: case 211:
                   1438: # line 885 "gram.in"
                   1439: { exasgoto(yypvt[-0].namval);  thiswasbranch = YES; } break;
                   1440: case 212:
                   1441: # line 887 "gram.in"
                   1442: { exasgoto(yypvt[-4].namval);  thiswasbranch = YES; } break;
                   1443: case 213:
                   1444: # line 889 "gram.in"
                   1445: { if(nstars < MAXLABLIST)
                   1446:                        putcmgo(fixtype(yypvt[-0].expval), nstars, labarray);
                   1447:                  else
                   1448:                        err("computed GOTO list too long");
                   1449:                } break;
                   1450: case 216:
                   1451: # line 901 "gram.in"
                   1452: { nstars = 0; yyval.namval = yypvt[-0].namval; } break;
                   1453: case 217:
                   1454: # line 905 "gram.in"
                   1455: { yyval.chval = (yypvt[-0].expval ? mkchain(yypvt[-0].expval,CHNULL) : CHNULL); } break;
                   1456: case 218:
                   1457: # line 907 "gram.in"
                   1458: { if(yypvt[-0].expval)
                   1459:                        if(yypvt[-2].chval) yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].expval,CHNULL));
                   1460:                        else yyval.chval = mkchain(yypvt[-0].expval,CHNULL);
                   1461:                  else
                   1462:                        yyval.chval = yypvt[-2].chval;
                   1463:                } break;
                   1464: case 220:
                   1465: # line 917 "gram.in"
                   1466: { if(nstars<MAXLABLIST) labarray[nstars++] = yypvt[-0].labval; yyval.expval = 0; } break;
                   1467: case 221:
                   1468: # line 921 "gram.in"
                   1469: { yyval.ival = 0; } break;
                   1470: case 222:
                   1471: # line 923 "gram.in"
                   1472: { yyval.ival = 1; } break;
                   1473: case 223:
                   1474: # line 927 "gram.in"
                   1475: { yyval.chval = mkchain(yypvt[-0].expval, CHNULL); } break;
                   1476: case 224:
                   1477: # line 929 "gram.in"
                   1478: { yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].expval,CHNULL) ); } break;
                   1479: case 225:
                   1480: # line 933 "gram.in"
                   1481: { if(parstate == OUTSIDE)
                   1482:                        {
                   1483:                        newproc();
                   1484:                        startproc(PNULL, CLMAIN);
                   1485:                        }
                   1486:                  if(parstate < INDATA) enddcl();
                   1487:                } break;
                   1488: case 226:
                   1489: # line 943 "gram.in"
                   1490: { intonly = YES; } break;
                   1491: case 227:
                   1492: # line 947 "gram.in"
                   1493: { intonly = NO; } break;
                   1494: case 228:
                   1495: # line 952 "gram.in"
                   1496: { endio(); } break;
                   1497: case 230:
                   1498: # line 957 "gram.in"
                   1499: { ioclause(IOSUNIT, yypvt[-0].expval); endioctl(); } break;
                   1500: case 231:
                   1501: # line 959 "gram.in"
                   1502: { ioclause(IOSUNIT, PNULL); endioctl(); } break;
                   1503: case 232:
                   1504: # line 961 "gram.in"
                   1505: { ioclause(IOSUNIT, IOSTDERR); endioctl(); } break;
                   1506: case 234:
                   1507: # line 964 "gram.in"
                   1508: { doio(PNULL); } break;
                   1509: case 235:
                   1510: # line 966 "gram.in"
                   1511: { doio(PNULL); } break;
                   1512: case 236:
                   1513: # line 968 "gram.in"
                   1514: { doio(yypvt[-0].chval); } break;
                   1515: case 237:
                   1516: # line 970 "gram.in"
                   1517: { doio(yypvt[-0].chval); } break;
                   1518: case 238:
                   1519: # line 972 "gram.in"
                   1520: { doio(yypvt[-0].chval); } break;
                   1521: case 239:
                   1522: # line 974 "gram.in"
                   1523: { doio(PNULL); } break;
                   1524: case 240:
                   1525: # line 976 "gram.in"
                   1526: { doio(yypvt[-0].chval); } break;
                   1527: case 241:
                   1528: # line 978 "gram.in"
                   1529: { doio(PNULL); } break;
                   1530: case 242:
                   1531: # line 980 "gram.in"
                   1532: { doio(yypvt[-0].chval); } break;
                   1533: case 244:
                   1534: # line 987 "gram.in"
                   1535: { iostmt = IOBACKSPACE; } break;
                   1536: case 245:
                   1537: # line 989 "gram.in"
                   1538: { iostmt = IOREWIND; } break;
                   1539: case 246:
                   1540: # line 991 "gram.in"
                   1541: { iostmt = IOENDFILE; } break;
                   1542: case 248:
                   1543: # line 998 "gram.in"
                   1544: { iostmt = IOINQUIRE; } break;
                   1545: case 249:
                   1546: # line 1000 "gram.in"
                   1547: { iostmt = IOOPEN; } break;
                   1548: case 250:
                   1549: # line 1002 "gram.in"
                   1550: { iostmt = IOCLOSE; } break;
                   1551: case 251:
                   1552: # line 1006 "gram.in"
                   1553: {
                   1554:                ioclause(IOSUNIT, PNULL);
                   1555:                ioclause(IOSFMT, yypvt[-0].expval);
                   1556:                endioctl();
                   1557:                } break;
                   1558: case 252:
                   1559: # line 1012 "gram.in"
                   1560: {
                   1561:                ioclause(IOSUNIT, PNULL);
                   1562:                ioclause(IOSFMT, PNULL);
                   1563:                endioctl();
                   1564:                } break;
                   1565: case 253:
                   1566: # line 1020 "gram.in"
                   1567: { if(yypvt[-1].expval->headblock.vtype == TYCHAR)
                   1568:                        {
                   1569:                        ioclause(IOSUNIT, PNULL);
                   1570:                        ioclause(IOSFMT, yypvt[-1].expval);
                   1571:                        }
                   1572:                  else
                   1573:                        ioclause(IOSUNIT, yypvt[-1].expval);
                   1574:                  endioctl();
                   1575:                } break;
                   1576: case 254:
                   1577: # line 1030 "gram.in"
                   1578: { endioctl(); } break;
                   1579: case 257:
                   1580: # line 1038 "gram.in"
                   1581: { ioclause(IOSPOSITIONAL, yypvt[-0].expval); } break;
                   1582: case 258:
                   1583: # line 1040 "gram.in"
                   1584: { ioclause(IOSPOSITIONAL, PNULL); } break;
                   1585: case 259:
                   1586: # line 1042 "gram.in"
                   1587: { ioclause(IOSPOSITIONAL, IOSTDERR); } break;
                   1588: case 260:
                   1589: # line 1044 "gram.in"
                   1590: { ioclause(yypvt[-1].ival, yypvt[-0].expval); } break;
                   1591: case 261:
                   1592: # line 1046 "gram.in"
                   1593: { ioclause(yypvt[-1].ival, PNULL); } break;
                   1594: case 262:
                   1595: # line 1048 "gram.in"
                   1596: { ioclause(yypvt[-1].ival, IOSTDERR); } break;
                   1597: case 263:
                   1598: # line 1052 "gram.in"
                   1599: { yyval.ival = iocname(); } break;
                   1600: case 264:
                   1601: # line 1056 "gram.in"
                   1602: { iostmt = IOREAD; } break;
                   1603: case 265:
                   1604: # line 1060 "gram.in"
                   1605: { iostmt = IOWRITE; } break;
                   1606: case 266:
                   1607: # line 1064 "gram.in"
                   1608: {
                   1609:                iostmt = IOWRITE;
                   1610:                ioclause(IOSUNIT, PNULL);
                   1611:                ioclause(IOSFMT, yypvt[-1].expval);
                   1612:                endioctl();
                   1613:                } break;
                   1614: case 267:
                   1615: # line 1071 "gram.in"
                   1616: {
                   1617:                iostmt = IOWRITE;
                   1618:                ioclause(IOSUNIT, PNULL);
                   1619:                ioclause(IOSFMT, PNULL);
                   1620:                endioctl();
                   1621:                } break;
                   1622: case 268:
                   1623: # line 1080 "gram.in"
                   1624: { yyval.chval = mkchain(yypvt[-0].tagval, CHNULL); } break;
                   1625: case 269:
                   1626: # line 1082 "gram.in"
                   1627: { yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].tagval, CHNULL)); } break;
                   1628: case 270:
                   1629: # line 1086 "gram.in"
                   1630: { yyval.tagval = (tagptr) yypvt[-0].expval; } break;
                   1631: case 271:
                   1632: # line 1088 "gram.in"
                   1633: { yyval.tagval = (tagptr) mkiodo(yypvt[-1].chval,yypvt[-3].chval); } break;
                   1634: case 272:
                   1635: # line 1092 "gram.in"
                   1636: { yyval.chval = mkchain(yypvt[-0].expval, CHNULL); } break;
                   1637: case 273:
                   1638: # line 1094 "gram.in"
                   1639: { yyval.chval = mkchain(yypvt[-0].tagval, CHNULL); } break;
                   1640: case 275:
                   1641: # line 1099 "gram.in"
                   1642: { yyval.chval = mkchain(yypvt[-2].expval, mkchain(yypvt[-0].expval, CHNULL) ); } break;
                   1643: case 276:
                   1644: # line 1101 "gram.in"
                   1645: { yyval.chval = mkchain(yypvt[-2].expval, mkchain(yypvt[-0].tagval, CHNULL) ); } break;
                   1646: case 277:
                   1647: # line 1103 "gram.in"
                   1648: { yyval.chval = mkchain(yypvt[-2].tagval, mkchain(yypvt[-0].expval, CHNULL) ); } break;
                   1649: case 278:
                   1650: # line 1105 "gram.in"
                   1651: { yyval.chval = mkchain(yypvt[-2].tagval, mkchain(yypvt[-0].tagval, CHNULL) ); } break;
                   1652: case 279:
                   1653: # line 1107 "gram.in"
                   1654: { yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].expval, CHNULL) ); } break;
                   1655: case 280:
                   1656: # line 1109 "gram.in"
                   1657: { yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].tagval, CHNULL) ); } break;
                   1658: case 281:
                   1659: # line 1113 "gram.in"
                   1660: { yyval.tagval = (tagptr) yypvt[-0].expval; } break;
                   1661: case 282:
                   1662: # line 1115 "gram.in"
                   1663: { yyval.tagval = (tagptr) mkiodo(yypvt[-1].chval, mkchain(yypvt[-3].expval, CHNULL) ); } break;
                   1664: case 283:
                   1665: # line 1117 "gram.in"
                   1666: { yyval.tagval = (tagptr) mkiodo(yypvt[-1].chval, mkchain(yypvt[-3].tagval, CHNULL) ); } break;
                   1667: case 284:
                   1668: # line 1119 "gram.in"
                   1669: { yyval.tagval = (tagptr) mkiodo(yypvt[-1].chval, yypvt[-3].chval); } break;
                   1670: case 285:
                   1671: # line 1123 "gram.in"
                   1672: { startioctl(); } break;
                   1673:                }
                   1674:                goto yystack;  /* stack new state and value */
                   1675: 
                   1676:        }

unix.superglobalmegacorp.com

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