|
|
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 */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.