Annotation of coherent/b/bin/yacc/yyparse.c, revision 1.1.1.1

1.1       root        1: /* (-lgl
                      2:  *     COHERENT Version 3.2.2
                      3:  *     Copyright (c) 1982, 1992 by Mark Williams Company.
                      4:  *     All rights reserved. May not be copied without permission.
                      5:  -lgl) */
                      6: /*
                      7:  * /lib/yyparse.c
                      8:  */
                      9: 
                     10: #define        YYNOCHAR        (-1000)
                     11: #define        yyerrok         yyerrflag=0
                     12: #define        yyclearin       yylval=YYNOCHAR
                     13: 
                     14: int    yychar;
                     15: short  yyerrflag;
                     16: int    *yys;
                     17: int    yystack[YYMAXDEPTH];
                     18: YYSTYPE        yyvstack[YYMAXDEPTH];
                     19: YYSTYPE        *yyv;
                     20: 
                     21: #ifdef YYDEBUG
                     22: int    yydebug = 1;    /* No sir, not in the BSS */
                     23: #include <stdio.h>
                     24: #endif
                     25: 
                     26: yyparse()
                     27: {
                     28:        register YYSTYPE *yypvt;
                     29:        int act;
                     30:        register unsigned *ip, yystate;
                     31:        int pno;
                     32: 
                     33:        yystate = 0;
                     34:        yychar = YYNOCHAR;
                     35:        yyv = &yyvstack[-1];
                     36:        yys = &yystack[-1];
                     37: 
                     38: stack:
                     39:        if( ++yys >= &yystack[YYMAXDEPTH] ) {
                     40:                write(2, "Stack overflow\n", 15);
                     41:                exit(1);
                     42:        }
                     43:        *yys = yystate;
                     44:        *++yyv = yyval;
                     45: #ifdef YYDEBUG
                     46:        if( yydebug )
                     47:                fprintf(stdout, "Stack state %d, char %d\n", yystate, yychar);
                     48: #endif
                     49: 
                     50: read:
                     51:        ip = &yyact[yypa[yystate]];
                     52:        if( ip[1] != YYNOCHAR ) {
                     53:                if( yychar == YYNOCHAR ) {
                     54:                        yychar = yylex();
                     55: #ifdef YYDEBUG
                     56:                        if( yydebug )
                     57:                                fprintf(stdout, "lex read char %d, val %d\n", yychar, yylval);
                     58: #endif
                     59:                }
                     60:                while (ip[1]!=YYNOCHAR) {
                     61:                        if (ip[1]==yychar)
                     62:                                break;
                     63:                        ip += 2;
                     64:                }
                     65:        }
                     66:        act = ip[0];
                     67:        switch( act>>YYACTSH ) {
                     68:        case YYSHIFTACT:
                     69:                if( ip[1]==YYNOCHAR )
                     70:                        goto YYerract;
                     71:                if( yychar != -1 )
                     72:                        yychar = YYNOCHAR; /* dont throw away EOF */
                     73:                yystate = act&YYAMASK;
                     74:                yyval = yylval;
                     75: #ifdef YYDEBUG
                     76:                if( yydebug )
                     77:                        fprintf(stdout, "shift %d\n", yystate);
                     78: #endif
                     79:                if( yyerrflag )
                     80:                        --yyerrflag;
                     81:                goto stack;
                     82: 
                     83:        case YYACCEPTACT:
                     84: #ifdef YYDEBUG
                     85:                if( yydebug )
                     86:                        fprintf(stdout, "accept\n");
                     87: #endif
                     88:                return(0);
                     89: 
                     90:        case YYERRACT:
                     91:        YYerract:
                     92:                switch (yyerrflag) {
                     93:                case 0:
                     94:                        yyerror("Syntax error");
                     95: 
                     96:                case 1:
                     97:                case 2:
                     98: 
                     99:                        yyerrflag = 3;
                    100:                        while( yys >= & yystack[0] ) {
                    101:                                ip = &yyact[yypa[*yys]];
                    102:                                while( ip[1]!=YYNOCHAR )
                    103:                                        ip += 2;
                    104:                                if( (*ip&~YYAMASK) == (YYSHIFTACT<<YYACTSH) ) {
                    105:                                        yystate = *ip&YYAMASK;
                    106:                                        goto stack;
                    107:                                }
                    108: #ifdef YYDEBUG
                    109:                                if( yydebug )
                    110:                                        fprintf(stderr, "error recovery leaves state %d, uncovers %d\n", *yys, yys[-1]);
                    111: #endif
                    112:                                yys--;
                    113:                                yyv--;
                    114:                        }
                    115: #ifdef YYDEBUG
                    116:                        if( yydebug )
                    117:                                fprintf(stderr, "no shift on error; abort\n");
                    118: #endif
                    119:                        return(1);
                    120: 
                    121:                case 3:
                    122: #ifdef YYDEBUG
                    123:                        if( yydebug )
                    124:                                fprintf(stderr, "Error recovery clobbers char %o\n", yychar);
                    125: #endif
                    126:                        if( yychar==YYEOFVAL )
                    127:                                return(1);
                    128:                        yychar = YYNOCHAR;
                    129:                        goto read;
                    130:                }
                    131: 
                    132:        case YYREDACT:
                    133:                pno = act&YYAMASK;
                    134: #ifdef YYDEBUG
                    135:                if( yydebug )
                    136:                        fprintf(stdout, "reduce %d\n", pno);
                    137: #endif
                    138:                yypvt = yyv;
                    139:                yyv -= yypn[pno];
                    140:                yys -= yypn[pno];
                    141:                yyval = yyv[1];
                    142:                switch(pno) {
                    143: $A
                    144:                }
                    145:                ip = &yygo[ yypgo[yypdnt[pno]] ];
                    146:                while( *ip!=*yys && *ip!=YYNOCHAR )
                    147:                        ip += 2;
                    148:                yystate = ip[1];
                    149:                goto stack;
                    150:        }
                    151: }
                    152: 
                    153: /* end of /lib/yyparse.c */

unix.superglobalmegacorp.com

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