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 "error.y" 101264790Sbaptint yylex(void); 102264790Sbaptstatic void yyerror(const char *); 103264790Sbapt#line 104 "error.tab.c" 104264790Sbapt 105264790Sbapt#if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED) 106264790Sbapt/* Default: YYSTYPE is the semantic value type. */ 107264790Sbapttypedef int YYSTYPE; 108264790Sbapt# define YYSTYPE_IS_DECLARED 1 109264790Sbapt#endif 110264790Sbapt 111264790Sbapt/* compatibility with bison */ 112264790Sbapt#ifdef YYPARSE_PARAM 113264790Sbapt/* compatibility with FreeBSD */ 114264790Sbapt# ifdef YYPARSE_PARAM_TYPE 115264790Sbapt# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) 116264790Sbapt# else 117264790Sbapt# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) 118264790Sbapt# endif 119264790Sbapt#else 120264790Sbapt# define YYPARSE_DECL() yyparse(void) 121264790Sbapt#endif 122264790Sbapt 123264790Sbapt/* Parameters sent to lex. */ 124264790Sbapt#ifdef YYLEX_PARAM 125264790Sbapt# define YYLEX_DECL() yylex(void *YYLEX_PARAM) 126264790Sbapt# define YYLEX yylex(YYLEX_PARAM) 127264790Sbapt#else 128264790Sbapt# define YYLEX_DECL() yylex(void) 129264790Sbapt# define YYLEX yylex() 130264790Sbapt#endif 131264790Sbapt 132264790Sbapt/* Parameters sent to yyerror. */ 133264790Sbapt#ifndef YYERROR_DECL 134264790Sbapt#define YYERROR_DECL() yyerror(const char *s) 135264790Sbapt#endif 136264790Sbapt#ifndef YYERROR_CALL 137264790Sbapt#define YYERROR_CALL(msg) yyerror(msg) 138264790Sbapt#endif 139264790Sbapt 140264790Sbaptextern int YYPARSE_DECL(); 141264790Sbapt 142264790Sbapt#define YYERRCODE 256 143277086Sjkimtypedef int YYINT; 144264790Sbaptstatic const YYINT error_lhs[] = { -1, 145264790Sbapt 0, 146264790Sbapt}; 147264790Sbaptstatic const YYINT error_len[] = { 2, 148264790Sbapt 1, 149264790Sbapt}; 150264790Sbaptstatic const YYINT error_defred[] = { 0, 151264790Sbapt 1, 0, 152264790Sbapt}; 153264790Sbaptstatic const YYINT error_dgoto[] = { 2, 154264790Sbapt}; 155264790Sbaptstatic const YYINT error_sindex[] = { -256, 156264790Sbapt 0, 0, 157264790Sbapt}; 158264790Sbaptstatic const YYINT error_rindex[] = { 0, 159264790Sbapt 0, 0, 160264790Sbapt}; 161264790Sbaptstatic const YYINT error_gindex[] = { 0, 162264790Sbapt}; 163264790Sbapt#define YYTABLESIZE 0 164264790Sbaptstatic const YYINT error_table[] = { 1, 165264790Sbapt}; 166264790Sbaptstatic const YYINT error_check[] = { 256, 167264790Sbapt}; 168264790Sbapt#define YYFINAL 2 169264790Sbapt#ifndef YYDEBUG 170264790Sbapt#define YYDEBUG 0 171264790Sbapt#endif 172264790Sbapt#define YYMAXTOKEN 256 173264790Sbapt#define YYUNDFTOKEN 259 174264790Sbapt#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) 175264790Sbapt#if YYDEBUG 176264790Sbaptstatic const char *const error_name[] = { 177264790Sbapt 178264790Sbapt"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 179264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 180264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 181264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 182264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 183264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 184264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"illegal-symbol", 185264790Sbapt}; 186264790Sbaptstatic const char *const error_rule[] = { 187264790Sbapt"$accept : S", 188264790Sbapt"S : error", 189264790Sbapt 190264790Sbapt}; 191264790Sbapt#endif 192264790Sbapt 193264790Sbaptint yydebug; 194264790Sbaptint yynerrs; 195264790Sbapt 196264790Sbaptint yyerrflag; 197264790Sbaptint yychar; 198264790SbaptYYSTYPE yyval; 199264790SbaptYYSTYPE yylval; 200264790Sbapt 201264790Sbapt/* define the initial stack-sizes */ 202264790Sbapt#ifdef YYSTACKSIZE 203264790Sbapt#undef YYMAXDEPTH 204264790Sbapt#define YYMAXDEPTH YYSTACKSIZE 205264790Sbapt#else 206264790Sbapt#ifdef YYMAXDEPTH 207264790Sbapt#define YYSTACKSIZE YYMAXDEPTH 208264790Sbapt#else 209264790Sbapt#define YYSTACKSIZE 10000 210264790Sbapt#define YYMAXDEPTH 10000 211264790Sbapt#endif 212264790Sbapt#endif 213264790Sbapt 214264790Sbapt#define YYINITSTACKSIZE 200 215264790Sbapt 216264790Sbapttypedef struct { 217264790Sbapt unsigned stacksize; 218264790Sbapt YYINT *s_base; 219264790Sbapt YYINT *s_mark; 220264790Sbapt YYINT *s_last; 221264790Sbapt YYSTYPE *l_base; 222264790Sbapt YYSTYPE *l_mark; 223264790Sbapt} YYSTACKDATA; 224264790Sbapt/* variables for the parser stack */ 225264790Sbaptstatic YYSTACKDATA yystack; 226264790Sbapt#line 8 "error.y" 227264790Sbapt 228264790Sbapt#include <stdio.h> 229264790Sbapt 230264790Sbaptint 231264790Sbaptmain(void) 232264790Sbapt{ 233264790Sbapt printf("yyparse() = %d\n", yyparse()); 234264790Sbapt return 0; 235264790Sbapt} 236264790Sbapt 237264790Sbaptint 238264790Sbaptyylex(void) 239264790Sbapt{ 240264790Sbapt return -1; 241264790Sbapt} 242264790Sbapt 243264790Sbaptstatic void 244264790Sbaptyyerror(const char* s) 245264790Sbapt{ 246264790Sbapt printf("%s\n", s); 247264790Sbapt} 248264790Sbapt#line 249 "error.tab.c" 249264790Sbapt 250264790Sbapt#if YYDEBUG 251264790Sbapt#include <stdio.h> /* needed for printf */ 252264790Sbapt#endif 253264790Sbapt 254264790Sbapt#include <stdlib.h> /* needed for malloc, etc */ 255264790Sbapt#include <string.h> /* needed for memset */ 256264790Sbapt 257264790Sbapt/* allocate initial stack or double stack size, up to YYMAXDEPTH */ 258264790Sbaptstatic int yygrowstack(YYSTACKDATA *data) 259264790Sbapt{ 260264790Sbapt int i; 261264790Sbapt unsigned newsize; 262264790Sbapt YYINT *newss; 263264790Sbapt YYSTYPE *newvs; 264264790Sbapt 265264790Sbapt if ((newsize = data->stacksize) == 0) 266264790Sbapt newsize = YYINITSTACKSIZE; 267264790Sbapt else if (newsize >= YYMAXDEPTH) 268264790Sbapt return YYENOMEM; 269264790Sbapt else if ((newsize *= 2) > YYMAXDEPTH) 270264790Sbapt newsize = YYMAXDEPTH; 271264790Sbapt 272264790Sbapt i = (int) (data->s_mark - data->s_base); 273264790Sbapt newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); 274264790Sbapt if (newss == 0) 275264790Sbapt return YYENOMEM; 276264790Sbapt 277264790Sbapt data->s_base = newss; 278264790Sbapt data->s_mark = newss + i; 279264790Sbapt 280264790Sbapt newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); 281264790Sbapt if (newvs == 0) 282264790Sbapt return YYENOMEM; 283264790Sbapt 284264790Sbapt data->l_base = newvs; 285264790Sbapt data->l_mark = newvs + i; 286264790Sbapt 287264790Sbapt data->stacksize = newsize; 288264790Sbapt data->s_last = data->s_base + newsize - 1; 289264790Sbapt return 0; 290264790Sbapt} 291264790Sbapt 292264790Sbapt#if YYPURE || defined(YY_NO_LEAKS) 293264790Sbaptstatic void yyfreestack(YYSTACKDATA *data) 294264790Sbapt{ 295264790Sbapt free(data->s_base); 296264790Sbapt free(data->l_base); 297264790Sbapt memset(data, 0, sizeof(*data)); 298264790Sbapt} 299264790Sbapt#else 300264790Sbapt#define yyfreestack(data) /* nothing */ 301264790Sbapt#endif 302264790Sbapt 303264790Sbapt#define YYABORT goto yyabort 304264790Sbapt#define YYREJECT goto yyabort 305264790Sbapt#define YYACCEPT goto yyaccept 306264790Sbapt#define YYERROR goto yyerrlab 307264790Sbapt 308264790Sbaptint 309264790SbaptYYPARSE_DECL() 310264790Sbapt{ 311264790Sbapt int yym, yyn, yystate; 312264790Sbapt#if YYDEBUG 313264790Sbapt const char *yys; 314264790Sbapt 315264790Sbapt if ((yys = getenv("YYDEBUG")) != 0) 316264790Sbapt { 317264790Sbapt yyn = *yys; 318264790Sbapt if (yyn >= '0' && yyn <= '9') 319264790Sbapt yydebug = yyn - '0'; 320264790Sbapt } 321264790Sbapt#endif 322264790Sbapt 323264790Sbapt yynerrs = 0; 324264790Sbapt yyerrflag = 0; 325264790Sbapt yychar = YYEMPTY; 326264790Sbapt yystate = 0; 327264790Sbapt 328264790Sbapt#if YYPURE 329264790Sbapt memset(&yystack, 0, sizeof(yystack)); 330264790Sbapt#endif 331264790Sbapt 332264790Sbapt if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 333264790Sbapt yystack.s_mark = yystack.s_base; 334264790Sbapt yystack.l_mark = yystack.l_base; 335264790Sbapt yystate = 0; 336264790Sbapt *yystack.s_mark = 0; 337264790Sbapt 338264790Sbaptyyloop: 339264790Sbapt if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 340264790Sbapt if (yychar < 0) 341264790Sbapt { 342264790Sbapt if ((yychar = YYLEX) < 0) yychar = YYEOF; 343264790Sbapt#if YYDEBUG 344264790Sbapt if (yydebug) 345264790Sbapt { 346264790Sbapt yys = yyname[YYTRANSLATE(yychar)]; 347264790Sbapt printf("%sdebug: state %d, reading %d (%s)\n", 348264790Sbapt YYPREFIX, yystate, yychar, yys); 349264790Sbapt } 350264790Sbapt#endif 351264790Sbapt } 352264790Sbapt if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && 353264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 354264790Sbapt { 355264790Sbapt#if YYDEBUG 356264790Sbapt if (yydebug) 357264790Sbapt printf("%sdebug: state %d, shifting to state %d\n", 358264790Sbapt YYPREFIX, yystate, yytable[yyn]); 359264790Sbapt#endif 360264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 361264790Sbapt { 362264790Sbapt goto yyoverflow; 363264790Sbapt } 364264790Sbapt yystate = yytable[yyn]; 365264790Sbapt *++yystack.s_mark = yytable[yyn]; 366264790Sbapt *++yystack.l_mark = yylval; 367264790Sbapt yychar = YYEMPTY; 368264790Sbapt if (yyerrflag > 0) --yyerrflag; 369264790Sbapt goto yyloop; 370264790Sbapt } 371264790Sbapt if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && 372264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 373264790Sbapt { 374264790Sbapt yyn = yytable[yyn]; 375264790Sbapt goto yyreduce; 376264790Sbapt } 377264790Sbapt if (yyerrflag) goto yyinrecovery; 378264790Sbapt 379264790Sbapt YYERROR_CALL("syntax error"); 380264790Sbapt 381264790Sbapt goto yyerrlab; 382264790Sbapt 383264790Sbaptyyerrlab: 384264790Sbapt ++yynerrs; 385264790Sbapt 386264790Sbaptyyinrecovery: 387264790Sbapt if (yyerrflag < 3) 388264790Sbapt { 389264790Sbapt yyerrflag = 3; 390264790Sbapt for (;;) 391264790Sbapt { 392264790Sbapt if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && 393264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) 394264790Sbapt { 395264790Sbapt#if YYDEBUG 396264790Sbapt if (yydebug) 397264790Sbapt printf("%sdebug: state %d, error recovery shifting\ 398264790Sbapt to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); 399264790Sbapt#endif 400264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 401264790Sbapt { 402264790Sbapt goto yyoverflow; 403264790Sbapt } 404264790Sbapt yystate = yytable[yyn]; 405264790Sbapt *++yystack.s_mark = yytable[yyn]; 406264790Sbapt *++yystack.l_mark = yylval; 407264790Sbapt goto yyloop; 408264790Sbapt } 409264790Sbapt else 410264790Sbapt { 411264790Sbapt#if YYDEBUG 412264790Sbapt if (yydebug) 413264790Sbapt printf("%sdebug: error recovery discarding state %d\n", 414264790Sbapt YYPREFIX, *yystack.s_mark); 415264790Sbapt#endif 416264790Sbapt if (yystack.s_mark <= yystack.s_base) goto yyabort; 417264790Sbapt --yystack.s_mark; 418264790Sbapt --yystack.l_mark; 419264790Sbapt } 420264790Sbapt } 421264790Sbapt } 422264790Sbapt else 423264790Sbapt { 424264790Sbapt if (yychar == YYEOF) goto yyabort; 425264790Sbapt#if YYDEBUG 426264790Sbapt if (yydebug) 427264790Sbapt { 428264790Sbapt yys = yyname[YYTRANSLATE(yychar)]; 429264790Sbapt printf("%sdebug: state %d, error recovery discards token %d (%s)\n", 430264790Sbapt YYPREFIX, yystate, yychar, yys); 431264790Sbapt } 432264790Sbapt#endif 433264790Sbapt yychar = YYEMPTY; 434264790Sbapt goto yyloop; 435264790Sbapt } 436264790Sbapt 437264790Sbaptyyreduce: 438264790Sbapt#if YYDEBUG 439264790Sbapt if (yydebug) 440264790Sbapt printf("%sdebug: state %d, reducing by rule %d (%s)\n", 441264790Sbapt YYPREFIX, yystate, yyn, yyrule[yyn]); 442264790Sbapt#endif 443264790Sbapt yym = yylen[yyn]; 444264790Sbapt if (yym) 445264790Sbapt yyval = yystack.l_mark[1-yym]; 446264790Sbapt else 447264790Sbapt memset(&yyval, 0, sizeof yyval); 448264790Sbapt switch (yyn) 449264790Sbapt { 450264790Sbapt } 451264790Sbapt yystack.s_mark -= yym; 452264790Sbapt yystate = *yystack.s_mark; 453264790Sbapt yystack.l_mark -= yym; 454264790Sbapt yym = yylhs[yyn]; 455264790Sbapt if (yystate == 0 && yym == 0) 456264790Sbapt { 457264790Sbapt#if YYDEBUG 458264790Sbapt if (yydebug) 459264790Sbapt printf("%sdebug: after reduction, shifting from state 0 to\ 460264790Sbapt state %d\n", YYPREFIX, YYFINAL); 461264790Sbapt#endif 462264790Sbapt yystate = YYFINAL; 463264790Sbapt *++yystack.s_mark = YYFINAL; 464264790Sbapt *++yystack.l_mark = yyval; 465264790Sbapt if (yychar < 0) 466264790Sbapt { 467264790Sbapt if ((yychar = YYLEX) < 0) yychar = YYEOF; 468264790Sbapt#if YYDEBUG 469264790Sbapt if (yydebug) 470264790Sbapt { 471264790Sbapt yys = yyname[YYTRANSLATE(yychar)]; 472264790Sbapt printf("%sdebug: state %d, reading %d (%s)\n", 473264790Sbapt YYPREFIX, YYFINAL, yychar, yys); 474264790Sbapt } 475264790Sbapt#endif 476264790Sbapt } 477264790Sbapt if (yychar == YYEOF) goto yyaccept; 478264790Sbapt goto yyloop; 479264790Sbapt } 480264790Sbapt if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && 481264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == yystate) 482264790Sbapt yystate = yytable[yyn]; 483264790Sbapt else 484264790Sbapt yystate = yydgoto[yym]; 485264790Sbapt#if YYDEBUG 486264790Sbapt if (yydebug) 487264790Sbapt printf("%sdebug: after reduction, shifting from state %d \ 488264790Sbaptto state %d\n", YYPREFIX, *yystack.s_mark, yystate); 489264790Sbapt#endif 490264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 491264790Sbapt { 492264790Sbapt goto yyoverflow; 493264790Sbapt } 494264790Sbapt *++yystack.s_mark = (YYINT) yystate; 495264790Sbapt *++yystack.l_mark = yyval; 496264790Sbapt goto yyloop; 497264790Sbapt 498264790Sbaptyyoverflow: 499264790Sbapt YYERROR_CALL("yacc stack overflow"); 500264790Sbapt 501264790Sbaptyyabort: 502264790Sbapt yyfreestack(&yystack); 503264790Sbapt return (1); 504264790Sbapt 505264790Sbaptyyaccept: 506264790Sbapt yyfreestack(&yystack); 507264790Sbapt return (0); 508264790Sbapt} 509