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