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