1234949Sbapt#ifndef lint 2234949Sbaptstatic const char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; 3234949Sbapt#endif 4234949Sbapt 5234949Sbapt#define YYBYACC 1 6234949Sbapt#define YYMAJOR 1 7234949Sbapt#define YYMINOR 9 8234949Sbapt 9234949Sbapt#define YYEMPTY (-1) 10234949Sbapt#define yyclearin (yychar = YYEMPTY) 11234949Sbapt#define yyerrok (yyerrflag = 0) 12234949Sbapt#define YYRECOVERING() (yyerrflag != 0) 13234949Sbapt 14234949Sbapt 15234949Sbapt#ifndef yyparse 16234949Sbapt#define yyparse error_parse 17234949Sbapt#endif /* yyparse */ 18234949Sbapt 19234949Sbapt#ifndef yylex 20234949Sbapt#define yylex error_lex 21234949Sbapt#endif /* yylex */ 22234949Sbapt 23234949Sbapt#ifndef yyerror 24234949Sbapt#define yyerror error_error 25234949Sbapt#endif /* yyerror */ 26234949Sbapt 27234949Sbapt#ifndef yychar 28234949Sbapt#define yychar error_char 29234949Sbapt#endif /* yychar */ 30234949Sbapt 31234949Sbapt#ifndef yyval 32234949Sbapt#define yyval error_val 33234949Sbapt#endif /* yyval */ 34234949Sbapt 35234949Sbapt#ifndef yylval 36234949Sbapt#define yylval error_lval 37234949Sbapt#endif /* yylval */ 38234949Sbapt 39234949Sbapt#ifndef yydebug 40234949Sbapt#define yydebug error_debug 41234949Sbapt#endif /* yydebug */ 42234949Sbapt 43234949Sbapt#ifndef yynerrs 44234949Sbapt#define yynerrs error_nerrs 45234949Sbapt#endif /* yynerrs */ 46234949Sbapt 47234949Sbapt#ifndef yyerrflag 48234949Sbapt#define yyerrflag error_errflag 49234949Sbapt#endif /* yyerrflag */ 50234949Sbapt 51234949Sbapt#ifndef yylhs 52234949Sbapt#define yylhs error_lhs 53234949Sbapt#endif /* yylhs */ 54234949Sbapt 55234949Sbapt#ifndef yylen 56234949Sbapt#define yylen error_len 57234949Sbapt#endif /* yylen */ 58234949Sbapt 59234949Sbapt#ifndef yydefred 60234949Sbapt#define yydefred error_defred 61234949Sbapt#endif /* yydefred */ 62234949Sbapt 63234949Sbapt#ifndef yydgoto 64234949Sbapt#define yydgoto error_dgoto 65234949Sbapt#endif /* yydgoto */ 66234949Sbapt 67234949Sbapt#ifndef yysindex 68234949Sbapt#define yysindex error_sindex 69234949Sbapt#endif /* yysindex */ 70234949Sbapt 71234949Sbapt#ifndef yyrindex 72234949Sbapt#define yyrindex error_rindex 73234949Sbapt#endif /* yyrindex */ 74234949Sbapt 75234949Sbapt#ifndef yygindex 76234949Sbapt#define yygindex error_gindex 77234949Sbapt#endif /* yygindex */ 78234949Sbapt 79234949Sbapt#ifndef yytable 80234949Sbapt#define yytable error_table 81234949Sbapt#endif /* yytable */ 82234949Sbapt 83234949Sbapt#ifndef yycheck 84234949Sbapt#define yycheck error_check 85234949Sbapt#endif /* yycheck */ 86234949Sbapt 87234949Sbapt#ifndef yyname 88234949Sbapt#define yyname error_name 89234949Sbapt#endif /* yyname */ 90234949Sbapt 91234949Sbapt#ifndef yyrule 92234949Sbapt#define yyrule error_rule 93234949Sbapt#endif /* yyrule */ 94234949Sbapt#define YYPREFIX "error_" 95234949Sbapt 96234949Sbapt#define YYPURE 1 97234949Sbapt 98234949Sbapt#line 2 "pure_error.y" 99234949Sbapt 100234949Sbapt#ifdef YYBISON 101234949Sbapt#define YYSTYPE int 102234949Sbapt#define YYLEX_PARAM &yylval 103234949Sbapt#define YYLEX_DECL() yylex(YYSTYPE *yylval) 104234949Sbapt#define YYERROR_DECL() yyerror(const char *s) 105234949Sbaptint YYLEX_DECL(); 106234949Sbaptstatic void YYERROR_DECL(); 107234949Sbapt#endif 108234949Sbapt 109234949Sbapt#line 110 "pure_error.tab.c" 110234949Sbapt 111234949Sbapt#ifndef YYSTYPE 112234949Sbapttypedef int YYSTYPE; 113234949Sbapt#endif 114234949Sbapt 115234949Sbapt/* compatibility with bison */ 116234949Sbapt#ifdef YYPARSE_PARAM 117234949Sbapt/* compatibility with FreeBSD */ 118234949Sbapt# ifdef YYPARSE_PARAM_TYPE 119234949Sbapt# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) 120234949Sbapt# else 121234949Sbapt# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) 122234949Sbapt# endif 123234949Sbapt#else 124234949Sbapt# define YYPARSE_DECL() yyparse(void) 125234949Sbapt#endif 126234949Sbapt 127234949Sbapt/* Parameters sent to lex. */ 128234949Sbapt#ifdef YYLEX_PARAM 129234949Sbapt# ifdef YYLEX_PARAM_TYPE 130234949Sbapt# define YYLEX_DECL() yylex(YYSTYPE *yylval, YYLEX_PARAM_TYPE YYLEX_PARAM) 131234949Sbapt# else 132234949Sbapt# define YYLEX_DECL() yylex(YYSTYPE *yylval, void * YYLEX_PARAM) 133234949Sbapt# endif 134234949Sbapt# define YYLEX yylex(&yylval, YYLEX_PARAM) 135234949Sbapt#else 136234949Sbapt# define YYLEX_DECL() yylex(YYSTYPE *yylval) 137234949Sbapt# define YYLEX yylex(&yylval) 138234949Sbapt#endif 139234949Sbapt 140234949Sbapt/* Parameters sent to yyerror. */ 141234949Sbapt#ifndef YYERROR_DECL 142234949Sbapt#define YYERROR_DECL() yyerror(const char *s) 143234949Sbapt#endif 144234949Sbapt#ifndef YYERROR_CALL 145234949Sbapt#define YYERROR_CALL(msg) yyerror(msg) 146234949Sbapt#endif 147234949Sbapt 148234949Sbaptextern int YYPARSE_DECL(); 149234949Sbapt 150234949Sbapt#define YYERRCODE 256 151234949Sbaptstatic const short error_lhs[] = { -1, 152234949Sbapt 0, 153234949Sbapt}; 154234949Sbaptstatic const short error_len[] = { 2, 155234949Sbapt 1, 156234949Sbapt}; 157234949Sbaptstatic const short error_defred[] = { 0, 158234949Sbapt 1, 0, 159234949Sbapt}; 160234949Sbaptstatic const short error_dgoto[] = { 2, 161234949Sbapt}; 162234949Sbaptstatic const short error_sindex[] = { -256, 163234949Sbapt 0, 0, 164234949Sbapt}; 165234949Sbaptstatic const short error_rindex[] = { 0, 166234949Sbapt 0, 0, 167234949Sbapt}; 168234949Sbaptstatic const short error_gindex[] = { 0, 169234949Sbapt}; 170234949Sbapt#define YYTABLESIZE 0 171234949Sbaptstatic const short error_table[] = { 1, 172234949Sbapt}; 173234949Sbaptstatic const short error_check[] = { 256, 174234949Sbapt}; 175234949Sbapt#define YYFINAL 2 176234949Sbapt#ifndef YYDEBUG 177234949Sbapt#define YYDEBUG 0 178234949Sbapt#endif 179234949Sbapt#define YYMAXTOKEN 0 180234949Sbapt#if YYDEBUG 181234949Sbaptstatic const char *yyname[] = { 182234949Sbapt 183234949Sbapt"end-of-file", 184234949Sbapt}; 185234949Sbaptstatic const char *yyrule[] = { 186234949Sbapt"$accept : S", 187234949Sbapt"S : error", 188234949Sbapt 189234949Sbapt}; 190234949Sbapt#endif 191234949Sbapt 192234949Sbaptint yydebug; 193234949Sbaptint yynerrs; 194234949Sbapt 195234949Sbapt/* define the initial stack-sizes */ 196234949Sbapt#ifdef YYSTACKSIZE 197234949Sbapt#undef YYMAXDEPTH 198234949Sbapt#define YYMAXDEPTH YYSTACKSIZE 199234949Sbapt#else 200234949Sbapt#ifdef YYMAXDEPTH 201234949Sbapt#define YYSTACKSIZE YYMAXDEPTH 202234949Sbapt#else 203234949Sbapt#define YYSTACKSIZE 500 204234949Sbapt#define YYMAXDEPTH 500 205234949Sbapt#endif 206234949Sbapt#endif 207234949Sbapt 208234949Sbapt#define YYINITSTACKSIZE 500 209234949Sbapt 210234949Sbapttypedef struct { 211234949Sbapt unsigned stacksize; 212234949Sbapt short *s_base; 213234949Sbapt short *s_mark; 214234949Sbapt short *s_last; 215234949Sbapt YYSTYPE *l_base; 216234949Sbapt YYSTYPE *l_mark; 217234949Sbapt} YYSTACKDATA; 218234949Sbapt#line 17 "pure_error.y" 219234949Sbapt 220234949Sbapt#include <stdio.h> 221234949Sbapt 222234949Sbapt#ifdef YYBYACC 223234949Sbaptextern int YYLEX_DECL(); 224234949Sbapt#endif 225234949Sbapt 226234949Sbaptint 227234949Sbaptmain(void) 228234949Sbapt{ 229234949Sbapt printf("yyparse() = %d\n", yyparse()); 230234949Sbapt return 0; 231234949Sbapt} 232234949Sbapt 233234949Sbaptint 234234949Sbaptyylex(YYSTYPE *value) 235234949Sbapt{ 236234949Sbapt return value ? 0 : -1; 237234949Sbapt} 238234949Sbapt 239234949Sbaptstatic void 240234949Sbaptyyerror(const char* s) 241234949Sbapt{ 242234949Sbapt printf("%s\n", s); 243234949Sbapt} 244234949Sbapt#line 245 "pure_error.tab.c" 245234949Sbapt 246234949Sbapt#if YYDEBUG 247234949Sbapt#include <stdio.h> /* needed for printf */ 248234949Sbapt#endif 249234949Sbapt 250234949Sbapt#include <stdlib.h> /* needed for malloc, etc */ 251234949Sbapt#include <string.h> /* needed for memset */ 252234949Sbapt 253234949Sbapt/* allocate initial stack or double stack size, up to YYMAXDEPTH */ 254234949Sbaptstatic int yygrowstack(YYSTACKDATA *data) 255234949Sbapt{ 256234949Sbapt int i; 257234949Sbapt unsigned newsize; 258234949Sbapt short *newss; 259234949Sbapt YYSTYPE *newvs; 260234949Sbapt 261234949Sbapt if ((newsize = data->stacksize) == 0) 262234949Sbapt newsize = YYINITSTACKSIZE; 263234949Sbapt else if (newsize >= YYMAXDEPTH) 264234949Sbapt return -1; 265234949Sbapt else if ((newsize *= 2) > YYMAXDEPTH) 266234949Sbapt newsize = YYMAXDEPTH; 267234949Sbapt 268251143Sbapt i = (int) (data->s_mark - data->s_base); 269234949Sbapt newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); 270234949Sbapt if (newss == 0) 271234949Sbapt return -1; 272234949Sbapt 273234949Sbapt data->s_base = newss; 274234949Sbapt data->s_mark = newss + i; 275234949Sbapt 276234949Sbapt newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); 277234949Sbapt if (newvs == 0) 278234949Sbapt return -1; 279234949Sbapt 280234949Sbapt data->l_base = newvs; 281234949Sbapt data->l_mark = newvs + i; 282234949Sbapt 283234949Sbapt data->stacksize = newsize; 284234949Sbapt data->s_last = data->s_base + newsize - 1; 285234949Sbapt return 0; 286234949Sbapt} 287234949Sbapt 288234949Sbapt#if YYPURE || defined(YY_NO_LEAKS) 289234949Sbaptstatic void yyfreestack(YYSTACKDATA *data) 290234949Sbapt{ 291234949Sbapt free(data->s_base); 292234949Sbapt free(data->l_base); 293234949Sbapt memset(data, 0, sizeof(*data)); 294234949Sbapt} 295234949Sbapt#else 296234949Sbapt#define yyfreestack(data) /* nothing */ 297234949Sbapt#endif 298234949Sbapt 299234949Sbapt#define YYABORT goto yyabort 300234949Sbapt#define YYREJECT goto yyabort 301234949Sbapt#define YYACCEPT goto yyaccept 302234949Sbapt#define YYERROR goto yyerrlab 303234949Sbapt 304234949Sbaptint 305234949SbaptYYPARSE_DECL() 306234949Sbapt{ 307234949Sbapt int yyerrflag; 308234949Sbapt int yychar; 309234949Sbapt YYSTYPE yyval; 310234949Sbapt YYSTYPE yylval; 311234949Sbapt 312234949Sbapt /* variables for the parser stack */ 313234949Sbapt YYSTACKDATA yystack; 314234949Sbapt int yym, yyn, yystate; 315234949Sbapt#if YYDEBUG 316234949Sbapt const char *yys; 317234949Sbapt 318234949Sbapt if ((yys = getenv("YYDEBUG")) != 0) 319234949Sbapt { 320234949Sbapt yyn = *yys; 321234949Sbapt if (yyn >= '0' && yyn <= '9') 322234949Sbapt yydebug = yyn - '0'; 323234949Sbapt } 324234949Sbapt#endif 325234949Sbapt 326234949Sbapt yynerrs = 0; 327234949Sbapt yyerrflag = 0; 328234949Sbapt yychar = YYEMPTY; 329234949Sbapt yystate = 0; 330234949Sbapt 331234949Sbapt#if YYPURE 332234949Sbapt memset(&yystack, 0, sizeof(yystack)); 333234949Sbapt#endif 334234949Sbapt 335234949Sbapt if (yystack.s_base == NULL && yygrowstack(&yystack)) goto yyoverflow; 336234949Sbapt yystack.s_mark = yystack.s_base; 337234949Sbapt yystack.l_mark = yystack.l_base; 338234949Sbapt yystate = 0; 339234949Sbapt *yystack.s_mark = 0; 340234949Sbapt 341234949Sbaptyyloop: 342234949Sbapt if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 343234949Sbapt if (yychar < 0) 344234949Sbapt { 345234949Sbapt if ((yychar = YYLEX) < 0) yychar = 0; 346234949Sbapt#if YYDEBUG 347234949Sbapt if (yydebug) 348234949Sbapt { 349234949Sbapt yys = 0; 350234949Sbapt if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 351234949Sbapt if (!yys) yys = "illegal-symbol"; 352234949Sbapt printf("%sdebug: state %d, reading %d (%s)\n", 353234949Sbapt YYPREFIX, yystate, yychar, yys); 354234949Sbapt } 355234949Sbapt#endif 356234949Sbapt } 357234949Sbapt if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && 358234949Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 359234949Sbapt { 360234949Sbapt#if YYDEBUG 361234949Sbapt if (yydebug) 362234949Sbapt printf("%sdebug: state %d, shifting to state %d\n", 363234949Sbapt YYPREFIX, yystate, yytable[yyn]); 364234949Sbapt#endif 365234949Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) 366234949Sbapt { 367234949Sbapt goto yyoverflow; 368234949Sbapt } 369234949Sbapt yystate = yytable[yyn]; 370234949Sbapt *++yystack.s_mark = yytable[yyn]; 371234949Sbapt *++yystack.l_mark = yylval; 372234949Sbapt yychar = YYEMPTY; 373234949Sbapt if (yyerrflag > 0) --yyerrflag; 374234949Sbapt goto yyloop; 375234949Sbapt } 376234949Sbapt if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && 377234949Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 378234949Sbapt { 379234949Sbapt yyn = yytable[yyn]; 380234949Sbapt goto yyreduce; 381234949Sbapt } 382234949Sbapt if (yyerrflag) goto yyinrecovery; 383234949Sbapt 384234949Sbapt yyerror("syntax error"); 385234949Sbapt 386234949Sbapt goto yyerrlab; 387234949Sbapt 388234949Sbaptyyerrlab: 389234949Sbapt ++yynerrs; 390234949Sbapt 391234949Sbaptyyinrecovery: 392234949Sbapt if (yyerrflag < 3) 393234949Sbapt { 394234949Sbapt yyerrflag = 3; 395234949Sbapt for (;;) 396234949Sbapt { 397234949Sbapt if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && 398234949Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) 399234949Sbapt { 400234949Sbapt#if YYDEBUG 401234949Sbapt if (yydebug) 402234949Sbapt printf("%sdebug: state %d, error recovery shifting\ 403234949Sbapt to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); 404234949Sbapt#endif 405234949Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) 406234949Sbapt { 407234949Sbapt goto yyoverflow; 408234949Sbapt } 409234949Sbapt yystate = yytable[yyn]; 410234949Sbapt *++yystack.s_mark = yytable[yyn]; 411234949Sbapt *++yystack.l_mark = yylval; 412234949Sbapt goto yyloop; 413234949Sbapt } 414234949Sbapt else 415234949Sbapt { 416234949Sbapt#if YYDEBUG 417234949Sbapt if (yydebug) 418234949Sbapt printf("%sdebug: error recovery discarding state %d\n", 419234949Sbapt YYPREFIX, *yystack.s_mark); 420234949Sbapt#endif 421234949Sbapt if (yystack.s_mark <= yystack.s_base) goto yyabort; 422234949Sbapt --yystack.s_mark; 423234949Sbapt --yystack.l_mark; 424234949Sbapt } 425234949Sbapt } 426234949Sbapt } 427234949Sbapt else 428234949Sbapt { 429234949Sbapt if (yychar == 0) goto yyabort; 430234949Sbapt#if YYDEBUG 431234949Sbapt if (yydebug) 432234949Sbapt { 433234949Sbapt yys = 0; 434234949Sbapt if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 435234949Sbapt if (!yys) yys = "illegal-symbol"; 436234949Sbapt printf("%sdebug: state %d, error recovery discards token %d (%s)\n", 437234949Sbapt YYPREFIX, yystate, yychar, yys); 438234949Sbapt } 439234949Sbapt#endif 440234949Sbapt yychar = YYEMPTY; 441234949Sbapt goto yyloop; 442234949Sbapt } 443234949Sbapt 444234949Sbaptyyreduce: 445234949Sbapt#if YYDEBUG 446234949Sbapt if (yydebug) 447234949Sbapt printf("%sdebug: state %d, reducing by rule %d (%s)\n", 448234949Sbapt YYPREFIX, yystate, yyn, yyrule[yyn]); 449234949Sbapt#endif 450234949Sbapt yym = yylen[yyn]; 451234949Sbapt if (yym) 452234949Sbapt yyval = yystack.l_mark[1-yym]; 453234949Sbapt else 454234949Sbapt memset(&yyval, 0, sizeof yyval); 455234949Sbapt switch (yyn) 456234949Sbapt { 457234949Sbapt } 458234949Sbapt yystack.s_mark -= yym; 459234949Sbapt yystate = *yystack.s_mark; 460234949Sbapt yystack.l_mark -= yym; 461234949Sbapt yym = yylhs[yyn]; 462234949Sbapt if (yystate == 0 && yym == 0) 463234949Sbapt { 464234949Sbapt#if YYDEBUG 465234949Sbapt if (yydebug) 466234949Sbapt printf("%sdebug: after reduction, shifting from state 0 to\ 467234949Sbapt state %d\n", YYPREFIX, YYFINAL); 468234949Sbapt#endif 469234949Sbapt yystate = YYFINAL; 470234949Sbapt *++yystack.s_mark = YYFINAL; 471234949Sbapt *++yystack.l_mark = yyval; 472234949Sbapt if (yychar < 0) 473234949Sbapt { 474234949Sbapt if ((yychar = YYLEX) < 0) yychar = 0; 475234949Sbapt#if YYDEBUG 476234949Sbapt if (yydebug) 477234949Sbapt { 478234949Sbapt yys = 0; 479234949Sbapt if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 480234949Sbapt if (!yys) yys = "illegal-symbol"; 481234949Sbapt printf("%sdebug: state %d, reading %d (%s)\n", 482234949Sbapt YYPREFIX, YYFINAL, yychar, yys); 483234949Sbapt } 484234949Sbapt#endif 485234949Sbapt } 486234949Sbapt if (yychar == 0) goto yyaccept; 487234949Sbapt goto yyloop; 488234949Sbapt } 489234949Sbapt if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && 490234949Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == yystate) 491234949Sbapt yystate = yytable[yyn]; 492234949Sbapt else 493234949Sbapt yystate = yydgoto[yym]; 494234949Sbapt#if YYDEBUG 495234949Sbapt if (yydebug) 496234949Sbapt printf("%sdebug: after reduction, shifting from state %d \ 497234949Sbaptto state %d\n", YYPREFIX, *yystack.s_mark, yystate); 498234949Sbapt#endif 499234949Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) 500234949Sbapt { 501234949Sbapt goto yyoverflow; 502234949Sbapt } 503234949Sbapt *++yystack.s_mark = (short) yystate; 504234949Sbapt *++yystack.l_mark = yyval; 505234949Sbapt goto yyloop; 506234949Sbapt 507234949Sbaptyyoverflow: 508234949Sbapt yyerror("yacc stack overflow"); 509234949Sbapt 510234949Sbaptyyabort: 511234949Sbapt yyfreestack(&yystack); 512234949Sbapt return (1); 513234949Sbapt 514234949Sbaptyyaccept: 515234949Sbapt yyfreestack(&yystack); 516234949Sbapt return (0); 517234949Sbapt} 518