1264790Sbapt/* original parser id follows */ 2264790Sbapt/* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ 3264790Sbapt/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ 4264790Sbapt 5264790Sbapt#define YYBYACC 1 6264790Sbapt#define YYMAJOR 1 7264790Sbapt#define YYMINOR 9 8264790Sbapt#define YYCHECK "yyyymmdd" 9264790Sbapt 10264790Sbapt#define YYEMPTY (-1) 11264790Sbapt#define yyclearin (yychar = YYEMPTY) 12264790Sbapt#define yyerrok (yyerrflag = 0) 13264790Sbapt#define YYRECOVERING() (yyerrflag != 0) 14264790Sbapt#define YYENOMEM (-2) 15264790Sbapt#define YYEOF 0 16264790Sbapt 17264790Sbapt#ifndef yyparse 18264790Sbapt#define yyparse error_parse 19264790Sbapt#endif /* yyparse */ 20264790Sbapt 21264790Sbapt#ifndef yylex 22264790Sbapt#define yylex error_lex 23264790Sbapt#endif /* yylex */ 24264790Sbapt 25264790Sbapt#ifndef yyerror 26264790Sbapt#define yyerror error_error 27264790Sbapt#endif /* yyerror */ 28264790Sbapt 29264790Sbapt#ifndef yychar 30264790Sbapt#define yychar error_char 31264790Sbapt#endif /* yychar */ 32264790Sbapt 33264790Sbapt#ifndef yyval 34264790Sbapt#define yyval error_val 35264790Sbapt#endif /* yyval */ 36264790Sbapt 37264790Sbapt#ifndef yylval 38264790Sbapt#define yylval error_lval 39264790Sbapt#endif /* yylval */ 40264790Sbapt 41264790Sbapt#ifndef yydebug 42264790Sbapt#define yydebug error_debug 43264790Sbapt#endif /* yydebug */ 44264790Sbapt 45264790Sbapt#ifndef yynerrs 46264790Sbapt#define yynerrs error_nerrs 47264790Sbapt#endif /* yynerrs */ 48264790Sbapt 49264790Sbapt#ifndef yyerrflag 50264790Sbapt#define yyerrflag error_errflag 51264790Sbapt#endif /* yyerrflag */ 52264790Sbapt 53264790Sbapt#ifndef yylhs 54264790Sbapt#define yylhs error_lhs 55264790Sbapt#endif /* yylhs */ 56264790Sbapt 57264790Sbapt#ifndef yylen 58264790Sbapt#define yylen error_len 59264790Sbapt#endif /* yylen */ 60264790Sbapt 61264790Sbapt#ifndef yydefred 62264790Sbapt#define yydefred error_defred 63264790Sbapt#endif /* yydefred */ 64264790Sbapt 65264790Sbapt#ifndef yydgoto 66264790Sbapt#define yydgoto error_dgoto 67264790Sbapt#endif /* yydgoto */ 68264790Sbapt 69264790Sbapt#ifndef yysindex 70264790Sbapt#define yysindex error_sindex 71264790Sbapt#endif /* yysindex */ 72264790Sbapt 73264790Sbapt#ifndef yyrindex 74264790Sbapt#define yyrindex error_rindex 75264790Sbapt#endif /* yyrindex */ 76264790Sbapt 77264790Sbapt#ifndef yygindex 78264790Sbapt#define yygindex error_gindex 79264790Sbapt#endif /* yygindex */ 80264790Sbapt 81264790Sbapt#ifndef yytable 82264790Sbapt#define yytable error_table 83264790Sbapt#endif /* yytable */ 84264790Sbapt 85264790Sbapt#ifndef yycheck 86264790Sbapt#define yycheck error_check 87264790Sbapt#endif /* yycheck */ 88264790Sbapt 89264790Sbapt#ifndef yyname 90264790Sbapt#define yyname error_name 91264790Sbapt#endif /* yyname */ 92264790Sbapt 93264790Sbapt#ifndef yyrule 94264790Sbapt#define yyrule error_rule 95264790Sbapt#endif /* yyrule */ 96264790Sbapt#define YYPREFIX "error_" 97264790Sbapt 98264790Sbapt#define YYPURE 0 99264790Sbapt 100264790Sbapt#line 2 "code_error.y" 101264790Sbapt 102264790Sbapt#ifdef YYBISON 103264790Sbaptint yylex(void); 104264790Sbaptstatic void yyerror(const char *); 105264790Sbapt#endif 106264790Sbapt 107264790Sbapt#line 108 "code_error.code.c" 108264790Sbapt 109264790Sbapt#if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED) 110264790Sbapt/* Default: YYSTYPE is the semantic value type. */ 111264790Sbapttypedef int YYSTYPE; 112264790Sbapt# define YYSTYPE_IS_DECLARED 1 113264790Sbapt#endif 114264790Sbapt 115264790Sbapt/* compatibility with bison */ 116264790Sbapt#ifdef YYPARSE_PARAM 117264790Sbapt/* compatibility with FreeBSD */ 118264790Sbapt# ifdef YYPARSE_PARAM_TYPE 119264790Sbapt# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) 120264790Sbapt# else 121264790Sbapt# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) 122264790Sbapt# endif 123264790Sbapt#else 124264790Sbapt# define YYPARSE_DECL() yyparse(void) 125264790Sbapt#endif 126264790Sbapt 127264790Sbapt/* Parameters sent to lex. */ 128264790Sbapt#ifdef YYLEX_PARAM 129264790Sbapt# define YYLEX_DECL() yylex(void *YYLEX_PARAM) 130264790Sbapt# define YYLEX yylex(YYLEX_PARAM) 131264790Sbapt#else 132264790Sbapt# define YYLEX_DECL() yylex(void) 133264790Sbapt# define YYLEX yylex() 134264790Sbapt#endif 135264790Sbapt 136264790Sbapt/* Parameters sent to yyerror. */ 137264790Sbapt#ifndef YYERROR_DECL 138264790Sbapt#define YYERROR_DECL() yyerror(const char *s) 139264790Sbapt#endif 140264790Sbapt#ifndef YYERROR_CALL 141264790Sbapt#define YYERROR_CALL(msg) yyerror(msg) 142264790Sbapt#endif 143264790Sbapt 144264790Sbapt#define YYERRCODE 256 145264790Sbapt#define YYTABLESIZE 0 146264790Sbapt#define YYFINAL 2 147264790Sbapt#ifndef YYDEBUG 148264790Sbapt#define YYDEBUG 0 149264790Sbapt#endif 150264790Sbapt#define YYMAXTOKEN 256 151264790Sbapt#define YYUNDFTOKEN 259 152264790Sbapt#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) 153264790Sbapt 154264790Sbaptextern int YYPARSE_DECL(); 155264790Sbapttypedef short YYINT; 156264790Sbaptextern YYINT yylhs[]; 157264790Sbaptextern YYINT yylen[]; 158264790Sbaptextern YYINT yydefred[]; 159264790Sbaptextern YYINT yydgoto[]; 160264790Sbaptextern YYINT yysindex[]; 161264790Sbaptextern YYINT yyrindex[]; 162264790Sbaptextern YYINT yygindex[]; 163264790Sbaptextern YYINT yytable[]; 164264790Sbaptextern YYINT yycheck[]; 165264790Sbapt 166264790Sbapt#if YYDEBUG 167264790Sbaptextern char *yyname[]; 168264790Sbaptextern char *yyrule[]; 169264790Sbapt#endif 170264790Sbapt 171264790Sbaptint yydebug; 172264790Sbaptint yynerrs; 173264790Sbapt 174264790Sbaptint yyerrflag; 175264790Sbaptint yychar; 176264790SbaptYYSTYPE yyval; 177264790SbaptYYSTYPE yylval; 178264790Sbapt 179264790Sbapt/* define the initial stack-sizes */ 180264790Sbapt#ifdef YYSTACKSIZE 181264790Sbapt#undef YYMAXDEPTH 182264790Sbapt#define YYMAXDEPTH YYSTACKSIZE 183264790Sbapt#else 184264790Sbapt#ifdef YYMAXDEPTH 185264790Sbapt#define YYSTACKSIZE YYMAXDEPTH 186264790Sbapt#else 187264790Sbapt#define YYSTACKSIZE 10000 188264790Sbapt#define YYMAXDEPTH 10000 189264790Sbapt#endif 190264790Sbapt#endif 191264790Sbapt 192264790Sbapt#define YYINITSTACKSIZE 200 193264790Sbapt 194264790Sbapttypedef struct { 195264790Sbapt unsigned stacksize; 196264790Sbapt YYINT *s_base; 197264790Sbapt YYINT *s_mark; 198264790Sbapt YYINT *s_last; 199264790Sbapt YYSTYPE *l_base; 200264790Sbapt YYSTYPE *l_mark; 201264790Sbapt} YYSTACKDATA; 202264790Sbapt/* variables for the parser stack */ 203264790Sbaptstatic YYSTACKDATA yystack; 204264790Sbapt#line 12 "code_error.y" 205264790Sbapt 206264790Sbapt#include <stdio.h> 207264790Sbapt 208264790Sbapt#ifdef YYBYACC 209264790Sbaptextern int YYLEX_DECL(); 210264790Sbapt#endif 211264790Sbapt 212264790Sbaptint 213264790Sbaptmain(void) 214264790Sbapt{ 215264790Sbapt printf("yyparse() = %d\n", yyparse()); 216264790Sbapt return 0; 217264790Sbapt} 218264790Sbapt 219264790Sbaptint 220264790Sbaptyylex(void) 221264790Sbapt{ 222264790Sbapt return -1; 223264790Sbapt} 224264790Sbapt 225264790Sbaptstatic void 226264790Sbaptyyerror(const char* s) 227264790Sbapt{ 228264790Sbapt printf("%s\n", s); 229264790Sbapt} 230264790Sbapt#line 231 "code_error.code.c" 231264790Sbapt 232264790Sbapt#if YYDEBUG 233264790Sbapt#include <stdio.h> /* needed for printf */ 234264790Sbapt#endif 235264790Sbapt 236264790Sbapt#include <stdlib.h> /* needed for malloc, etc */ 237264790Sbapt#include <string.h> /* needed for memset */ 238264790Sbapt 239264790Sbapt/* allocate initial stack or double stack size, up to YYMAXDEPTH */ 240264790Sbaptstatic int yygrowstack(YYSTACKDATA *data) 241264790Sbapt{ 242264790Sbapt int i; 243264790Sbapt unsigned newsize; 244264790Sbapt YYINT *newss; 245264790Sbapt YYSTYPE *newvs; 246264790Sbapt 247264790Sbapt if ((newsize = data->stacksize) == 0) 248264790Sbapt newsize = YYINITSTACKSIZE; 249264790Sbapt else if (newsize >= YYMAXDEPTH) 250264790Sbapt return YYENOMEM; 251264790Sbapt else if ((newsize *= 2) > YYMAXDEPTH) 252264790Sbapt newsize = YYMAXDEPTH; 253264790Sbapt 254264790Sbapt i = (int) (data->s_mark - data->s_base); 255264790Sbapt newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); 256264790Sbapt if (newss == 0) 257264790Sbapt return YYENOMEM; 258264790Sbapt 259264790Sbapt data->s_base = newss; 260264790Sbapt data->s_mark = newss + i; 261264790Sbapt 262264790Sbapt newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); 263264790Sbapt if (newvs == 0) 264264790Sbapt return YYENOMEM; 265264790Sbapt 266264790Sbapt data->l_base = newvs; 267264790Sbapt data->l_mark = newvs + i; 268264790Sbapt 269264790Sbapt data->stacksize = newsize; 270264790Sbapt data->s_last = data->s_base + newsize - 1; 271264790Sbapt return 0; 272264790Sbapt} 273264790Sbapt 274264790Sbapt#if YYPURE || defined(YY_NO_LEAKS) 275264790Sbaptstatic void yyfreestack(YYSTACKDATA *data) 276264790Sbapt{ 277264790Sbapt free(data->s_base); 278264790Sbapt free(data->l_base); 279264790Sbapt memset(data, 0, sizeof(*data)); 280264790Sbapt} 281264790Sbapt#else 282264790Sbapt#define yyfreestack(data) /* nothing */ 283264790Sbapt#endif 284264790Sbapt 285264790Sbapt#define YYABORT goto yyabort 286264790Sbapt#define YYREJECT goto yyabort 287264790Sbapt#define YYACCEPT goto yyaccept 288264790Sbapt#define YYERROR goto yyerrlab 289264790Sbapt 290264790Sbaptint 291264790SbaptYYPARSE_DECL() 292264790Sbapt{ 293264790Sbapt int yym, yyn, yystate; 294264790Sbapt#if YYDEBUG 295264790Sbapt const char *yys; 296264790Sbapt 297264790Sbapt if ((yys = getenv("YYDEBUG")) != 0) 298264790Sbapt { 299264790Sbapt yyn = *yys; 300264790Sbapt if (yyn >= '0' && yyn <= '9') 301264790Sbapt yydebug = yyn - '0'; 302264790Sbapt } 303264790Sbapt#endif 304264790Sbapt 305264790Sbapt yynerrs = 0; 306264790Sbapt yyerrflag = 0; 307264790Sbapt yychar = YYEMPTY; 308264790Sbapt yystate = 0; 309264790Sbapt 310264790Sbapt#if YYPURE 311264790Sbapt memset(&yystack, 0, sizeof(yystack)); 312264790Sbapt#endif 313264790Sbapt 314264790Sbapt if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 315264790Sbapt yystack.s_mark = yystack.s_base; 316264790Sbapt yystack.l_mark = yystack.l_base; 317264790Sbapt yystate = 0; 318264790Sbapt *yystack.s_mark = 0; 319264790Sbapt 320264790Sbaptyyloop: 321264790Sbapt if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 322264790Sbapt if (yychar < 0) 323264790Sbapt { 324264790Sbapt if ((yychar = YYLEX) < 0) yychar = YYEOF; 325264790Sbapt#if YYDEBUG 326264790Sbapt if (yydebug) 327264790Sbapt { 328264790Sbapt yys = yyname[YYTRANSLATE(yychar)]; 329264790Sbapt printf("%sdebug: state %d, reading %d (%s)\n", 330264790Sbapt YYPREFIX, yystate, yychar, yys); 331264790Sbapt } 332264790Sbapt#endif 333264790Sbapt } 334264790Sbapt if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && 335264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 336264790Sbapt { 337264790Sbapt#if YYDEBUG 338264790Sbapt if (yydebug) 339264790Sbapt printf("%sdebug: state %d, shifting to state %d\n", 340264790Sbapt YYPREFIX, yystate, yytable[yyn]); 341264790Sbapt#endif 342264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 343264790Sbapt { 344264790Sbapt goto yyoverflow; 345264790Sbapt } 346264790Sbapt yystate = yytable[yyn]; 347264790Sbapt *++yystack.s_mark = yytable[yyn]; 348264790Sbapt *++yystack.l_mark = yylval; 349264790Sbapt yychar = YYEMPTY; 350264790Sbapt if (yyerrflag > 0) --yyerrflag; 351264790Sbapt goto yyloop; 352264790Sbapt } 353264790Sbapt if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && 354264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 355264790Sbapt { 356264790Sbapt yyn = yytable[yyn]; 357264790Sbapt goto yyreduce; 358264790Sbapt } 359264790Sbapt if (yyerrflag) goto yyinrecovery; 360264790Sbapt 361264790Sbapt YYERROR_CALL("syntax error"); 362264790Sbapt 363264790Sbapt goto yyerrlab; 364264790Sbapt 365264790Sbaptyyerrlab: 366264790Sbapt ++yynerrs; 367264790Sbapt 368264790Sbaptyyinrecovery: 369264790Sbapt if (yyerrflag < 3) 370264790Sbapt { 371264790Sbapt yyerrflag = 3; 372264790Sbapt for (;;) 373264790Sbapt { 374264790Sbapt if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && 375264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) 376264790Sbapt { 377264790Sbapt#if YYDEBUG 378264790Sbapt if (yydebug) 379264790Sbapt printf("%sdebug: state %d, error recovery shifting\ 380264790Sbapt to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); 381264790Sbapt#endif 382264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 383264790Sbapt { 384264790Sbapt goto yyoverflow; 385264790Sbapt } 386264790Sbapt yystate = yytable[yyn]; 387264790Sbapt *++yystack.s_mark = yytable[yyn]; 388264790Sbapt *++yystack.l_mark = yylval; 389264790Sbapt goto yyloop; 390264790Sbapt } 391264790Sbapt else 392264790Sbapt { 393264790Sbapt#if YYDEBUG 394264790Sbapt if (yydebug) 395264790Sbapt printf("%sdebug: error recovery discarding state %d\n", 396264790Sbapt YYPREFIX, *yystack.s_mark); 397264790Sbapt#endif 398264790Sbapt if (yystack.s_mark <= yystack.s_base) goto yyabort; 399264790Sbapt --yystack.s_mark; 400264790Sbapt --yystack.l_mark; 401264790Sbapt } 402264790Sbapt } 403264790Sbapt } 404264790Sbapt else 405264790Sbapt { 406264790Sbapt if (yychar == YYEOF) goto yyabort; 407264790Sbapt#if YYDEBUG 408264790Sbapt if (yydebug) 409264790Sbapt { 410264790Sbapt yys = yyname[YYTRANSLATE(yychar)]; 411264790Sbapt printf("%sdebug: state %d, error recovery discards token %d (%s)\n", 412264790Sbapt YYPREFIX, yystate, yychar, yys); 413264790Sbapt } 414264790Sbapt#endif 415264790Sbapt yychar = YYEMPTY; 416264790Sbapt goto yyloop; 417264790Sbapt } 418264790Sbapt 419264790Sbaptyyreduce: 420264790Sbapt#if YYDEBUG 421264790Sbapt if (yydebug) 422264790Sbapt printf("%sdebug: state %d, reducing by rule %d (%s)\n", 423264790Sbapt YYPREFIX, yystate, yyn, yyrule[yyn]); 424264790Sbapt#endif 425264790Sbapt yym = yylen[yyn]; 426264790Sbapt if (yym) 427264790Sbapt yyval = yystack.l_mark[1-yym]; 428264790Sbapt else 429264790Sbapt memset(&yyval, 0, sizeof yyval); 430264790Sbapt switch (yyn) 431264790Sbapt { 432264790Sbapt } 433264790Sbapt yystack.s_mark -= yym; 434264790Sbapt yystate = *yystack.s_mark; 435264790Sbapt yystack.l_mark -= yym; 436264790Sbapt yym = yylhs[yyn]; 437264790Sbapt if (yystate == 0 && yym == 0) 438264790Sbapt { 439264790Sbapt#if YYDEBUG 440264790Sbapt if (yydebug) 441264790Sbapt printf("%sdebug: after reduction, shifting from state 0 to\ 442264790Sbapt state %d\n", YYPREFIX, YYFINAL); 443264790Sbapt#endif 444264790Sbapt yystate = YYFINAL; 445264790Sbapt *++yystack.s_mark = YYFINAL; 446264790Sbapt *++yystack.l_mark = yyval; 447264790Sbapt if (yychar < 0) 448264790Sbapt { 449264790Sbapt if ((yychar = YYLEX) < 0) yychar = YYEOF; 450264790Sbapt#if YYDEBUG 451264790Sbapt if (yydebug) 452264790Sbapt { 453264790Sbapt yys = yyname[YYTRANSLATE(yychar)]; 454264790Sbapt printf("%sdebug: state %d, reading %d (%s)\n", 455264790Sbapt YYPREFIX, YYFINAL, yychar, yys); 456264790Sbapt } 457264790Sbapt#endif 458264790Sbapt } 459264790Sbapt if (yychar == YYEOF) goto yyaccept; 460264790Sbapt goto yyloop; 461264790Sbapt } 462264790Sbapt if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && 463264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == yystate) 464264790Sbapt yystate = yytable[yyn]; 465264790Sbapt else 466264790Sbapt yystate = yydgoto[yym]; 467264790Sbapt#if YYDEBUG 468264790Sbapt if (yydebug) 469264790Sbapt printf("%sdebug: after reduction, shifting from state %d \ 470264790Sbaptto state %d\n", YYPREFIX, *yystack.s_mark, yystate); 471264790Sbapt#endif 472264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 473264790Sbapt { 474264790Sbapt goto yyoverflow; 475264790Sbapt } 476264790Sbapt *++yystack.s_mark = (YYINT) yystate; 477264790Sbapt *++yystack.l_mark = yyval; 478264790Sbapt goto yyloop; 479264790Sbapt 480264790Sbaptyyoverflow: 481264790Sbapt YYERROR_CALL("yacc stack overflow"); 482264790Sbapt 483264790Sbaptyyabort: 484264790Sbapt yyfreestack(&yystack); 485264790Sbapt return (1); 486264790Sbapt 487264790Sbaptyyaccept: 488264790Sbapt yyfreestack(&yystack); 489264790Sbapt return (0); 490264790Sbapt} 491