Annotation of coherent/d/bin/yacc/yyparse.c, revision 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.