Annotation of coherent/d/bin/sh/y.tab.c, revision 1.1.1.1

1.1       root        1: 
                      2: #line 9 "/usr/src/cmd0/sh/sh.y"
                      3: 
                      4: #include "sh.h"
                      5: 
                      6: #define YYERROR        { yyerrflag=1; goto YYerract; }
                      7: 
                      8: extern NODE    *node();
                      9: 
                     10: #include "y.tab.h"
                     11: #define YYCLEARIN yychar = -1000
                     12: #define YYERROK yyerrflag = 0
                     13: extern int yychar;
                     14: extern short yyerrflag;
                     15: #ifndef YYMAXDEPTH
                     16: #define YYMAXDEPTH 150
                     17: #endif
                     18: YYSTYPE yyval, yylval;
                     19: 
                     20: #line 347 "/usr/src/cmd0/sh/sh.y"
                     21: 
                     22: /*
                     23:  * Create a node.
                     24:  */
                     25: NODE *
                     26: node(type, auxp, next)
                     27: NODE *auxp, *next;
                     28: {
                     29:        register NODE *np;
                     30: 
                     31:        np = (NODE *) balloc(sizeof (NODE));
                     32:        np->n_type = type;
                     33:        np->n_auxp = auxp;
                     34:        np->n_next = next;
                     35:        return np;
                     36: }
                     37: 
                     38: #define NBPC 8
                     39: #define NKEY 8
                     40: static char keys[NKEY] = { 0 };
                     41: static int  keyi = NKEY * NBPC;
                     42: 
                     43: keyflush()
                     44: {
                     45:        register char *kp;
                     46: 
                     47:        for (kp = keys+NKEY; kp > keys; *--kp = 0)
                     48:                ;
                     49:        keyi = NKEY * NBPC;
                     50: }
                     51: 
                     52: keypop()
                     53: {
                     54:        register char   *kp;
                     55:        register int    km;
                     56: 
                     57:        if ((km = keyi++) >= NKEY * NBPC) {
                     58:                panic(11);
                     59:                NOTREACHED;
                     60:        }
                     61:        kp = keys + (km / NBPC);
                     62:        km = 1 << (km %= NBPC);
                     63:        keyflag = (*kp & km) ? 1 : 0;
                     64:        *kp &= ~km;
                     65: }
                     66: 
                     67: keypush()
                     68: {
                     69:        register char   *kp;
                     70:        register int    km;
                     71: 
                     72:        if ((km = --keyi) < 0) {
                     73:                panic(12);
                     74:                NOTREACHED;
                     75:        }
                     76:        if (keyflag) {
                     77:                kp = keys + (km / NBPC);
                     78:                km = 1 << (km %= NBPC);
                     79:                *kp |= km;
                     80:        }
                     81: }
                     82: /*
                     83:  * The following fragments might implement named pipes.
                     84:  * The token declaration goes in the header.
                     85:  * The nopen production should go with the others of its ilk.
                     86:  * The production fragment goes into arg:
                     87: %token _NOPEN _NCLOSE
                     88: nopen: _NOPEN optnls ;
                     89: 
                     90: |      nopen pipe_cmd ')' {
                     91:                $$ = node(NRPIPE, $2, NULL);
                     92:        }
                     93: |      oparen pipe_cmd _NCLOSE {
                     94:                $$ = node(NWPIPE, $2, NULL);
                     95:        }
                     96:  *
                     97:  */
                     98: 
                     99: /* end of sh/sh.y */
                    100: #ifdef YYTNAMES
                    101: readonly struct yytname yytnames[31] =
                    102: {
                    103:        "$end", -1, 
                    104:        "error", -2, 
                    105:        "_ANDF", 256, 
                    106:        "_ASGN", 257, 
                    107:        "_CASE", 258, 
                    108:        "_CBRAC", 259, 
                    109:        "_DO", 260, 
                    110:        "_DONE", 261, 
                    111:        "_DSEMI", 262, 
                    112:        "_ELIF", 263, 
                    113:        "_ELSE", 264, 
                    114:        "_ESAC", 265, 
                    115:        "_FI", 266, 
                    116:        "_FOR", 267, 
                    117:        "_IF", 268, 
                    118:        "_IN", 269, 
                    119:        "_IORS", 270, 
                    120:        "_NAME", 271, 
                    121:        "_NULL", 272, 
                    122:        "_OBRAC", 273, 
                    123:        "_ORF", 274, 
                    124:        "_THEN", 275, 
                    125:        "_UNTIL", 276, 
                    126:        "_WHILE", 277, 
                    127:        "'\\n'", 10, 
                    128:        "';'", 59, 
                    129:        "'|'", 124, 
                    130:        "'('", 40, 
                    131:        "')'", 41, 
                    132:        "'&'", 38, 
                    133:        NULL
                    134: } ;
                    135: #endif
                    136: #include <action.h>
                    137: readonly unsigned char yypdnt[78] = {
                    138: 0, 1, 1, 2, 2, 2, 4, 6,
                    139: 7, 8, 9, 9, 10, 10, 11, 11,
                    140: 13, 14, 15, 16, 17, 18, 19, 3,
                    141: 3, 3, 3, 3, 20, 20, 20, 21,
                    142: 21, 22, 23, 24, 24, 25, 25, 25,
                    143: 25, 26, 27, 28, 29, 29, 29, 29,
                    144: 29, 29, 29, 29, 30, 30, 36, 36,
                    145: 32, 32, 32, 37, 38, 38, 31, 31,
                    146: 35, 35, 35, 34, 34, 33, 33, 12,
                    147: 12, 12, 5, 5, 39, 39 
                    148: };
                    149: readonly unsigned char yypn[78] = {
                    150: 2, 2, 0, 1, 2, 2, 2, 2,
                    151: 2, 2, 2, 2, 2, 3, 1, 2,
                    152: 2, 2, 2, 2, 2, 2, 2, 1,
                    153: 2, 2, 3, 3, 1, 3, 3, 3,
                    154: 1, 2, 0, 2, 1, 1, 1, 1,
                    155: 1, 1, 1, 1, 6, 5, 6, 5,
                    156: 4, 6, 3, 3, 2, 0, 2, 0,
                    157: 3, 1, 0, 3, 3, 1, 2, 0,
                    158: 5, 2, 0, 1, 0, 3, 2, 1,
                    159: 1, 2, 1, 0, 1, 2 
                    160: };
                    161: readonly unsigned char yypgo[40] = {
                    162: 0, 0, 2, 4, 12, 14, 46, 50,
                    163: 52, 54, 56, 58, 62, 68, 70, 72,
                    164: 74, 76, 78, 80, 82, 88, 92, 94,
                    165: 96, 100, 102, 104, 118, 120, 122, 124,
                    166: 130, 136, 146, 160, 164, 168, 170, 174
                    167: };
                    168: readonly unsigned int yygo[186] = {
                    169: YYOTHERS, 0x1, YYOTHERS, 0x5, 0x1, 0x6, 0xd, 0x29,
                    170: 0xe, 0x2a, YYOTHERS, 0x3a, YYOTHERS, 0x1f, 0x10, 0x2e,
                    171: 0x13, 0x31, 0x18, 0x35, 0x1b, 0x36, 0x1c, 0x37,
                    172: 0x1d, 0x38, 0x1e, 0x39, 0x3a, 0x49, 0x4b, 0x5e,
                    173: 0x4d, 0x61, 0x60, 0x73, 0x66, 0x75, 0x68, 0x77,
                    174: 0x6e, 0x7b, 0x6f, 0x7c, YYOTHERS, 0x2c, 0x7d, 0x80,
                    175: YYOTHERS, 0x4c, YYOTHERS, 0x70, YYOTHERS, 0x71, YYOTHERS, 0x20,
                    176: YYOTHERS, 0x4e, 0x45, 0x58, YYOTHERS, 0x44, 0x42, 0x52,
                    177: 0x48, 0x5b, YYOTHERS, 0x45, YYOTHERS, 0x11, YYOTHERS, 0x12,
                    178: YYOTHERS, 0x14, YYOTHERS, 0x21, YYOTHERS, 0x22, YYOTHERS, 0x69,
                    179: YYOTHERS, 0x67, 0x11, 0x2f, 0x12, 0x30, YYOTHERS, 0x7,
                    180: 0x14, 0x32, YYOTHERS, 0x8, YYOTHERS, 0x9, YYOTHERS, 0xa,
                    181: 0x24, 0x40, YYOTHERS, 0x23, YYOTHERS, 0x24, YYOTHERS, 0x25,
                    182: 0xa, 0x26, 0x16, 0x33, 0x17, 0x34, 0x24, 0x26,
                    183: 0x47, 0x59, 0x59, 0x59, YYOTHERS, 0x54, YYOTHERS, 0x27,
                    184: YYOTHERS, 0x28, YYOTHERS, 0x48, 0x48, 0x5c, 0x5b, 0x6c,
                    185: YYOTHERS, 0x4f, 0x58, 0x6a, 0x67, 0x76, YYOTHERS, 0x55,
                    186: 0x1f, 0x3b, 0x20, 0x3c, 0x4a, 0x5d, 0x70, 0x7d,
                    187: YYOTHERS, 0x3d, 0x22, 0x3f, 0x4c, 0x5f, 0x4e, 0x62,
                    188: 0x69, 0x78, 0x71, 0x7e, 0x80, 0x81, YYOTHERS, 0x3e,
                    189: 0x81, 0x82, YYOTHERS, 0x72, 0x59, 0x6b, YYOTHERS, 0x5a,
                    190: YYOTHERS, 0x56, 0x64, 0x74, YYOTHERS, 0x57, 0x33, 0x46,
                    191: 0x3a, 0x4a, 0x42, 0x46, 0x43, 0x53, 0x48, 0x46,
                    192: YYOTHERS, 0x2d 
                    193: };
                    194: readonly unsigned short yypa[131] = {
                    195: 0, 2, 28, 32, 36, 38, 40, 44,
                    196: 50, 56, 60, 82, 84, 86, 108, 130,
                    197: 130, 134, 134, 130, 136, 138, 140, 140,
                    198: 130, 144, 146, 130, 130, 130, 130, 136,
                    199: 136, 148, 152, 156, 158, 180, 182, 184,
                    200: 186, 188, 190, 192, 194, 196, 200, 202,
                    201: 204, 206, 208, 210, 218, 222, 224, 226,
                    202: 228, 230, 130, 232, 236, 240, 242, 246,
                    203: 250, 252, 254, 260, 264, 268, 272, 276,
                    204: 280, 288, 290, 130, 314, 322, 328, 332,
                    205: 336, 338, 340, 342, 346, 350, 354, 358,
                    206: 264, 276, 362, 236, 364, 368, 370, 372,
                    207: 130, 378, 380, 382, 384, 388, 130, 264,
                    208: 130, 390, 396, 400, 402, 406, 130, 130,
                    209: 136, 408, 412, 416, 418, 420, 422, 424,
                    210: 426, 428, 430, 432, 434, 232, 436, 438,
                    211: 314, 440, 446 
                    212: };
                    213: readonly unsigned int yyact[448] = {
                    214: 0x2002, YYOTHERS, 0x2, YYEOFVAL, 0x4, 0xa, 0x2022, 0x101,
                    215: 0x2022, 0x102, 0x2022, 0x10b, 0x2022, 0x10c, 0x2022, 0x10e,
                    216: 0x2022, 0x10f, 0x2022, 0x111, 0x2022, 0x114, 0x2022, 0x115,
                    217: 0x2022, 0x28, 0x3, YYOTHERS, 0x4000, YYEOFVAL, 0x6000, YYOTHERS,
                    218: 0xb, 0xa, 0x6000, YYOTHERS, 0x2003, YYOTHERS, 0x2001, YYOTHERS,
                    219: 0xc, 0xa, 0x6000, YYOTHERS, 0xd, 0x3b, 0xe, 0x26,
                    220: 0x2017, YYOTHERS, 0xf, 0x100, 0x10, 0x112, 0x201c, YYOTHERS,
                    221: 0x13, 0x7c, 0x2020, YYOTHERS, 0x15, 0x101, 0x16, 0x102,
                    222: 0x17, 0x10b, 0x18, 0x10c, 0x19, 0x10e, 0x1a, 0x10f,
                    223: 0x1b, 0x111, 0x1c, 0x114, 0x1d, 0x115, 0x1e, 0x28,
                    224: 0x6000, YYOTHERS, 0x2005, YYOTHERS, 0x2004, YYOTHERS, 0x2022, 0x101,
                    225: 0x2022, 0x102, 0x2022, 0x10b, 0x2022, 0x10c, 0x2022, 0x10e,
                    226: 0x2022, 0x10f, 0x2022, 0x111, 0x2022, 0x114, 0x2022, 0x115,
                    227: 0x2022, 0x28, 0x2019, YYOTHERS, 0x2022, 0x101, 0x2022, 0x102,
                    228: 0x2022, 0x10b, 0x2022, 0x10c, 0x2022, 0x10e, 0x2022, 0x10f,
                    229: 0x2022, 0x111, 0x2022, 0x114, 0x2022, 0x115, 0x2022, 0x28,
                    230: 0x2018, YYOTHERS, 0x2b, 0xa, 0x204b, YYOTHERS, 0x2022, YYOTHERS,
                    231: 0x2022, YYOTHERS, 0x202b, YYOTHERS, 0x1a, 0x10f, 0x6000, YYOTHERS,
                    232: 0x2029, YYOTHERS, 0x202a, YYOTHERS, 0x2044, 0x29, 0x2022, YYOTHERS,
                    233: 0x2044, 0x103, 0x2022, YYOTHERS, 0x2021, YYOTHERS, 0x15, 0x101,
                    234: 0x16, 0x102, 0x17, 0x10b, 0x18, 0x10c, 0x19, 0x10e,
                    235: 0x1a, 0x10f, 0x1b, 0x111, 0x1c, 0x114, 0x1d, 0x115,
                    236: 0x1e, 0x28, 0x2024, YYOTHERS, 0x2025, YYOTHERS, 0x2026, YYOTHERS,
                    237: 0x2027, YYOTHERS, 0x2028, YYOTHERS, 0x201b, YYOTHERS, 0x201a, YYOTHERS,
                    238: 0x204c, YYOTHERS, 0x2011, YYOTHERS, 0x41, 0xa, 0x204a, YYOTHERS,
                    239: 0x2010, YYOTHERS, 0x201d, YYOTHERS, 0x201e, YYOTHERS, 0x2012, YYOTHERS,
                    240: 0x201f, YYOTHERS, 0x42, 0x10d, 0x2b, 0xa, 0x43, 0x3b,
                    241: 0x6000, YYOTHERS, 0x47, 0x10d, 0x2035, YYOTHERS, 0x2006, YYOTHERS,
                    242: 0x2014, YYOTHERS, 0x200b, YYOTHERS, 0x200a, YYOTHERS, 0x2013, YYOTHERS,
                    243: 0x4b, 0x113, 0x6000, YYOTHERS, 0x4d, 0x104, 0x203f, YYOTHERS,
                    244: 0x2043, YYOTHERS, 0x50, 0x29, 0x6000, YYOTHERS, 0x51, 0x103,
                    245: 0x6000, YYOTHERS, 0x2023, YYOTHERS, 0x204d, YYOTHERS, 0x2b, 0xa,
                    246: 0x43, 0x3b, 0x200e, YYOTHERS, 0x2b, 0xa, 0x2048, YYOTHERS,
                    247: 0x1a, 0x10f, 0x203a, YYOTHERS, 0x42, 0x10d, 0x6000, YYOTHERS,
                    248: 0x41, 0xa, 0x2047, YYOTHERS, 0x1a, 0x10f, 0x2037, YYOTHERS,
                    249: 0x4d, 0x104, 0x2b, 0xa, 0x43, 0x3b, 0x203f, YYOTHERS,
                    250: 0x2046, YYOTHERS, 0x41, 0xa, 0x204a, 0x103, 0x204a, 0x104,
                    251: 0x204a, 0x105, 0x204a, 0x106, 0x204a, 0x107, 0x204a, 0x108,
                    252: 0x204a, 0x109, 0x204a, 0x10a, 0x204a, 0x113, 0x204a, 0x29,
                    253: 0x2022, YYOTHERS, 0x2044, 0x107, 0x2044, 0x108, 0x2044, 0x10a,
                    254: 0x2022, YYOTHERS, 0x2b, 0xa, 0x60, 0x3b, 0x204b, YYOTHERS,
                    255: 0x2044, 0x105, 0x2022, YYOTHERS, 0x63, 0x105, 0x6000, YYOTHERS,
                    256: 0x2032, YYOTHERS, 0x2033, YYOTHERS, 0x200f, YYOTHERS, 0x41, 0xa,
                    257: 0x2049, YYOTHERS, 0x64, 0x7c, 0x203d, YYOTHERS, 0x65, 0x109,
                    258: 0x6000, YYOTHERS, 0x66, 0x106, 0x2039, YYOTHERS, 0x68, 0x29,
                    259: 0x6000, YYOTHERS, 0x2034, YYOTHERS, 0x6d, 0x105, 0x6000, YYOTHERS,
                    260: 0x2045, YYOTHERS, 0x2007, YYOTHERS, 0x6e, 0x107, 0x6f, 0x108,
                    261: 0x2042, YYOTHERS, 0x200c, YYOTHERS, 0x203e, YYOTHERS, 0x2030, YYOTHERS,
                    262: 0x1a, 0x10f, 0x6000, YYOTHERS, 0x202f, YYOTHERS, 0x2044, 0x106,
                    263: 0x2044, 0x109, 0x2022, YYOTHERS, 0x79, 0x109, 0x6000, YYOTHERS,
                    264: 0x2036, YYOTHERS, 0x7a, 0x105, 0x6000, YYOTHERS, 0x202d, YYOTHERS,
                    265: 0x2044, 0x10a, 0x2022, YYOTHERS, 0x7f, 0x10a, 0x6000, YYOTHERS,
                    266: 0x200d, YYOTHERS, 0x203c, YYOTHERS, 0x2016, YYOTHERS, 0x2038, YYOTHERS,
                    267: 0x2015, YYOTHERS, 0x203b, YYOTHERS, 0x202e, YYOTHERS, 0x202c, YYOTHERS,
                    268: 0x2008, YYOTHERS, 0x2009, YYOTHERS, 0x2041, YYOTHERS, 0x2031, YYOTHERS,
                    269: 0x6e, 0x107, 0x6f, 0x108, 0x2042, YYOTHERS, 0x2040, YYOTHERS
                    270: };
                    271: #define YYNOCHAR (-1000)
                    272: #define        yyerrok yyerrflag=0
                    273: #define        yyclearin       yylval=YYNOCHAR
                    274: int yystack[YYMAXDEPTH];
                    275: YYSTYPE yyvstack[YYMAXDEPTH], *yyv;
                    276: int yychar;
                    277: 
                    278: #ifdef YYDEBUG
                    279: int yydebug = 1;       /* No sir, not in the BSS */
                    280: #include <stdio.h>
                    281: #endif
                    282: 
                    283: short yyerrflag;
                    284: int *yys;
                    285: 
                    286: yyparse()
                    287: {
                    288:        register YYSTYPE *yypvt;
                    289:        int act;
                    290:        register unsigned *ip, yystate;
                    291:        int pno;
                    292:        yystate = 0;
                    293:        yychar = YYNOCHAR;
                    294:        yyv = &yyvstack[-1];
                    295:        yys = &yystack[-1];
                    296: 
                    297: stack:
                    298:        if( ++yys >= &yystack[YYMAXDEPTH] ) {
                    299:                write(2, "Stack overflow\n", 15);
                    300:                exit(1);
                    301:        }
                    302:        *yys = yystate;
                    303:        *++yyv = yyval;
                    304: #ifdef YYDEBUG
                    305:        if( yydebug )
                    306:                fprintf(stdout, "Stack state %d, char %d\n", yystate, yychar);
                    307: #endif
                    308: 
                    309: read:
                    310:        ip = &yyact[yypa[yystate]];
                    311:        if( ip[1] != YYNOCHAR ) {
                    312:                if( yychar == YYNOCHAR ) {
                    313:                        yychar = yylex();
                    314: #ifdef YYDEBUG
                    315:                        if( yydebug )
                    316:                                fprintf(stdout, "lex read char %d, val %d\n", yychar, yylval);
                    317: #endif
                    318:                }
                    319:                while (ip[1]!=YYNOCHAR) {
                    320:                        if (ip[1]==yychar)
                    321:                                break;
                    322:                        ip += 2;
                    323:                }
                    324:        }
                    325:        act = ip[0];
                    326:        switch( act>>YYACTSH ) {
                    327:        case YYSHIFTACT:
                    328:                if( ip[1]==YYNOCHAR )
                    329:                        goto YYerract;
                    330:                if( yychar != -1 )
                    331:                        yychar = YYNOCHAR; /* dont throw away EOF */
                    332:                yystate = act&YYAMASK;
                    333:                yyval = yylval;
                    334: #ifdef YYDEBUG
                    335:                if( yydebug )
                    336:                        fprintf(stdout, "shift %d\n", yystate);
                    337: #endif
                    338:                if( yyerrflag )
                    339:                        --yyerrflag;
                    340:                goto stack;
                    341: 
                    342:        case YYACCEPTACT:
                    343: #ifdef YYDEBUG
                    344:                if( yydebug )
                    345:                        fprintf(stdout, "accept\n");
                    346: #endif
                    347:                return(0);
                    348: 
                    349:        case YYERRACT:
                    350:        YYerract:
                    351:                switch (yyerrflag) {
                    352:                case 0:
                    353:                        yyerror("Syntax error");
                    354: 
                    355:                case 1:
                    356:                case 2:
                    357: 
                    358:                        yyerrflag = 3;
                    359:                        while( yys >= & yystack[0] ) {
                    360:                                ip = &yyact[yypa[*yys]];
                    361:                                while( ip[1]!=YYNOCHAR )
                    362:                                        ip += 2;
                    363:                                if( (*ip&~YYAMASK) == (YYSHIFTACT<<YYACTSH) ) {
                    364:                                        yystate = *ip&YYAMASK;
                    365:                                        goto stack;
                    366:                                }
                    367: #ifdef YYDEBUG
                    368:                                if( yydebug )
                    369:                                        fprintf(stderr, "error recovery leaves state %d, uncovers %d\n", *yys, yys[-1]);
                    370: #endif
                    371:                                yys--;
                    372:                                yyv--;
                    373:                        }
                    374: #ifdef YYDEBUG
                    375:                        if( yydebug )
                    376:                                fprintf(stderr, "no shift on error; abort\n");
                    377: #endif
                    378:                        return(1);
                    379: 
                    380:                case 3:
                    381: #ifdef YYDEBUG
                    382:                        if( yydebug )
                    383:                                fprintf(stderr, "Error recovery clobbers char %o\n", yychar);
                    384: #endif
                    385:                        if( yychar==YYEOFVAL )
                    386:                                return(1);
                    387:                        yychar = YYNOCHAR;
                    388:                        goto read;
                    389:                }
                    390: 
                    391:        case YYREDACT:
                    392:                pno = act&YYAMASK;
                    393: #ifdef YYDEBUG
                    394:                if( yydebug )
                    395:                        fprintf(stdout, "reduce %d\n", pno);
                    396: #endif
                    397:                yypvt = yyv;
                    398:                yyv -= yypn[pno];
                    399:                yys -= yypn[pno];
                    400:                yyval = yyv[1];
                    401:                switch(pno) {
                    402: 
                    403: case 3: {
                    404: 
                    405: #line 64 "/usr/src/cmd0/sh/sh.y"
                    406: 
                    407:                sesp->s_node = NULL;
                    408:                reset(RCMD);
                    409:                NOTREACHED;
                    410:        }break;
                    411: 
                    412: case 4: {
                    413: 
                    414: #line 70 "/usr/src/cmd0/sh/sh.y"
                    415: 
                    416:                sesp->s_node = yypvt[-1].yu_node;
                    417:                reset(errflag ? RERR : RCMD);
                    418:                NOTREACHED;
                    419:        }break;
                    420: 
                    421: case 5: {
                    422: 
                    423: #line 75 "/usr/src/cmd0/sh/sh.y"
                    424: 
                    425:                keyflush();
                    426:                keyflag = 1;
                    427:                reset(RERR);
                    428:                NOTREACHED;
                    429:        }break;
                    430: 
                    431: case 10: {
                    432: 
                    433: #line 91 "/usr/src/cmd0/sh/sh.y"
                    434:        yyval.yu_nval = NWHILE; }break;
                    435: 
                    436: case 11: {
                    437: 
                    438: #line 92 "/usr/src/cmd0/sh/sh.y"
                    439:        yyval.yu_nval = NUNTIL; }break;
                    440: 
                    441: case 23: {
                    442: 
                    443: #line 114 "/usr/src/cmd0/sh/sh.y"
                    444: 
                    445:                yyval.yu_node = yypvt[0].yu_node;
                    446:        }break;
                    447: 
                    448: case 24: {
                    449: 
                    450: #line 117 "/usr/src/cmd0/sh/sh.y"
                    451: 
                    452:                yyval.yu_node = node(NBACK, yypvt[-1].yu_node, NULL);
                    453:        }break;
                    454: 
                    455: case 25: {
                    456: 
                    457: #line 120 "/usr/src/cmd0/sh/sh.y"
                    458: 
                    459:                yyval.yu_node = yypvt[-1].yu_node;
                    460:        }break;
                    461: 
                    462: case 26: {
                    463: 
                    464: #line 123 "/usr/src/cmd0/sh/sh.y"
                    465: 
                    466:                yyval.yu_node = node(NBACK, yypvt[-2].yu_node, yypvt[0].yu_node);
                    467:        }break;
                    468: 
                    469: case 27: {
                    470: 
                    471: #line 126 "/usr/src/cmd0/sh/sh.y"
                    472: 
                    473:                yyval.yu_node = node(NLIST, yypvt[-2].yu_node, yypvt[0].yu_node);
                    474:        }break;
                    475: 
                    476: case 28: {
                    477: 
                    478: #line 132 "/usr/src/cmd0/sh/sh.y"
                    479: 
                    480:                yyval.yu_node = yypvt[0].yu_node;
                    481:        }break;
                    482: 
                    483: case 29: {
                    484: 
                    485: #line 135 "/usr/src/cmd0/sh/sh.y"
                    486: 
                    487:                yyval.yu_node = node(NORF, yypvt[-2].yu_node, yypvt[0].yu_node);
                    488:        }break;
                    489: 
                    490: case 30: {
                    491: 
                    492: #line 138 "/usr/src/cmd0/sh/sh.y"
                    493: 
                    494:                yyval.yu_node = node(NANDF, yypvt[-2].yu_node, yypvt[0].yu_node);
                    495:        }break;
                    496: 
                    497: case 31: {
                    498: 
                    499: #line 144 "/usr/src/cmd0/sh/sh.y"
                    500: 
                    501:                yyval.yu_node = node(NPIPE, yypvt[-2].yu_node, yypvt[0].yu_node);
                    502:        }break;
                    503: 
                    504: case 32: {
                    505: 
                    506: #line 147 "/usr/src/cmd0/sh/sh.y"
                    507: 
                    508:                yyval.yu_node = yypvt[0].yu_node;
                    509:        }break;
                    510: 
                    511: case 33: {
                    512: 
                    513: #line 153 "/usr/src/cmd0/sh/sh.y"
                    514: 
                    515:                yyval.yu_node = node(NCOMS, yypvt[0].yu_node, NULL);
                    516:                keypop();
                    517:        }break;
                    518: 
                    519: case 34: {
                    520: 
                    521: #line 160 "/usr/src/cmd0/sh/sh.y"
                    522: 
                    523:                keypush();
                    524:                keyflag = 1;
                    525:        }break;
                    526: 
                    527: case 35: {
                    528: 
                    529: #line 167 "/usr/src/cmd0/sh/sh.y"
                    530: 
                    531:                if ((yypvt[-1].yu_node->n_type == NCTRL && yypvt[0].yu_node->n_type == NARGS)
                    532:                 || (yypvt[-1].yu_node->n_type == NARGS && yypvt[0].yu_node->n_type == NCTRL)) {
                    533:                        YYERROR;
                    534:                }
                    535:                (yyval.yu_node = yypvt[-1].yu_node)->n_next = yypvt[0].yu_node;
                    536:        }break;
                    537: 
                    538: case 36: {
                    539: 
                    540: #line 174 "/usr/src/cmd0/sh/sh.y"
                    541: 
                    542:                yyval.yu_node = yypvt[0].yu_node;
                    543:        }break;
                    544: 
                    545: case 37: {
                    546: 
                    547: #line 180 "/usr/src/cmd0/sh/sh.y"
                    548: 
                    549:                yyval.yu_node = node(NIORS, yypvt[0].yu_strp, NULL);
                    550:        }break;
                    551: 
                    552: case 38: {
                    553: 
                    554: #line 183 "/usr/src/cmd0/sh/sh.y"
                    555: 
                    556:                yyval.yu_node = node(NARGS, yypvt[0].yu_strp, NULL);
                    557:                keyflag = 0;
                    558:        }break;
                    559: 
                    560: case 39: {
                    561: 
                    562: #line 187 "/usr/src/cmd0/sh/sh.y"
                    563: 
                    564:                yyval.yu_node = node(NASSG, yypvt[0].yu_strp, NULL);
                    565:        }break;
                    566: 
                    567: case 40: {
                    568: 
                    569: #line 190 "/usr/src/cmd0/sh/sh.y"
                    570: 
                    571:                if (!keyflag) {
                    572:                        YYERROR;
                    573:                }
                    574:                yyval.yu_node = node(NCTRL, yypvt[0].yu_node, NULL);
                    575:                keyflag = 0;
                    576:        }break;
                    577: 
                    578: case 41: {
                    579: 
                    580: #line 199 "/usr/src/cmd0/sh/sh.y"
                    581: 
                    582:                yyval.yu_strp = duplstr(strt, 0);
                    583:        }break;
                    584: 
                    585: case 42: {
                    586: 
                    587: #line 204 "/usr/src/cmd0/sh/sh.y"
                    588: 
                    589:                yyval.yu_strp = duplstr(strt, 0);
                    590:        }break;
                    591: 
                    592: case 43: {
                    593: 
                    594: #line 209 "/usr/src/cmd0/sh/sh.y"
                    595: 
                    596:                yyval.yu_strp = duplstr(strt, 0);
                    597:        }break;
                    598: 
                    599: case 44: {
                    600: 
                    601: #line 215 "/usr/src/cmd0/sh/sh.y"
                    602: 
                    603:                yyval.yu_node = node(NFOR, yypvt[-4].yu_strp, node(NFOR2, yypvt[-3].yu_node, node(NLIST, yypvt[-1].yu_node, NULL)));
                    604:                yyval.yu_node->n_next->n_next->n_next = yyval.yu_node->n_next;
                    605:        }break;
                    606: 
                    607: case 45: {
                    608: 
                    609: #line 219 "/usr/src/cmd0/sh/sh.y"
                    610: 
                    611:                yyval.yu_node = node(NFOR, yypvt[-3].yu_strp, node(NFOR2, yypvt[-2].yu_node, node(NLIST, yypvt[-1].yu_node, NULL)));
                    612:                yyval.yu_node->n_next->n_next->n_next = yyval.yu_node->n_next;
                    613:        }break;
                    614: 
                    615: case 46: {
                    616: 
                    617: #line 223 "/usr/src/cmd0/sh/sh.y"
                    618: 
                    619:                yyval.yu_node = node(NCASE, yypvt[-4].yu_strp, yypvt[-1].yu_node);
                    620:        }break;
                    621: 
                    622: case 47: {
                    623: 
                    624: #line 226 "/usr/src/cmd0/sh/sh.y"
                    625: 
                    626:                yyval.yu_node = node(NCASE, yypvt[-3].yu_strp, yypvt[-1].yu_node);
                    627:        }break;
                    628: 
                    629: case 48: {
                    630: 
                    631: #line 229 "/usr/src/cmd0/sh/sh.y"
                    632: 
                    633:                yyval.yu_node = node(yypvt[-3].yu_nval, yypvt[-2].yu_node, node(NLIST, yypvt[-1].yu_node, NULL));
                    634:                yyval.yu_node->n_next->n_next = yyval.yu_node;
                    635:        }break;
                    636: 
                    637: case 49: {
                    638: 
                    639: #line 233 "/usr/src/cmd0/sh/sh.y"
                    640: 
                    641:                yyval.yu_node = node(NIF, node(NNULL, yypvt[-4].yu_node, yypvt[-2].yu_node), yypvt[-1].yu_node);
                    642:        }break;
                    643: 
                    644: case 50: {
                    645: 
                    646: #line 236 "/usr/src/cmd0/sh/sh.y"
                    647: 
                    648:                yyval.yu_node = node(NPARN, yypvt[-1].yu_node, NULL);
                    649:        }break;
                    650: 
                    651: case 51: {
                    652: 
                    653: #line 239 "/usr/src/cmd0/sh/sh.y"
                    654: 
                    655:                yyval.yu_node = node(NBRAC, yypvt[-1].yu_node, NULL);
                    656:        }break;
                    657: 
                    658: case 52: {
                    659: 
                    660: #line 245 "/usr/src/cmd0/sh/sh.y"
                    661: 
                    662:                yyval.yu_node = yypvt[0].yu_node;
                    663:        }break;
                    664: 
                    665: case 53: {
                    666: 
                    667: #line 248 "/usr/src/cmd0/sh/sh.y"
                    668: 
                    669:                yyval.yu_node = node(NARGS, "\"$@\"", NULL);
                    670:        }break;
                    671: 
                    672: case 54: {
                    673: 
                    674: #line 254 "/usr/src/cmd0/sh/sh.y"
                    675: 
                    676:                yyval.yu_node = node(NARGS, yypvt[-1].yu_strp, yypvt[0].yu_node);
                    677:        }break;
                    678: 
                    679: case 55: {
                    680: 
                    681: #line 257 "/usr/src/cmd0/sh/sh.y"
                    682: 
                    683:                yyval.yu_node = NULL;
                    684:        }break;
                    685: 
                    686: case 56: {
                    687: 
                    688: #line 263 "/usr/src/cmd0/sh/sh.y"
                    689: 
                    690:                register NODE *np;
                    691: 
                    692:                for (np=yypvt[-2].yu_node; np->n_next; np=np->n_next)
                    693:                        ;
                    694:                np->n_next = yypvt[0].yu_node;
                    695:                yyval.yu_node = yypvt[-2].yu_node;
                    696:        }break;
                    697: 
                    698: case 57: {
                    699: 
                    700: #line 271 "/usr/src/cmd0/sh/sh.y"
                    701: 
                    702:                yyval.yu_node = yypvt[0].yu_node;
                    703:        }break;
                    704: 
                    705: case 58: {
                    706: 
                    707: #line 274 "/usr/src/cmd0/sh/sh.y"
                    708: 
                    709:                yyval.yu_node = NULL;
                    710:        }break;
                    711: 
                    712: case 59: {
                    713: 
                    714: #line 280 "/usr/src/cmd0/sh/sh.y"
                    715: 
                    716:                yyval.yu_node = node(NCASE2, yypvt[0].yu_node, yypvt[-2].yu_node);
                    717:        }break;
                    718: 
                    719: case 60: {
                    720: 
                    721: #line 286 "/usr/src/cmd0/sh/sh.y"
                    722: 
                    723:                yyval.yu_node = node(NCASE3, yypvt[-2].yu_strp, yypvt[0].yu_node);
                    724:        }break;
                    725: 
                    726: case 61: {
                    727: 
                    728: #line 289 "/usr/src/cmd0/sh/sh.y"
                    729: 
                    730:                yyval.yu_node = node(NCASE3, yypvt[0].yu_strp, NULL);
                    731:        }break;
                    732: 
                    733: case 62: {
                    734: 
                    735: #line 295 "/usr/src/cmd0/sh/sh.y"
                    736: 
                    737:                yyval.yu_node = yypvt[0].yu_node;
                    738:        }break;
                    739: 
                    740: case 63: {
                    741: 
                    742: #line 298 "/usr/src/cmd0/sh/sh.y"
                    743: 
                    744:                yyval.yu_node = NULL;
                    745:        }break;
                    746: 
                    747: case 64: {
                    748: 
                    749: #line 304 "/usr/src/cmd0/sh/sh.y"
                    750: 
                    751:                yyval.yu_node = node(NIF, node(NNULL, yypvt[-3].yu_node, yypvt[-1].yu_node), yypvt[0].yu_node);
                    752:        }break;
                    753: 
                    754: case 65: {
                    755: 
                    756: #line 307 "/usr/src/cmd0/sh/sh.y"
                    757: 
                    758:                yyval.yu_node = node(NELSE, yypvt[0].yu_node, NULL);
                    759:        }break;
                    760: 
                    761: case 66: {
                    762: 
                    763: #line 310 "/usr/src/cmd0/sh/sh.y"
                    764: 
                    765:                yyval.yu_node = NULL;
                    766:        }break;
                    767: 
                    768: case 67: {
                    769: 
                    770: #line 316 "/usr/src/cmd0/sh/sh.y"
                    771: 
                    772:                yyval.yu_node = yypvt[0].yu_node;
                    773:        }break;
                    774: 
                    775: case 68: {
                    776: 
                    777: #line 320 "/usr/src/cmd0/sh/sh.y"
                    778: 
                    779:                yyval.yu_node = NULL;
                    780:        }break;
                    781: 
                    782: case 69: {
                    783: 
                    784: #line 326 "/usr/src/cmd0/sh/sh.y"
                    785: 
                    786:                yyval.yu_node = node(NLIST, yypvt[-2].yu_node, yypvt[0].yu_node);
                    787:        }break;
                    788: 
                    789: case 70: {
                    790: 
                    791: #line 329 "/usr/src/cmd0/sh/sh.y"
                    792: 
                    793:                yyval.yu_node = yypvt[-1].yu_node;
                    794:        }break;
                    795: 
                    796:                }
                    797:                ip = &yygo[ yypgo[yypdnt[pno]] ];
                    798:                while( *ip!=*yys && *ip!=YYNOCHAR )
                    799:                        ip += 2;
                    800:                yystate = ip[1];
                    801:                goto stack;
                    802:        }
                    803: }
                    804: 
                    805: 
                    806: 
                    807: 

unix.superglobalmegacorp.com

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