1 #ifndef lint 2 static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; 3 #endif 4 #define YYBYACC 1 5 #define YYMAJOR 1 6 #define YYMINOR 9 7 #define yyclearin (yychar=(-1)) 8 #define yyerrok (yyerrflag=0) 9 #define YYRECOVERING (yyerrflag!=0) 10 #define YYPREFIX "yy" 11 #define YYERRCODE 256 12 short yylhs[] = { -1, 13 0, 14 }; 15 short yylen[] = { 2, 16 1, 17 }; 18 short yydefred[] = { 0, 19 1, 0, 20 }; 21 short yydgoto[] = { 2, 22 }; 23 short yysindex[] = { -256, 24 0, 0, 25 }; 26 short yyrindex[] = { 0, 27 0, 0, 28 }; 29 short yygindex[] = { 0, 30 }; 31 #define YYTABLESIZE 0 32 short yytable[] = { 1, 33 }; 34 short yycheck[] = { 256, 35 }; 36 #define YYFINAL 2 37 #ifndef YYDEBUG 38 #define YYDEBUG 0 39 #endif 40 #define YYMAXTOKEN 0 41 #if YYDEBUG 42 char *yyname[] = { 43 "end-of-file", 44 }; 45 char *yyrule[] = { 46 "$accept : S", 47 "S : error", 48 }; 49 #endif 50 #ifndef YYSTYPE 51 typedef int YYSTYPE; 52 #endif 53 #ifdef YYSTACKSIZE 54 #undef YYMAXDEPTH 55 #define YYMAXDEPTH YYSTACKSIZE 56 #else 57 #ifdef YYMAXDEPTH 58 #define YYSTACKSIZE YYMAXDEPTH 59 #else 60 #define YYSTACKSIZE 500 61 #define YYMAXDEPTH 500 62 #endif 63 #endif 64 int yydebug; 65 int yynerrs; 66 int yyerrflag; 67 int yychar; 68 short *yyssp; 69 YYSTYPE *yyvsp; 70 YYSTYPE yyval; 71 YYSTYPE yylval; 72 short yyss[YYSTACKSIZE]; 73 YYSTYPE yyvs[YYSTACKSIZE]; 74 #define yystacksize YYSTACKSIZE 75 #line 4 "error.y" 76 main(){printf("yyparse() = %d\n",yyparse());} 77 yylex(){return-1;} 78 yyerror(s)char*s;{printf("%s\n",s);} 79 #line 80 "error.tab.c" 80 #define YYABORT goto yyabort 81 #define YYREJECT goto yyabort 82 #define YYACCEPT goto yyaccept 83 #define YYERROR goto yyerrlab 84 int 85 yyparse() 86 { 87 register int yym, yyn, yystate; 88 #if YYDEBUG 89 register char *yys; 90 extern char *getenv(); 91 92 if (yys = getenv("YYDEBUG")) 93 { 94 yyn = *yys; 95 if (yyn >= '0' && yyn <= '9') 96 yydebug = yyn - '0'; 97 } 98 #endif 99 100 yynerrs = 0; 101 yyerrflag = 0; 102 yychar = (-1); 103 104 yyssp = yyss; 105 yyvsp = yyvs; 106 *yyssp = yystate = 0; 107 108 yyloop: 109 if (yyn = yydefred[yystate]) goto yyreduce; 110 if (yychar < 0) 111 { 112 if ((yychar = yylex()) < 0) yychar = 0; 113 #if YYDEBUG 114 if (yydebug) 115 { 116 yys = 0; 117 if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 118 if (!yys) yys = "illegal-symbol"; 119 printf("%sdebug: state %d, reading %d (%s)\n", 120 YYPREFIX, yystate, yychar, yys); 121 } 122 #endif 123 } 124 if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && 125 yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 126 { 127 #if YYDEBUG 128 if (yydebug) 129 printf("%sdebug: state %d, shifting to state %d\n", 130 YYPREFIX, yystate, yytable[yyn]); 131 #endif 132 if (yyssp >= yyss + yystacksize - 1) 133 { 134 goto yyoverflow; 135 } 136 *++yyssp = yystate = yytable[yyn]; 137 *++yyvsp = yylval; 138 yychar = (-1); 139 if (yyerrflag > 0) --yyerrflag; 140 goto yyloop; 141 } 142 if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && 143 yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 144 { 145 yyn = yytable[yyn]; 146 goto yyreduce; 147 } 148 if (yyerrflag) goto yyinrecovery; 149 #ifdef lint 150 goto yynewerror; 151 #endif 152 yynewerror: 153 yyerror("syntax error"); 154 #ifdef lint 155 goto yyerrlab; 156 #endif 157 yyerrlab: 158 ++yynerrs; 159 yyinrecovery: 160 if (yyerrflag < 3) 161 { 162 yyerrflag = 3; 163 for (;;) 164 { 165 if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && 166 yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) 167 { 168 #if YYDEBUG 169 if (yydebug) 170 printf("%sdebug: state %d, error recovery shifting\ 171 to state %d\n", YYPREFIX, *yyssp, yytable[yyn]); 172 #endif 173 if (yyssp >= yyss + yystacksize - 1) 174 { 175 goto yyoverflow; 176 } 177 *++yyssp = yystate = yytable[yyn]; 178 *++yyvsp = yylval; 179 goto yyloop; 180 } 181 else 182 { 183 #if YYDEBUG 184 if (yydebug) 185 printf("%sdebug: error recovery discarding state %d\n", 186 YYPREFIX, *yyssp); 187 #endif 188 if (yyssp <= yyss) goto yyabort; 189 --yyssp; 190 --yyvsp; 191 } 192 } 193 } 194 else 195 { 196 if (yychar == 0) goto yyabort; 197 #if YYDEBUG 198 if (yydebug) 199 { 200 yys = 0; 201 if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 202 if (!yys) yys = "illegal-symbol"; 203 printf("%sdebug: state %d, error recovery discards token %d (%s)\n", 204 YYPREFIX, yystate, yychar, yys); 205 } 206 #endif 207 yychar = (-1); 208 goto yyloop; 209 } 210 yyreduce: 211 #if YYDEBUG 212 if (yydebug) 213 printf("%sdebug: state %d, reducing by rule %d (%s)\n", 214 YYPREFIX, yystate, yyn, yyrule[yyn]); 215 #endif 216 yym = yylen[yyn]; 217 yyval = yyvsp[1-yym]; 218 switch (yyn) 219 { 220 } 221 yyssp -= yym; 222 yystate = *yyssp; 223 yyvsp -= yym; 224 yym = yylhs[yyn]; 225 if (yystate == 0 && yym == 0) 226 { 227 #if YYDEBUG 228 if (yydebug) 229 printf("%sdebug: after reduction, shifting from state 0 to\ 230 state %d\n", YYPREFIX, YYFINAL); 231 #endif 232 yystate = YYFINAL; 233 *++yyssp = YYFINAL; 234 *++yyvsp = yyval; 235 if (yychar < 0) 236 { 237 if ((yychar = yylex()) < 0) yychar = 0; 238 #if YYDEBUG 239 if (yydebug) 240 { 241 yys = 0; 242 if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 243 if (!yys) yys = "illegal-symbol"; 244 printf("%sdebug: state %d, reading %d (%s)\n", 245 YYPREFIX, YYFINAL, yychar, yys); 246 } 247 #endif 248 } 249 if (yychar == 0) goto yyaccept; 250 goto yyloop; 251 } 252 if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && 253 yyn <= YYTABLESIZE && yycheck[yyn] == yystate) 254 yystate = yytable[yyn]; 255 else 256 yystate = yydgoto[yym]; 257 #if YYDEBUG 258 if (yydebug) 259 printf("%sdebug: after reduction, shifting from state %d \ 260 to state %d\n", YYPREFIX, *yyssp, yystate); 261 #endif 262 if (yyssp >= yyss + yystacksize - 1) 263 { 264 goto yyoverflow; 265 } 266 *++yyssp = yystate; 267 *++yyvsp = yyval; 268 goto yyloop; 269 yyoverflow: 270 yyerror("yacc stack overflow"); 271 yyabort: 272 return (1); 273 yyaccept: 274 return (0); 275 } 276