Annotation of researchv10no/cmd/lcc/tst/yacc.c, revision 1.1

1.1     ! root        1: # define ID 257
        !             2: # define CON 258
        !             3: # define UNARYMINUS 259
        !             4: #define yyclearin yychar = -1
        !             5: #define yyerrok yyerrflag = 0
        !             6: extern int yychar;
        !             7: extern short yyerrflag;
        !             8: #ifndef YYMAXDEPTH
        !             9: #define YYMAXDEPTH 150
        !            10: #endif
        !            11: #ifndef YYSTYPE
        !            12: #define YYSTYPE int
        !            13: #endif
        !            14: YYSTYPE yylval, yyval;
        !            15: # define YYERRCODE 256
        !            16: 
        !            17: # line 27 "yacc.y"
        !            18: 
        !            19: 
        !            20: #include <stdio.h>
        !            21: 
        !            22: # define U(x) x
        !            23: # define NLSTATE yyprevious=YYNEWLINE
        !            24: # define BEGIN yybgin = yysvec + 1 +
        !            25: # define INITIAL 0
        !            26: # define YYLERR yysvec
        !            27: # define YYSTATE (yyestate-yysvec-1)
        !            28: # define YYOPTIM 1
        !            29: # define YYLMAX 200
        !            30: # define output(c) putc(c,yyout)
        !            31: # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
        !            32: # define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;}
        !            33: # define yymore() (yymorfg=1)
        !            34: # define ECHO fprintf(yyout, "%s",yytext)
        !            35: # define REJECT { nstr = yyreject(); goto yyfussy;}
        !            36: int yyleng; extern char yytext[];
        !            37: int yymorfg;
        !            38: extern char *yysptr, yysbuf[];
        !            39: int yytchar;
        !            40: FILE *yyin ={stdin}, *yyout ={stdout};
        !            41: extern int yylineno;
        !            42: struct yysvf { 
        !            43:        struct yywork *yystoff;
        !            44:        struct yysvf *yyother;
        !            45:        int *yystops;};
        !            46: struct yysvf *yyestate;
        !            47: extern struct yysvf yysvec[], *yybgin;
        !            48: # define YYNEWLINE 10
        !            49: yylex(){
        !            50: int nstr; extern int yyprevious;
        !            51: while((nstr = yylook()) >= 0)
        !            52: yyfussy: switch(nstr){
        !            53: case 0:
        !            54: if(yywrap()) return(0); break;
        !            55: case 1:
        !            56:  return ID;
        !            57: break;
        !            58: case 2:
        !            59:                  return CON;
        !            60: break;
        !            61: case 3:
        !            62:                   ;
        !            63: break;
        !            64: case 4:
        !            65:                    return yytext[0];
        !            66: break;
        !            67: case -1:
        !            68: break;
        !            69: default:
        !            70: fprintf(yyout,"bad switch yylook %d",nstr);
        !            71: } return(0); }
        !            72: /* end of yylex */
        !            73: int yyvstop[] ={
        !            74: 0,
        !            75: 
        !            76: 4,
        !            77: 0,
        !            78: 
        !            79: 3,
        !            80: 4,
        !            81: 0,
        !            82: 
        !            83: 2,
        !            84: 4,
        !            85: 0,
        !            86: 
        !            87: 1,
        !            88: 4,
        !            89: 0,
        !            90: 
        !            91: 2,
        !            92: 0,
        !            93: 
        !            94: 1,
        !            95: 0,
        !            96: 0};
        !            97: # define YYTYPE char
        !            98: struct yywork { YYTYPE verify, advance; } yycrank[] ={
        !            99: 0,0,   0,0,    1,3,    0,0,    
        !           100: 0,0,   0,0,    0,0,    0,0,    
        !           101: 0,0,   0,0,    1,4,    1,3,    
        !           102: 0,0,   0,0,    0,0,    0,0,    
        !           103: 0,0,   0,0,    0,0,    0,0,    
        !           104: 0,0,   0,0,    0,0,    0,0,    
        !           105: 0,0,   0,0,    0,0,    0,0,    
        !           106: 0,0,   0,0,    0,0,    0,0,    
        !           107: 0,0,   0,0,    0,0,    0,0,    
        !           108: 0,0,   0,0,    0,0,    0,0,    
        !           109: 0,0,   0,0,    0,0,    0,0,    
        !           110: 0,0,   0,0,    0,0,    0,0,    
        !           111: 0,0,   1,5,    5,7,    5,7,    
        !           112: 5,7,   5,7,    5,7,    5,7,    
        !           113: 5,7,   5,7,    5,7,    5,7,    
        !           114: 0,0,   0,0,    0,0,    0,0,    
        !           115: 0,0,   0,0,    1,6,    6,8,    
        !           116: 6,8,   6,8,    6,8,    6,8,    
        !           117: 6,8,   6,8,    6,8,    6,8,    
        !           118: 6,8,   0,0,    0,0,    0,0,    
        !           119: 0,0,   0,0,    0,0,    0,0,    
        !           120: 6,8,   6,8,    6,8,    6,8,    
        !           121: 6,8,   6,8,    6,8,    6,8,    
        !           122: 6,8,   6,8,    6,8,    6,8,    
        !           123: 6,8,   6,8,    6,8,    6,8,    
        !           124: 6,8,   6,8,    6,8,    6,8,    
        !           125: 6,8,   6,8,    6,8,    6,8,    
        !           126: 6,8,   6,8,    0,0,    0,0,    
        !           127: 0,0,   0,0,    6,8,    0,0,    
        !           128: 6,8,   6,8,    6,8,    6,8,    
        !           129: 6,8,   6,8,    6,8,    6,8,    
        !           130: 6,8,   6,8,    6,8,    6,8,    
        !           131: 6,8,   6,8,    6,8,    6,8,    
        !           132: 6,8,   6,8,    6,8,    6,8,    
        !           133: 6,8,   6,8,    6,8,    6,8,    
        !           134: 6,8,   6,8,    0,0,    0,0,    
        !           135: 0,0};
        !           136: struct yysvf yysvec[] ={
        !           137: 0,     0,      0,
        !           138: yycrank+-1,    0,              0,      
        !           139: yycrank+0,     yysvec+1,       0,      
        !           140: yycrank+0,     0,              yyvstop+1,
        !           141: yycrank+0,     0,              yyvstop+3,
        !           142: yycrank+2,     0,              yyvstop+6,
        !           143: yycrank+19,    0,              yyvstop+9,
        !           144: yycrank+0,     yysvec+5,       yyvstop+12,
        !           145: yycrank+0,     yysvec+6,       yyvstop+14,
        !           146: 0,     0,      0};
        !           147: struct yywork *yytop = yycrank+141;
        !           148: struct yysvf *yybgin = yysvec+1;
        !           149: char yymatch[] ={
        !           150: 00  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
        !           151: 01  ,011 ,012 ,01  ,01  ,01  ,01  ,01  ,
        !           152: 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
        !           153: 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
        !           154: 011 ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
        !           155: 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
        !           156: '0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,
        !           157: '0' ,'0' ,01  ,01  ,01  ,01  ,01  ,01  ,
        !           158: 01  ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
        !           159: 'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
        !           160: 'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
        !           161: 'A' ,'A' ,'A' ,01  ,01  ,01  ,01  ,'A' ,
        !           162: 01  ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
        !           163: 'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
        !           164: 'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
        !           165: 'A' ,'A' ,'A' ,01  ,01  ,01  ,01  ,01  ,
        !           166: 0};
        !           167: char yyextra[] ={
        !           168: 0,0,0,0,0,0,0,0,
        !           169: 0};
        !           170: /*     ncform  4.1     83/08/11        */
        !           171: 
        !           172: int yylineno =1;
        !           173: # define YYU(x) x
        !           174: # define NLSTATE yyprevious=YYNEWLINE
        !           175: char yytext[YYLMAX];
        !           176: struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
        !           177: char yysbuf[YYLMAX];
        !           178: char *yysptr = yysbuf;
        !           179: int *yyfnd;
        !           180: extern struct yysvf *yyestate;
        !           181: int yyprevious = YYNEWLINE;
        !           182: yylook(){
        !           183:        register struct yysvf *yystate, **lsp;
        !           184:        register struct yywork *yyt;
        !           185:        struct yysvf *yyz;
        !           186:        int yych;
        !           187:        struct yywork *yyr;
        !           188: # ifdef LEXDEBUG
        !           189:        int debug;
        !           190: # endif
        !           191:        char *yylastch;
        !           192:        /* start off machines */
        !           193: # ifdef LEXDEBUG
        !           194:        debug = 0;
        !           195: # endif
        !           196:        if (!yymorfg)
        !           197:                yylastch = yytext;
        !           198:        else {
        !           199:                yymorfg=0;
        !           200:                yylastch = yytext+yyleng;
        !           201:                }
        !           202:        for(;;){
        !           203:                lsp = yylstate;
        !           204:                yyestate = yystate = yybgin;
        !           205:                if (yyprevious==YYNEWLINE) yystate++;
        !           206:                for (;;){
        !           207: # ifdef LEXDEBUG
        !           208:                        if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
        !           209: # endif
        !           210:                        yyt = yystate->yystoff;
        !           211:                        if(yyt == yycrank){             /* may not be any transitions */
        !           212:                                yyz = yystate->yyother;
        !           213:                                if(yyz == 0)break;
        !           214:                                if(yyz->yystoff == yycrank)break;
        !           215:                                }
        !           216:                        *yylastch++ = yych = input();
        !           217:                tryagain:
        !           218: # ifdef LEXDEBUG
        !           219:                        if(debug){
        !           220:                                fprintf(yyout,"char ");
        !           221:                                allprint(yych);
        !           222:                                putchar('\n');
        !           223:                                }
        !           224: # endif
        !           225:                        yyr = yyt;
        !           226:                        if ( (int)yyt > (int)yycrank){
        !           227:                                yyt = yyr + yych;
        !           228:                                if (yyt <= yytop && yyt->verify+yysvec == yystate){
        !           229:                                        if(yyt->advance+yysvec == YYLERR)       /* error transitions */
        !           230:                                                {unput(*--yylastch);break;}
        !           231:                                        *lsp++ = yystate = yyt->advance+yysvec;
        !           232:                                        goto contin;
        !           233:                                        }
        !           234:                                }
        !           235: # ifdef YYOPTIM
        !           236:                        else if((int)yyt < (int)yycrank) {              /* r < yycrank */
        !           237:                                yyt = yyr = yycrank+(yycrank-yyt);
        !           238: # ifdef LEXDEBUG
        !           239:                                if(debug)fprintf(yyout,"compressed state\n");
        !           240: # endif
        !           241:                                yyt = yyt + yych;
        !           242:                                if(yyt <= yytop && yyt->verify+yysvec == yystate){
        !           243:                                        if(yyt->advance+yysvec == YYLERR)       /* error transitions */
        !           244:                                                {unput(*--yylastch);break;}
        !           245:                                        *lsp++ = yystate = yyt->advance+yysvec;
        !           246:                                        goto contin;
        !           247:                                        }
        !           248:                                yyt = yyr + YYU(yymatch[yych]);
        !           249: # ifdef LEXDEBUG
        !           250:                                if(debug){
        !           251:                                        fprintf(yyout,"try fall back character ");
        !           252:                                        allprint(YYU(yymatch[yych]));
        !           253:                                        putchar('\n');
        !           254:                                        }
        !           255: # endif
        !           256:                                if(yyt <= yytop && yyt->verify+yysvec == yystate){
        !           257:                                        if(yyt->advance+yysvec == YYLERR)       /* error transition */
        !           258:                                                {unput(*--yylastch);break;}
        !           259:                                        *lsp++ = yystate = yyt->advance+yysvec;
        !           260:                                        goto contin;
        !           261:                                        }
        !           262:                                }
        !           263:                        if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
        !           264: # ifdef LEXDEBUG
        !           265:                                if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
        !           266: # endif
        !           267:                                goto tryagain;
        !           268:                                }
        !           269: # endif
        !           270:                        else
        !           271:                                {unput(*--yylastch);break;}
        !           272:                contin:
        !           273: # ifdef LEXDEBUG
        !           274:                        if(debug){
        !           275:                                fprintf(yyout,"state %d char ",yystate-yysvec-1);
        !           276:                                allprint(yych);
        !           277:                                putchar('\n');
        !           278:                                }
        !           279: # endif
        !           280:                        ;
        !           281:                        }
        !           282: # ifdef LEXDEBUG
        !           283:                if(debug){
        !           284:                        fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
        !           285:                        allprint(yych);
        !           286:                        putchar('\n');
        !           287:                        }
        !           288: # endif
        !           289:                while (lsp-- > yylstate){
        !           290:                        *yylastch-- = 0;
        !           291:                        if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
        !           292:                                yyolsp = lsp;
        !           293:                                if(yyextra[*yyfnd]){            /* must backup */
        !           294:                                        while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
        !           295:                                                lsp--;
        !           296:                                                unput(*yylastch--);
        !           297:                                                }
        !           298:                                        }
        !           299:                                yyprevious = YYU(*yylastch);
        !           300:                                yylsp = lsp;
        !           301:                                yyleng = yylastch-yytext+1;
        !           302:                                yytext[yyleng] = 0;
        !           303: # ifdef LEXDEBUG
        !           304:                                if(debug){
        !           305:                                        fprintf(yyout,"\nmatch ");
        !           306:                                        sprint(yytext);
        !           307:                                        fprintf(yyout," action %d\n",*yyfnd);
        !           308:                                        }
        !           309: # endif
        !           310:                                return(*yyfnd++);
        !           311:                                }
        !           312:                        unput(*yylastch);
        !           313:                        }
        !           314:                if (yytext[0] == 0  /* && feof(yyin) */)
        !           315:                        {
        !           316:                        yysptr=yysbuf;
        !           317:                        return(0);
        !           318:                        }
        !           319:                yyprevious = yytext[0] = input();
        !           320:                if (yyprevious>0)
        !           321:                        output(yyprevious);
        !           322:                yylastch=yytext;
        !           323: # ifdef LEXDEBUG
        !           324:                if(debug)putchar('\n');
        !           325: # endif
        !           326:                }
        !           327:        }
        !           328: yyback(p, m)
        !           329:        int *p;
        !           330: {
        !           331: if (p==0) return(0);
        !           332: while (*p)
        !           333:        {
        !           334:        if (*p++ == m)
        !           335:                return(1);
        !           336:        }
        !           337: return(0);
        !           338: }
        !           339:        /* the following are only used in the lex library */
        !           340: yyinput(){
        !           341:        return(input());
        !           342:        }
        !           343: yyoutput(c)
        !           344:   int c; {
        !           345:        output(c);
        !           346:        }
        !           347: yyunput(c)
        !           348:    int c; {
        !           349:        unput(c);
        !           350:        }
        !           351: 
        !           352: main() {
        !           353:         yyparse();
        !           354: }
        !           355: 
        !           356: /* yyerror - issue error message */
        !           357: yyerror() {
        !           358:         printf("syntax error\n");
        !           359: }
        !           360: short yyexca[] ={
        !           361: -1, 1,
        !           362:        0, -1,
        !           363:        -2, 0,
        !           364:        };
        !           365: # define YYNPROD 15
        !           366: # define YYLAST 249
        !           367: short yyact[]={
        !           368: 
        !           369:   12,   2,   9,   8,  17,  11,  25,  17,  15,  18,
        !           370:   16,  10,  18,  17,  15,   7,  16,  13,  18,   5,
        !           371:    3,   1,   0,  19,  20,   0,   0,  21,  22,  23,
        !           372:   24,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           373:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           374:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           375:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           376:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           377:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           378:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           379:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           380:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           381:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           382:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           383:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           384:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           385:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           386:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           387:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           388:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           389:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           390:    0,   0,   0,   0,   0,   0,   0,   6,  14,   0,
        !           391:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           392:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           393:    0,   0,   0,   0,   0,   0,   0,   4,   6 };
        !           394: short yypact[]={
        !           395: 
        !           396: -1000,  -9,-1000,   5,  -7, -59,-1000,-1000,-1000, -40,
        !           397:  -29, -40, -40,-1000,-1000, -40, -40, -40, -40, -38,
        !           398:  -35, -38, -38,-1000,-1000,-1000 };
        !           399: short yypgo[]={
        !           400: 
        !           401:    0,  21,  20,  17,  11 };
        !           402: short yyr1[]={
        !           403: 
        !           404:    0,   1,   1,   1,   1,   2,   4,   4,   4,   4,
        !           405:    4,   4,   4,   4,   3 };
        !           406: short yyr2[]={
        !           407: 
        !           408:    0,   0,   2,   3,   3,   3,   3,   3,   3,   3,
        !           409:    2,   3,   1,   1,   1 };
        !           410: short yychk[]={
        !           411: 
        !           412: -1000,  -1,  10,  -2, 256,  -3, 257,  10,  10,  61,
        !           413:   -4,  45,  40,  -3, 258,  43,  45,  42,  47,  -4,
        !           414:   -4,  -4,  -4,  -4,  -4,  41 };
        !           415: short yydef[]={
        !           416: 
        !           417:    1,  -2,   2,   0,   0,   0,  14,   3,   4,   0,
        !           418:    5,   0,   0,  12,  13,   0,   0,   0,   0,  10,
        !           419:    0,   6,   7,   8,   9,  11 };
        !           420: #ifndef lint
        !           421: #endif
        !           422: 
        !           423: # define YYFLAG -1000
        !           424: # define YYERROR goto yyerrlab
        !           425: # define YYACCEPT return(0)
        !           426: # define YYABORT return(1)
        !           427: 
        !           428: /*     parser for yacc output  */
        !           429: 
        !           430: #ifdef YYDEBUG
        !           431: int yydebug = 0; /* 1 for debugging */
        !           432: #endif
        !           433: YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */
        !           434: int yychar = -1; /* current input token number */
        !           435: int yynerrs = 0;  /* number of errors */
        !           436: short yyerrflag = 0;  /* error recovery flag */
        !           437: 
        !           438: yyparse() {
        !           439: 
        !           440:        short yys[YYMAXDEPTH];
        !           441:        short yyj, yym;
        !           442:        register YYSTYPE *yypvt;
        !           443:        register short yystate, *yyps, yyn;
        !           444:        register YYSTYPE *yypv;
        !           445:        register short *yyxi;
        !           446: 
        !           447:        yystate = 0;
        !           448:        yychar = -1;
        !           449:        yynerrs = 0;
        !           450:        yyerrflag = 0;
        !           451:        yyps= &yys[-1];
        !           452:        yypv= &yyv[-1];
        !           453: 
        !           454:  yystack:    /* put a state and value onto the stack */
        !           455: 
        !           456: #ifdef YYDEBUG
        !           457:        if( yydebug  ) printf( "state %d, char 0%o\n", yystate, yychar );
        !           458: #endif
        !           459:                if( ++yyps> &yys[YYMAXDEPTH] ) { yyerror( "yacc stack overflow" ); return(1); }
        !           460:                *yyps = yystate;
        !           461:                ++yypv;
        !           462:                *yypv = yyval;
        !           463: 
        !           464:  yynewstate:
        !           465: 
        !           466:        yyn = yypact[yystate];
        !           467: 
        !           468:        if( yyn<= YYFLAG ) goto yydefault; /* simple state */
        !           469: 
        !           470:        if( yychar<0 ) if( (yychar=yylex())<0 ) yychar=0;
        !           471:        if( (yyn += yychar)<0 || yyn >= YYLAST ) goto yydefault;
        !           472: 
        !           473:        if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */
        !           474:                yychar = -1;
        !           475:                yyval = yylval;
        !           476:                yystate = yyn;
        !           477:                if( yyerrflag > 0 ) --yyerrflag;
        !           478:                goto yystack;
        !           479:                }
        !           480: 
        !           481:  yydefault:
        !           482:        /* default state action */
        !           483: 
        !           484:        if( (yyn=yydef[yystate]) == -2 ) {
        !           485:                if( yychar<0 ) if( (yychar=yylex())<0 ) yychar = 0;
        !           486:                /* look through exception table */
        !           487: 
        !           488:                for( yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate) ; yyxi += 2 ) ; /* VOID */
        !           489: 
        !           490:                while( *(yyxi+=2) >= 0 ){
        !           491:                        if( *yyxi == yychar ) break;
        !           492:                        }
        !           493:                if( (yyn = yyxi[1]) < 0 ) return(0);   /* accept */
        !           494:                }
        !           495: 
        !           496:        if( yyn == 0 ){ /* error */
        !           497:                /* error ... attempt to resume parsing */
        !           498: 
        !           499:                switch( yyerrflag ){
        !           500: 
        !           501:                case 0:   /* brand new error */
        !           502: 
        !           503:                        yyerror( "syntax error" );
        !           504:                yyerrlab:
        !           505:                        ++yynerrs;
        !           506: 
        !           507:                case 1:
        !           508:                case 2: /* incompletely recovered error ... try again */
        !           509: 
        !           510:                        yyerrflag = 3;
        !           511: 
        !           512:                        /* find a state where "error" is a legal shift action */
        !           513: 
        !           514:                        while ( yyps >= yys ) {
        !           515:                           yyn = yypact[*yyps] + YYERRCODE;
        !           516:                           if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){
        !           517:                              yystate = yyact[yyn];  /* simulate a shift of "error" */
        !           518:                              goto yystack;
        !           519:                              }
        !           520:                           yyn = yypact[*yyps];
        !           521: 
        !           522:                           /* the current yyps has no shift onn "error", pop stack */
        !           523: 
        !           524: #ifdef YYDEBUG
        !           525:                           if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] );
        !           526: #endif
        !           527:                           --yyps;
        !           528:                           --yypv;
        !           529:                           }
        !           530: 
        !           531:                        /* there is no state on the stack with an error shift ... abort */
        !           532: 
        !           533:        yyabort:
        !           534:                        return(1);
        !           535: 
        !           536: 
        !           537:                case 3:  /* no shift yet; clobber input char */
        !           538: 
        !           539: #ifdef YYDEBUG
        !           540:                        if( yydebug ) printf( "error recovery discards char %d\n", yychar );
        !           541: #endif
        !           542: 
        !           543:                        if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */
        !           544:                        yychar = -1;
        !           545:                        goto yynewstate;   /* try again in the same state */
        !           546: 
        !           547:                        }
        !           548: 
        !           549:                }
        !           550: 
        !           551:        /* reduction by production yyn */
        !           552: 
        !           553: #ifdef YYDEBUG
        !           554:                if( yydebug ) printf("reduce %d\n",yyn);
        !           555: #endif
        !           556:                yyps -= yyr2[yyn];
        !           557:                yypvt = yypv;
        !           558:                yypv -= yyr2[yyn];
        !           559:                yyval = yypv[1];
        !           560:                yym=yyn;
        !           561:                        /* consult goto table to find next state */
        !           562:                yyn = yyr1[yyn];
        !           563:                yyj = yypgo[yyn] + *yyps + 1;
        !           564:                if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]];
        !           565:                switch(yym){
        !           566:                        
        !           567: case 4:
        !           568: # line 9 "yacc.y"
        !           569: { yyerrok; } break;
        !           570: case 5:
        !           571: # line 12 "yacc.y"
        !           572: { printf("store\n"); } break;
        !           573: case 6:
        !           574: # line 15 "yacc.y"
        !           575: { printf("add\n"); } break;
        !           576: case 7:
        !           577: # line 16 "yacc.y"
        !           578: { printf("negate\nadd\n"); } break;
        !           579: case 8:
        !           580: # line 17 "yacc.y"
        !           581: { printf("multiply\n"); } break;
        !           582: case 9:
        !           583: # line 18 "yacc.y"
        !           584: { printf("divide\n"); } break;
        !           585: case 10:
        !           586: # line 19 "yacc.y"
        !           587: { printf("negate\n"); } break;
        !           588: case 12:
        !           589: # line 21 "yacc.y"
        !           590: { printf("load\n"); } break;
        !           591: case 13:
        !           592: # line 22 "yacc.y"
        !           593: { printf("push %s\n", yytext); } break;
        !           594: case 14:
        !           595: # line 25 "yacc.y"
        !           596: { printf("%s\n", yytext); } break;
        !           597:                }
        !           598:                goto yystack;  /* stack new state and value */
        !           599: 
        !           600:        }
        !           601: int yywrap() { return 1; }

unix.superglobalmegacorp.com

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