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