1272651Sbapt/* original parser id follows */ 2272651Sbapt/* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ 3319297Sdelphij/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ 4272651Sbapt 5272651Sbapt#define YYBYACC 1 6272651Sbapt#define YYMAJOR 1 7272651Sbapt#define YYMINOR 9 8272651Sbapt#define YYCHECK "yyyymmdd" 9272651Sbapt 10272651Sbapt#define YYEMPTY (-1) 11272651Sbapt#define yyclearin (yychar = YYEMPTY) 12272651Sbapt#define yyerrok (yyerrflag = 0) 13272651Sbapt#define YYRECOVERING() (yyerrflag != 0) 14272651Sbapt#define YYENOMEM (-2) 15272651Sbapt#define YYEOF 0 16272651Sbapt#undef YYBTYACC 17272651Sbapt#define YYBTYACC 1 18272651Sbapt#define YYDEBUGSTR (yytrial ? YYPREFIX "debug(trial)" : YYPREFIX "debug") 19272651Sbapt 20272651Sbapt#ifndef yyparse 21272651Sbapt#define yyparse destroy3_parse 22272651Sbapt#endif /* yyparse */ 23272651Sbapt 24272651Sbapt#ifndef yylex 25272651Sbapt#define yylex destroy3_lex 26272651Sbapt#endif /* yylex */ 27272651Sbapt 28272651Sbapt#ifndef yyerror 29272651Sbapt#define yyerror destroy3_error 30272651Sbapt#endif /* yyerror */ 31272651Sbapt 32272651Sbapt#ifndef yychar 33272651Sbapt#define yychar destroy3_char 34272651Sbapt#endif /* yychar */ 35272651Sbapt 36272651Sbapt#ifndef yyval 37272651Sbapt#define yyval destroy3_val 38272651Sbapt#endif /* yyval */ 39272651Sbapt 40272651Sbapt#ifndef yylval 41272651Sbapt#define yylval destroy3_lval 42272651Sbapt#endif /* yylval */ 43272651Sbapt 44272651Sbapt#ifndef yydebug 45272651Sbapt#define yydebug destroy3_debug 46272651Sbapt#endif /* yydebug */ 47272651Sbapt 48272651Sbapt#ifndef yynerrs 49272651Sbapt#define yynerrs destroy3_nerrs 50272651Sbapt#endif /* yynerrs */ 51272651Sbapt 52272651Sbapt#ifndef yyerrflag 53272651Sbapt#define yyerrflag destroy3_errflag 54272651Sbapt#endif /* yyerrflag */ 55272651Sbapt 56272651Sbapt#ifndef yylhs 57272651Sbapt#define yylhs destroy3_lhs 58272651Sbapt#endif /* yylhs */ 59272651Sbapt 60272651Sbapt#ifndef yylen 61272651Sbapt#define yylen destroy3_len 62272651Sbapt#endif /* yylen */ 63272651Sbapt 64272651Sbapt#ifndef yydefred 65272651Sbapt#define yydefred destroy3_defred 66272651Sbapt#endif /* yydefred */ 67272651Sbapt 68272651Sbapt#ifndef yystos 69272651Sbapt#define yystos destroy3_stos 70272651Sbapt#endif /* yystos */ 71272651Sbapt 72272651Sbapt#ifndef yydgoto 73272651Sbapt#define yydgoto destroy3_dgoto 74272651Sbapt#endif /* yydgoto */ 75272651Sbapt 76272651Sbapt#ifndef yysindex 77272651Sbapt#define yysindex destroy3_sindex 78272651Sbapt#endif /* yysindex */ 79272651Sbapt 80272651Sbapt#ifndef yyrindex 81272651Sbapt#define yyrindex destroy3_rindex 82272651Sbapt#endif /* yyrindex */ 83272651Sbapt 84272651Sbapt#ifndef yygindex 85272651Sbapt#define yygindex destroy3_gindex 86272651Sbapt#endif /* yygindex */ 87272651Sbapt 88272651Sbapt#ifndef yytable 89272651Sbapt#define yytable destroy3_table 90272651Sbapt#endif /* yytable */ 91272651Sbapt 92272651Sbapt#ifndef yycheck 93272651Sbapt#define yycheck destroy3_check 94272651Sbapt#endif /* yycheck */ 95272651Sbapt 96272651Sbapt#ifndef yyname 97272651Sbapt#define yyname destroy3_name 98272651Sbapt#endif /* yyname */ 99272651Sbapt 100272651Sbapt#ifndef yyrule 101272651Sbapt#define yyrule destroy3_rule 102272651Sbapt#endif /* yyrule */ 103272651Sbapt 104272651Sbapt#if YYBTYACC 105272651Sbapt 106272651Sbapt#ifndef yycindex 107272651Sbapt#define yycindex destroy3_cindex 108272651Sbapt#endif /* yycindex */ 109272651Sbapt 110272651Sbapt#ifndef yyctable 111272651Sbapt#define yyctable destroy3_ctable 112272651Sbapt#endif /* yyctable */ 113272651Sbapt 114272651Sbapt#endif /* YYBTYACC */ 115272651Sbapt 116272651Sbapt#define YYPREFIX "destroy3_" 117272651Sbapt 118272651Sbapt#define YYPURE 0 119272651Sbapt 120272651Sbapt#line 7 "btyacc_destroy3.y" 121272651Sbapt#include <stdlib.h> 122272651Sbapt 123272651Sbapttypedef enum {cGLOBAL, cLOCAL} class; 124272651Sbapttypedef enum {tREAL, tINTEGER} type; 125272651Sbapttypedef char * name; 126272651Sbapt 127272651Sbaptstruct symbol { class c; type t; name id; }; 128272651Sbapttypedef struct symbol symbol; 129272651Sbapt 130272651Sbaptstruct namelist { symbol *s; struct namelist *next; }; 131272651Sbapttypedef struct namelist namelist; 132272651Sbapt 133272651Sbaptstruct parser_param { 134272651Sbapt int *rtrn; 135272651Sbapt symbol ss; 136272651Sbapt}; 137272651Sbapt 138272651Sbaptextern symbol *mksymbol(type t, class c, name id); 139272651Sbapt 140272651Sbapt#ifdef YYBISON 141272651Sbapt#define YYLEX_DECL() yylex(void) 142272651Sbapt#define YYERROR_DECL() yyerror(const char *s) 143272651Sbapt#endif 144272651Sbapt#ifdef YYSTYPE 145272651Sbapt#undef YYSTYPE_IS_DECLARED 146272651Sbapt#define YYSTYPE_IS_DECLARED 1 147272651Sbapt#endif 148272651Sbapt#ifndef YYSTYPE_IS_DECLARED 149272651Sbapt#define YYSTYPE_IS_DECLARED 1 150319297Sdelphij#line 53 "btyacc_destroy3.y" 151272651Sbapttypedef union 152272651Sbapt{ 153272651Sbapt class cval; 154272651Sbapt type tval; 155272651Sbapt namelist * nlist; 156272651Sbapt name id; 157272651Sbapt} YYSTYPE; 158272651Sbapt#endif /* !YYSTYPE_IS_DECLARED */ 159272651Sbapt#line 160 "btyacc_destroy3.tab.c" 160272651Sbapt 161272651Sbapt/* compatibility with bison */ 162272651Sbapt#ifdef YYPARSE_PARAM 163272651Sbapt/* compatibility with FreeBSD */ 164272651Sbapt# ifdef YYPARSE_PARAM_TYPE 165272651Sbapt# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) 166272651Sbapt# else 167272651Sbapt# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) 168272651Sbapt# endif 169272651Sbapt#else 170272651Sbapt# define YYPARSE_DECL() yyparse(struct parser_param *param, int flag) 171272651Sbapt#endif 172272651Sbapt 173272651Sbapt/* Parameters sent to lex. */ 174272651Sbapt#ifdef YYLEX_PARAM 175272651Sbapt# define YYLEX_DECL() yylex(void *YYLEX_PARAM) 176272651Sbapt# define YYLEX yylex(YYLEX_PARAM) 177272651Sbapt#else 178272651Sbapt# define YYLEX_DECL() yylex(void) 179272651Sbapt# define YYLEX yylex() 180272651Sbapt#endif 181272651Sbapt 182272651Sbapt/* Parameters sent to yyerror. */ 183272651Sbapt#ifndef YYERROR_DECL 184272651Sbapt#define YYERROR_DECL() yyerror(struct parser_param *param, int flag, const char *s) 185272651Sbapt#endif 186272651Sbapt#ifndef YYERROR_CALL 187272651Sbapt#define YYERROR_CALL(msg) yyerror(param, flag, msg) 188272651Sbapt#endif 189272651Sbapt 190272651Sbapt#ifndef YYDESTRUCT_DECL 191272651Sbapt#define YYDESTRUCT_DECL() yydestruct(const char *msg, int psymb, YYSTYPE *val, struct parser_param *param, int flag) 192272651Sbapt#endif 193272651Sbapt#ifndef YYDESTRUCT_CALL 194272651Sbapt#define YYDESTRUCT_CALL(msg, psymb, val) yydestruct(msg, psymb, val, param, flag) 195272651Sbapt#endif 196272651Sbapt 197272651Sbaptextern int YYPARSE_DECL(); 198272651Sbapt 199272651Sbapt#define GLOBAL 257 200272651Sbapt#define LOCAL 258 201272651Sbapt#define REAL 259 202272651Sbapt#define INTEGER 260 203272651Sbapt#define NAME 261 204272651Sbapt#define YYERRCODE 256 205272651Sbapttypedef short YYINT; 206272651Sbaptstatic const YYINT destroy3_lhs[] = { -1, 207272651Sbapt 0, 0, 2, 2, 3, 3, 4, 4, 1, 208272651Sbapt}; 209272651Sbaptstatic const YYINT destroy3_len[] = { 2, 210272651Sbapt 8, 5, 1, 1, 1, 1, 2, 1, 6, 211272651Sbapt}; 212272651Sbaptstatic const YYINT destroy3_defred[] = { 0, 213272651Sbapt 3, 4, 5, 6, 0, 0, 0, 0, 8, 0, 214272651Sbapt 0, 0, 0, 7, 0, 0, 0, 0, 0, 2, 215272651Sbapt 0, 0, 0, 0, 9, 1, 216272651Sbapt}; 217319297Sdelphij#if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING) 218272651Sbaptstatic const YYINT destroy3_stos[] = { 0, 219272651Sbapt 257, 258, 259, 260, 263, 265, 266, 266, 261, 264, 220272651Sbapt 267, 267, 40, 261, 40, 40, 265, 258, 265, 41, 221272651Sbapt 44, 44, 266, 266, 41, 41, 222272651Sbapt}; 223319297Sdelphij#endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */ 224272651Sbaptstatic const YYINT destroy3_dgoto[] = { 5, 225272651Sbapt 10, 6, 7, 11, 226272651Sbapt}; 227272651Sbaptstatic const YYINT destroy3_sindex[] = { -254, 228272651Sbapt 0, 0, 0, 0, 0, -251, -248, -248, 0, -26, 229272651Sbapt -40, -39, -246, 0, -243, -246, -25, -24, -23, 0, 230272651Sbapt -251, -251, -22, -19, 0, 0, 231272651Sbapt}; 232272651Sbaptstatic const YYINT destroy3_rindex[] = { 0, 233272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 234272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235272651Sbapt 0, 0, 0, 0, 0, 0, 236272651Sbapt}; 237272651Sbapt#if YYBTYACC 238272651Sbaptstatic const YYINT destroy3_cindex[] = { 0, 239272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 241272651Sbapt 0, 0, 0, 0, 0, 0, 242272651Sbapt}; 243272651Sbapt#endif 244272651Sbaptstatic const YYINT destroy3_gindex[] = { 0, 245272651Sbapt 0, -6, -4, 15, 246272651Sbapt}; 247272651Sbapt#define YYTABLESIZE 222 248272651Sbaptstatic const YYINT destroy3_table[] = { 15, 249272651Sbapt 16, 8, 1, 2, 3, 4, 17, 3, 4, 19, 250272651Sbapt 1, 2, 9, 13, 18, 20, 23, 24, 25, 21, 251272651Sbapt 22, 26, 12, 0, 0, 0, 0, 0, 0, 0, 252272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 257272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 258272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 259272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 260272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 261272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 263272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 264272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 265272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 266272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 267272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 268272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 269272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 270272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 271272651Sbapt 14, 14, 272272651Sbapt}; 273272651Sbaptstatic const YYINT destroy3_check[] = { 40, 274272651Sbapt 40, 6, 257, 258, 259, 260, 13, 259, 260, 16, 275272651Sbapt 257, 258, 261, 40, 258, 41, 21, 22, 41, 44, 276272651Sbapt 44, 41, 8, -1, -1, -1, -1, -1, -1, -1, 277272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 278272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 280272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 282272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 283272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 284272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 285272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 286272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 287272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 288272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 290272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 291272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 292272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 295272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 296272651Sbapt 261, 261, 297272651Sbapt}; 298272651Sbapt#if YYBTYACC 299272651Sbaptstatic const YYINT destroy3_ctable[] = { -1, 300272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 301272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 302272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 303272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 304272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 306272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 307272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 308272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 310272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 311272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 314272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 315272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 316272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 318272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 319272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 321272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 322272651Sbapt -1, 323272651Sbapt}; 324272651Sbapt#endif 325272651Sbapt#define YYFINAL 5 326272651Sbapt#ifndef YYDEBUG 327272651Sbapt#define YYDEBUG 0 328272651Sbapt#endif 329272651Sbapt#define YYMAXTOKEN 261 330272651Sbapt#define YYUNDFTOKEN 268 331272651Sbapt#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) 332272651Sbapt#if YYDEBUG 333272651Sbaptstatic const char *const destroy3_name[] = { 334272651Sbapt 335272651Sbapt"$end",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, 336272651Sbapt0,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, 337272651Sbapt0,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, 338272651Sbapt0,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, 339272651Sbapt0,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, 340272651Sbapt0,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, 341272651Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"error","GLOBAL","LOCAL", 342272651Sbapt"REAL","INTEGER","NAME","$accept","declaration","locnamelist","class","type", 343272651Sbapt"namelist","illegal-symbol", 344272651Sbapt}; 345272651Sbaptstatic const char *const destroy3_rule[] = { 346272651Sbapt"$accept : declaration", 347272651Sbapt"declaration : class type namelist '(' class ',' type ')'", 348272651Sbapt"declaration : type locnamelist '(' class ')'", 349272651Sbapt"class : GLOBAL", 350272651Sbapt"class : LOCAL", 351272651Sbapt"type : REAL", 352272651Sbapt"type : INTEGER", 353272651Sbapt"namelist : namelist NAME", 354272651Sbapt"namelist : NAME", 355272651Sbapt"locnamelist : namelist '(' LOCAL ',' type ')'", 356272651Sbapt 357272651Sbapt}; 358272651Sbapt#endif 359272651Sbapt 360272651Sbaptint yydebug; 361272651Sbaptint yynerrs; 362272651Sbapt 363272651Sbaptint yyerrflag; 364272651Sbaptint yychar; 365272651SbaptYYSTYPE yyval; 366272651SbaptYYSTYPE yylval; 367272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 368272651SbaptYYLTYPE yyloc; /* position returned by actions */ 369272651SbaptYYLTYPE yylloc; /* position from the lexer */ 370272651Sbapt#endif 371272651Sbapt 372272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 373272651Sbapt#ifndef YYLLOC_DEFAULT 374272651Sbapt#define YYLLOC_DEFAULT(loc, rhs, n) \ 375272651Sbaptdo \ 376272651Sbapt{ \ 377272651Sbapt if (n == 0) \ 378272651Sbapt { \ 379272651Sbapt (loc).first_line = ((rhs)[-1]).last_line; \ 380272651Sbapt (loc).first_column = ((rhs)[-1]).last_column; \ 381272651Sbapt (loc).last_line = ((rhs)[-1]).last_line; \ 382272651Sbapt (loc).last_column = ((rhs)[-1]).last_column; \ 383272651Sbapt } \ 384272651Sbapt else \ 385272651Sbapt { \ 386272651Sbapt (loc).first_line = ((rhs)[ 0 ]).first_line; \ 387272651Sbapt (loc).first_column = ((rhs)[ 0 ]).first_column; \ 388272651Sbapt (loc).last_line = ((rhs)[n-1]).last_line; \ 389272651Sbapt (loc).last_column = ((rhs)[n-1]).last_column; \ 390272651Sbapt } \ 391272651Sbapt} while (0) 392272651Sbapt#endif /* YYLLOC_DEFAULT */ 393272651Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 394272651Sbapt#if YYBTYACC 395272651Sbapt 396272651Sbapt#ifndef YYLVQUEUEGROWTH 397272651Sbapt#define YYLVQUEUEGROWTH 32 398272651Sbapt#endif 399272651Sbapt#endif /* YYBTYACC */ 400272651Sbapt 401272651Sbapt/* define the initial stack-sizes */ 402272651Sbapt#ifdef YYSTACKSIZE 403272651Sbapt#undef YYMAXDEPTH 404272651Sbapt#define YYMAXDEPTH YYSTACKSIZE 405272651Sbapt#else 406272651Sbapt#ifdef YYMAXDEPTH 407272651Sbapt#define YYSTACKSIZE YYMAXDEPTH 408272651Sbapt#else 409272651Sbapt#define YYSTACKSIZE 10000 410272651Sbapt#define YYMAXDEPTH 10000 411272651Sbapt#endif 412272651Sbapt#endif 413272651Sbapt 414272651Sbapt#ifndef YYINITSTACKSIZE 415272651Sbapt#define YYINITSTACKSIZE 200 416272651Sbapt#endif 417272651Sbapt 418272651Sbapttypedef struct { 419272651Sbapt unsigned stacksize; 420319297Sdelphij YYINT *s_base; 421319297Sdelphij YYINT *s_mark; 422319297Sdelphij YYINT *s_last; 423272651Sbapt YYSTYPE *l_base; 424272651Sbapt YYSTYPE *l_mark; 425272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 426272651Sbapt YYLTYPE *p_base; 427272651Sbapt YYLTYPE *p_mark; 428272651Sbapt#endif 429272651Sbapt} YYSTACKDATA; 430272651Sbapt#if YYBTYACC 431272651Sbapt 432272651Sbaptstruct YYParseState_s 433272651Sbapt{ 434272651Sbapt struct YYParseState_s *save; /* Previously saved parser state */ 435272651Sbapt YYSTACKDATA yystack; /* saved parser stack */ 436272651Sbapt int state; /* saved parser state */ 437272651Sbapt int errflag; /* saved error recovery status */ 438272651Sbapt int lexeme; /* saved index of the conflict lexeme in the lexical queue */ 439272651Sbapt YYINT ctry; /* saved index in yyctable[] for this conflict */ 440272651Sbapt}; 441272651Sbapttypedef struct YYParseState_s YYParseState; 442272651Sbapt#endif /* YYBTYACC */ 443272651Sbapt/* variables for the parser stack */ 444272651Sbaptstatic YYSTACKDATA yystack; 445272651Sbapt#if YYBTYACC 446272651Sbapt 447272651Sbapt/* Current parser state */ 448272651Sbaptstatic YYParseState *yyps = 0; 449272651Sbapt 450272651Sbapt/* yypath != NULL: do the full parse, starting at *yypath parser state. */ 451272651Sbaptstatic YYParseState *yypath = 0; 452272651Sbapt 453272651Sbapt/* Base of the lexical value queue */ 454272651Sbaptstatic YYSTYPE *yylvals = 0; 455272651Sbapt 456272651Sbapt/* Current position at lexical value queue */ 457272651Sbaptstatic YYSTYPE *yylvp = 0; 458272651Sbapt 459272651Sbapt/* End position of lexical value queue */ 460272651Sbaptstatic YYSTYPE *yylve = 0; 461272651Sbapt 462272651Sbapt/* The last allocated position at the lexical value queue */ 463272651Sbaptstatic YYSTYPE *yylvlim = 0; 464272651Sbapt 465272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 466272651Sbapt/* Base of the lexical position queue */ 467272651Sbaptstatic YYLTYPE *yylpsns = 0; 468272651Sbapt 469272651Sbapt/* Current position at lexical position queue */ 470272651Sbaptstatic YYLTYPE *yylpp = 0; 471272651Sbapt 472272651Sbapt/* End position of lexical position queue */ 473272651Sbaptstatic YYLTYPE *yylpe = 0; 474272651Sbapt 475272651Sbapt/* The last allocated position at the lexical position queue */ 476272651Sbaptstatic YYLTYPE *yylplim = 0; 477272651Sbapt#endif 478272651Sbapt 479272651Sbapt/* Current position at lexical token queue */ 480319297Sdelphijstatic YYINT *yylexp = 0; 481272651Sbapt 482319297Sdelphijstatic YYINT *yylexemes = 0; 483272651Sbapt#endif /* YYBTYACC */ 484272651Sbapt#line 92 "btyacc_destroy3.y" 485272651Sbapt 486272651Sbaptextern int YYLEX_DECL(); 487272651Sbaptextern void YYERROR_DECL(); 488319297Sdelphij#line 489 "btyacc_destroy3.tab.c" 489272651Sbapt 490272651Sbapt/* Release memory associated with symbol. */ 491272651Sbapt#if ! defined YYDESTRUCT_IS_DECLARED 492272651Sbaptstatic void 493272651SbaptYYDESTRUCT_DECL() 494272651Sbapt{ 495272651Sbapt switch (psymb) 496272651Sbapt { 497272651Sbapt case 263: 498272651Sbapt#line 44 "btyacc_destroy3.y" 499272651Sbapt { 500272651Sbapt namelist *p = (*val).nlist; 501272651Sbapt while (p != NULL) 502272651Sbapt { namelist *pp = p; 503272651Sbapt p = p->next; 504272651Sbapt free(pp->s); free(pp); 505272651Sbapt } 506272651Sbapt } 507272651Sbapt break; 508319297Sdelphij#line 509 "btyacc_destroy3.tab.c" 509272651Sbapt } 510272651Sbapt} 511272651Sbapt#define YYDESTRUCT_IS_DECLARED 1 512272651Sbapt#endif 513272651Sbapt 514272651Sbapt/* For use in generated program */ 515272651Sbapt#define yydepth (int)(yystack.s_mark - yystack.s_base) 516272651Sbapt#if YYBTYACC 517272651Sbapt#define yytrial (yyps->save) 518272651Sbapt#endif /* YYBTYACC */ 519272651Sbapt 520272651Sbapt#if YYDEBUG 521319297Sdelphij#include <stdio.h> /* needed for printf */ 522272651Sbapt#endif 523272651Sbapt 524319297Sdelphij#include <stdlib.h> /* needed for malloc, etc */ 525319297Sdelphij#include <string.h> /* needed for memset */ 526272651Sbapt 527272651Sbapt/* allocate initial stack or double stack size, up to YYMAXDEPTH */ 528272651Sbaptstatic int yygrowstack(YYSTACKDATA *data) 529272651Sbapt{ 530272651Sbapt int i; 531272651Sbapt unsigned newsize; 532319297Sdelphij YYINT *newss; 533272651Sbapt YYSTYPE *newvs; 534272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 535272651Sbapt YYLTYPE *newps; 536272651Sbapt#endif 537272651Sbapt 538272651Sbapt if ((newsize = data->stacksize) == 0) 539272651Sbapt newsize = YYINITSTACKSIZE; 540272651Sbapt else if (newsize >= YYMAXDEPTH) 541272651Sbapt return YYENOMEM; 542272651Sbapt else if ((newsize *= 2) > YYMAXDEPTH) 543272651Sbapt newsize = YYMAXDEPTH; 544272651Sbapt 545272651Sbapt i = (int) (data->s_mark - data->s_base); 546319297Sdelphij newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); 547272651Sbapt if (newss == 0) 548272651Sbapt return YYENOMEM; 549272651Sbapt 550272651Sbapt data->s_base = newss; 551272651Sbapt data->s_mark = newss + i; 552272651Sbapt 553272651Sbapt newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); 554272651Sbapt if (newvs == 0) 555272651Sbapt return YYENOMEM; 556272651Sbapt 557272651Sbapt data->l_base = newvs; 558272651Sbapt data->l_mark = newvs + i; 559272651Sbapt 560272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 561272651Sbapt newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps)); 562272651Sbapt if (newps == 0) 563272651Sbapt return YYENOMEM; 564272651Sbapt 565272651Sbapt data->p_base = newps; 566272651Sbapt data->p_mark = newps + i; 567272651Sbapt#endif 568272651Sbapt 569272651Sbapt data->stacksize = newsize; 570272651Sbapt data->s_last = data->s_base + newsize - 1; 571272651Sbapt 572272651Sbapt#if YYDEBUG 573272651Sbapt if (yydebug) 574272651Sbapt fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize); 575272651Sbapt#endif 576272651Sbapt return 0; 577272651Sbapt} 578272651Sbapt 579272651Sbapt#if YYPURE || defined(YY_NO_LEAKS) 580272651Sbaptstatic void yyfreestack(YYSTACKDATA *data) 581272651Sbapt{ 582272651Sbapt free(data->s_base); 583272651Sbapt free(data->l_base); 584272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 585272651Sbapt free(data->p_base); 586272651Sbapt#endif 587272651Sbapt memset(data, 0, sizeof(*data)); 588272651Sbapt} 589272651Sbapt#else 590272651Sbapt#define yyfreestack(data) /* nothing */ 591272651Sbapt#endif /* YYPURE || defined(YY_NO_LEAKS) */ 592272651Sbapt#if YYBTYACC 593272651Sbapt 594272651Sbaptstatic YYParseState * 595272651SbaptyyNewState(unsigned size) 596272651Sbapt{ 597272651Sbapt YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState)); 598272651Sbapt if (p == NULL) return NULL; 599272651Sbapt 600272651Sbapt p->yystack.stacksize = size; 601272651Sbapt if (size == 0) 602272651Sbapt { 603272651Sbapt p->yystack.s_base = NULL; 604272651Sbapt p->yystack.l_base = NULL; 605272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 606272651Sbapt p->yystack.p_base = NULL; 607272651Sbapt#endif 608272651Sbapt return p; 609272651Sbapt } 610319297Sdelphij p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); 611272651Sbapt if (p->yystack.s_base == NULL) return NULL; 612272651Sbapt p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); 613272651Sbapt if (p->yystack.l_base == NULL) return NULL; 614272651Sbapt memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE)); 615272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 616272651Sbapt p->yystack.p_base = (YYLTYPE *) malloc(size * sizeof(YYLTYPE)); 617272651Sbapt if (p->yystack.p_base == NULL) return NULL; 618272651Sbapt memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE)); 619272651Sbapt#endif 620272651Sbapt 621272651Sbapt return p; 622272651Sbapt} 623272651Sbapt 624272651Sbaptstatic void 625272651SbaptyyFreeState(YYParseState *p) 626272651Sbapt{ 627272651Sbapt yyfreestack(&p->yystack); 628272651Sbapt free(p); 629272651Sbapt} 630272651Sbapt#endif /* YYBTYACC */ 631272651Sbapt 632272651Sbapt#define YYABORT goto yyabort 633272651Sbapt#define YYREJECT goto yyabort 634272651Sbapt#define YYACCEPT goto yyaccept 635272651Sbapt#define YYERROR goto yyerrlab 636272651Sbapt#if YYBTYACC 637272651Sbapt#define YYVALID do { if (yyps->save) goto yyvalid; } while(0) 638272651Sbapt#define YYVALID_NESTED do { if (yyps->save && \ 639272651Sbapt yyps->save->save == 0) goto yyvalid; } while(0) 640272651Sbapt#endif /* YYBTYACC */ 641272651Sbapt 642272651Sbaptint 643272651SbaptYYPARSE_DECL() 644272651Sbapt{ 645272651Sbapt int yym, yyn, yystate, yyresult; 646272651Sbapt#if YYBTYACC 647272651Sbapt int yynewerrflag; 648272651Sbapt YYParseState *yyerrctx = NULL; 649272651Sbapt#endif /* YYBTYACC */ 650272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 651272651Sbapt YYLTYPE yyerror_loc_range[2]; /* position of error start & end */ 652272651Sbapt#endif 653272651Sbapt#if YYDEBUG 654272651Sbapt const char *yys; 655272651Sbapt 656272651Sbapt if ((yys = getenv("YYDEBUG")) != 0) 657272651Sbapt { 658272651Sbapt yyn = *yys; 659272651Sbapt if (yyn >= '0' && yyn <= '9') 660272651Sbapt yydebug = yyn - '0'; 661272651Sbapt } 662272651Sbapt if (yydebug) 663272651Sbapt fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX); 664272651Sbapt#endif 665272651Sbapt 666272651Sbapt#if YYBTYACC 667272651Sbapt yyps = yyNewState(0); if (yyps == 0) goto yyenomem; 668272651Sbapt yyps->save = 0; 669272651Sbapt#endif /* YYBTYACC */ 670319297Sdelphij yym = 0; 671319297Sdelphij yyn = 0; 672272651Sbapt yynerrs = 0; 673272651Sbapt yyerrflag = 0; 674272651Sbapt yychar = YYEMPTY; 675272651Sbapt yystate = 0; 676272651Sbapt 677272651Sbapt#if YYPURE 678272651Sbapt memset(&yystack, 0, sizeof(yystack)); 679272651Sbapt#endif 680272651Sbapt 681272651Sbapt if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 682272651Sbapt yystack.s_mark = yystack.s_base; 683272651Sbapt yystack.l_mark = yystack.l_base; 684272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 685272651Sbapt yystack.p_mark = yystack.p_base; 686272651Sbapt#endif 687272651Sbapt yystate = 0; 688272651Sbapt *yystack.s_mark = 0; 689272651Sbapt 690272651Sbaptyyloop: 691272651Sbapt if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 692272651Sbapt if (yychar < 0) 693272651Sbapt { 694272651Sbapt#if YYBTYACC 695272651Sbapt do { 696272651Sbapt if (yylvp < yylve) 697272651Sbapt { 698272651Sbapt /* we're currently re-reading tokens */ 699272651Sbapt yylval = *yylvp++; 700272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 701272651Sbapt yylloc = *yylpp++; 702272651Sbapt#endif 703272651Sbapt yychar = *yylexp++; 704272651Sbapt break; 705272651Sbapt } 706272651Sbapt if (yyps->save) 707272651Sbapt { 708272651Sbapt /* in trial mode; save scanner results for future parse attempts */ 709272651Sbapt if (yylvp == yylvlim) 710272651Sbapt { /* Enlarge lexical value queue */ 711272651Sbapt size_t p = (size_t) (yylvp - yylvals); 712272651Sbapt size_t s = (size_t) (yylvlim - yylvals); 713272651Sbapt 714272651Sbapt s += YYLVQUEUEGROWTH; 715319297Sdelphij if ((yylexemes = realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem; 716319297Sdelphij if ((yylvals = realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem; 717272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 718319297Sdelphij if ((yylpsns = realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem; 719272651Sbapt#endif 720272651Sbapt yylvp = yylve = yylvals + p; 721272651Sbapt yylvlim = yylvals + s; 722272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 723272651Sbapt yylpp = yylpe = yylpsns + p; 724272651Sbapt yylplim = yylpsns + s; 725272651Sbapt#endif 726272651Sbapt yylexp = yylexemes + p; 727272651Sbapt } 728319297Sdelphij *yylexp = (YYINT) YYLEX; 729272651Sbapt *yylvp++ = yylval; 730272651Sbapt yylve++; 731272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 732272651Sbapt *yylpp++ = yylloc; 733272651Sbapt yylpe++; 734272651Sbapt#endif 735272651Sbapt yychar = *yylexp++; 736272651Sbapt break; 737272651Sbapt } 738272651Sbapt /* normal operation, no conflict encountered */ 739272651Sbapt#endif /* YYBTYACC */ 740272651Sbapt yychar = YYLEX; 741272651Sbapt#if YYBTYACC 742272651Sbapt } while (0); 743272651Sbapt#endif /* YYBTYACC */ 744272651Sbapt if (yychar < 0) yychar = YYEOF; 745272651Sbapt#if YYDEBUG 746272651Sbapt if (yydebug) 747272651Sbapt { 748319297Sdelphij if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 749272651Sbapt fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", 750272651Sbapt YYDEBUGSTR, yydepth, yystate, yychar, yys); 751272651Sbapt#ifdef YYSTYPE_TOSTRING 752272651Sbapt#if YYBTYACC 753272651Sbapt if (!yytrial) 754272651Sbapt#endif /* YYBTYACC */ 755272651Sbapt fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval)); 756272651Sbapt#endif 757272651Sbapt fputc('\n', stderr); 758272651Sbapt } 759272651Sbapt#endif 760272651Sbapt } 761272651Sbapt#if YYBTYACC 762272651Sbapt 763272651Sbapt /* Do we have a conflict? */ 764272651Sbapt if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 && 765272651Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 766272651Sbapt { 767272651Sbapt YYINT ctry; 768272651Sbapt 769272651Sbapt if (yypath) 770272651Sbapt { 771272651Sbapt YYParseState *save; 772272651Sbapt#if YYDEBUG 773272651Sbapt if (yydebug) 774272651Sbapt fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n", 775272651Sbapt YYDEBUGSTR, yydepth, yystate); 776272651Sbapt#endif 777272651Sbapt /* Switch to the next conflict context */ 778272651Sbapt save = yypath; 779272651Sbapt yypath = save->save; 780272651Sbapt save->save = NULL; 781272651Sbapt ctry = save->ctry; 782272651Sbapt if (save->state != yystate) YYABORT; 783272651Sbapt yyFreeState(save); 784272651Sbapt 785272651Sbapt } 786272651Sbapt else 787272651Sbapt { 788272651Sbapt 789272651Sbapt /* Unresolved conflict - start/continue trial parse */ 790272651Sbapt YYParseState *save; 791272651Sbapt#if YYDEBUG 792272651Sbapt if (yydebug) 793272651Sbapt { 794272651Sbapt fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate); 795272651Sbapt if (yyps->save) 796272651Sbapt fputs("ALREADY in conflict, continuing trial parse.\n", stderr); 797272651Sbapt else 798272651Sbapt fputs("Starting trial parse.\n", stderr); 799272651Sbapt } 800272651Sbapt#endif 801272651Sbapt save = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1)); 802272651Sbapt if (save == NULL) goto yyenomem; 803272651Sbapt save->save = yyps->save; 804272651Sbapt save->state = yystate; 805272651Sbapt save->errflag = yyerrflag; 806272651Sbapt save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); 807319297Sdelphij memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 808272651Sbapt save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); 809272651Sbapt memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 810272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 811272651Sbapt save->yystack.p_mark = save->yystack.p_base + (yystack.p_mark - yystack.p_base); 812272651Sbapt memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 813272651Sbapt#endif 814272651Sbapt ctry = yytable[yyn]; 815272651Sbapt if (yyctable[ctry] == -1) 816272651Sbapt { 817272651Sbapt#if YYDEBUG 818272651Sbapt if (yydebug && yychar >= YYEOF) 819272651Sbapt fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth); 820272651Sbapt#endif 821272651Sbapt ctry++; 822272651Sbapt } 823272651Sbapt save->ctry = ctry; 824272651Sbapt if (yyps->save == NULL) 825272651Sbapt { 826272651Sbapt /* If this is a first conflict in the stack, start saving lexemes */ 827272651Sbapt if (!yylexemes) 828272651Sbapt { 829319297Sdelphij yylexemes = malloc((YYLVQUEUEGROWTH) * sizeof(YYINT)); 830272651Sbapt if (yylexemes == NULL) goto yyenomem; 831272651Sbapt yylvals = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE)); 832272651Sbapt if (yylvals == NULL) goto yyenomem; 833272651Sbapt yylvlim = yylvals + YYLVQUEUEGROWTH; 834272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 835272651Sbapt yylpsns = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE)); 836272651Sbapt if (yylpsns == NULL) goto yyenomem; 837272651Sbapt yylplim = yylpsns + YYLVQUEUEGROWTH; 838272651Sbapt#endif 839272651Sbapt } 840272651Sbapt if (yylvp == yylve) 841272651Sbapt { 842272651Sbapt yylvp = yylve = yylvals; 843272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 844272651Sbapt yylpp = yylpe = yylpsns; 845272651Sbapt#endif 846272651Sbapt yylexp = yylexemes; 847272651Sbapt if (yychar >= YYEOF) 848272651Sbapt { 849272651Sbapt *yylve++ = yylval; 850272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 851272651Sbapt *yylpe++ = yylloc; 852272651Sbapt#endif 853319297Sdelphij *yylexp = (YYINT) yychar; 854272651Sbapt yychar = YYEMPTY; 855272651Sbapt } 856272651Sbapt } 857272651Sbapt } 858272651Sbapt if (yychar >= YYEOF) 859272651Sbapt { 860272651Sbapt yylvp--; 861272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 862272651Sbapt yylpp--; 863272651Sbapt#endif 864272651Sbapt yylexp--; 865272651Sbapt yychar = YYEMPTY; 866272651Sbapt } 867272651Sbapt save->lexeme = (int) (yylvp - yylvals); 868272651Sbapt yyps->save = save; 869272651Sbapt } 870272651Sbapt if (yytable[yyn] == ctry) 871272651Sbapt { 872272651Sbapt#if YYDEBUG 873272651Sbapt if (yydebug) 874272651Sbapt fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", 875272651Sbapt YYDEBUGSTR, yydepth, yystate, yyctable[ctry]); 876272651Sbapt#endif 877272651Sbapt if (yychar < 0) 878272651Sbapt { 879272651Sbapt yylvp++; 880272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 881272651Sbapt yylpp++; 882272651Sbapt#endif 883272651Sbapt yylexp++; 884272651Sbapt } 885272651Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 886272651Sbapt goto yyoverflow; 887272651Sbapt yystate = yyctable[ctry]; 888319297Sdelphij *++yystack.s_mark = (YYINT) yystate; 889272651Sbapt *++yystack.l_mark = yylval; 890272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 891272651Sbapt *++yystack.p_mark = yylloc; 892272651Sbapt#endif 893272651Sbapt yychar = YYEMPTY; 894272651Sbapt if (yyerrflag > 0) --yyerrflag; 895272651Sbapt goto yyloop; 896272651Sbapt } 897272651Sbapt else 898272651Sbapt { 899272651Sbapt yyn = yyctable[ctry]; 900272651Sbapt goto yyreduce; 901272651Sbapt } 902272651Sbapt } /* End of code dealing with conflicts */ 903272651Sbapt#endif /* YYBTYACC */ 904272651Sbapt if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && 905272651Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 906272651Sbapt { 907272651Sbapt#if YYDEBUG 908272651Sbapt if (yydebug) 909272651Sbapt fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", 910272651Sbapt YYDEBUGSTR, yydepth, yystate, yytable[yyn]); 911272651Sbapt#endif 912272651Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 913272651Sbapt yystate = yytable[yyn]; 914272651Sbapt *++yystack.s_mark = yytable[yyn]; 915272651Sbapt *++yystack.l_mark = yylval; 916272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 917272651Sbapt *++yystack.p_mark = yylloc; 918272651Sbapt#endif 919272651Sbapt yychar = YYEMPTY; 920272651Sbapt if (yyerrflag > 0) --yyerrflag; 921272651Sbapt goto yyloop; 922272651Sbapt } 923272651Sbapt if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && 924272651Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 925272651Sbapt { 926272651Sbapt yyn = yytable[yyn]; 927272651Sbapt goto yyreduce; 928272651Sbapt } 929272651Sbapt if (yyerrflag != 0) goto yyinrecovery; 930272651Sbapt#if YYBTYACC 931272651Sbapt 932272651Sbapt yynewerrflag = 1; 933272651Sbapt goto yyerrhandler; 934319297Sdelphij goto yyerrlab; /* redundant goto avoids 'unused label' warning */ 935272651Sbapt 936272651Sbaptyyerrlab: 937319297Sdelphij /* explicit YYERROR from an action -- pop the rhs of the rule reduced 938319297Sdelphij * before looking for error recovery */ 939319297Sdelphij yystack.s_mark -= yym; 940319297Sdelphij yystate = *yystack.s_mark; 941319297Sdelphij yystack.l_mark -= yym; 942319297Sdelphij#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 943319297Sdelphij yystack.p_mark -= yym; 944319297Sdelphij#endif 945319297Sdelphij 946272651Sbapt yynewerrflag = 0; 947272651Sbaptyyerrhandler: 948272651Sbapt while (yyps->save) 949272651Sbapt { 950272651Sbapt int ctry; 951272651Sbapt YYParseState *save = yyps->save; 952272651Sbapt#if YYDEBUG 953272651Sbapt if (yydebug) 954272651Sbapt fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n", 955272651Sbapt YYDEBUGSTR, yydepth, yystate, yyps->save->state, 956272651Sbapt (int)(yylvp - yylvals - yyps->save->lexeme)); 957272651Sbapt#endif 958272651Sbapt /* Memorize most forward-looking error state in case it's really an error. */ 959272651Sbapt if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals) 960272651Sbapt { 961272651Sbapt /* Free old saved error context state */ 962272651Sbapt if (yyerrctx) yyFreeState(yyerrctx); 963272651Sbapt /* Create and fill out new saved error context state */ 964272651Sbapt yyerrctx = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1)); 965272651Sbapt if (yyerrctx == NULL) goto yyenomem; 966272651Sbapt yyerrctx->save = yyps->save; 967272651Sbapt yyerrctx->state = yystate; 968272651Sbapt yyerrctx->errflag = yyerrflag; 969272651Sbapt yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); 970319297Sdelphij memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 971272651Sbapt yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); 972272651Sbapt memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 973272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 974272651Sbapt yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base); 975272651Sbapt memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 976272651Sbapt#endif 977272651Sbapt yyerrctx->lexeme = (int) (yylvp - yylvals); 978272651Sbapt } 979272651Sbapt yylvp = yylvals + save->lexeme; 980272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 981272651Sbapt yylpp = yylpsns + save->lexeme; 982272651Sbapt#endif 983272651Sbapt yylexp = yylexemes + save->lexeme; 984272651Sbapt yychar = YYEMPTY; 985272651Sbapt yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); 986319297Sdelphij memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 987272651Sbapt yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); 988272651Sbapt memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 989272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 990272651Sbapt yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base); 991272651Sbapt memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 992272651Sbapt#endif 993272651Sbapt ctry = ++save->ctry; 994272651Sbapt yystate = save->state; 995272651Sbapt /* We tried shift, try reduce now */ 996272651Sbapt if ((yyn = yyctable[ctry]) >= 0) goto yyreduce; 997272651Sbapt yyps->save = save->save; 998272651Sbapt save->save = NULL; 999272651Sbapt yyFreeState(save); 1000272651Sbapt 1001272651Sbapt /* Nothing left on the stack -- error */ 1002272651Sbapt if (!yyps->save) 1003272651Sbapt { 1004272651Sbapt#if YYDEBUG 1005272651Sbapt if (yydebug) 1006272651Sbapt fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n", 1007272651Sbapt YYPREFIX, yydepth); 1008272651Sbapt#endif 1009272651Sbapt /* Restore state as it was in the most forward-advanced error */ 1010272651Sbapt yylvp = yylvals + yyerrctx->lexeme; 1011272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1012272651Sbapt yylpp = yylpsns + yyerrctx->lexeme; 1013272651Sbapt#endif 1014272651Sbapt yylexp = yylexemes + yyerrctx->lexeme; 1015272651Sbapt yychar = yylexp[-1]; 1016272651Sbapt yylval = yylvp[-1]; 1017272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1018272651Sbapt yylloc = yylpp[-1]; 1019272651Sbapt#endif 1020272651Sbapt yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); 1021319297Sdelphij memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 1022272651Sbapt yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); 1023272651Sbapt memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1024272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1025272651Sbapt yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base); 1026272651Sbapt memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1027272651Sbapt#endif 1028272651Sbapt yystate = yyerrctx->state; 1029272651Sbapt yyFreeState(yyerrctx); 1030272651Sbapt yyerrctx = NULL; 1031272651Sbapt } 1032272651Sbapt yynewerrflag = 1; 1033272651Sbapt } 1034272651Sbapt if (yynewerrflag == 0) goto yyinrecovery; 1035272651Sbapt#endif /* YYBTYACC */ 1036272651Sbapt 1037272651Sbapt YYERROR_CALL("syntax error"); 1038272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1039272651Sbapt yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */ 1040272651Sbapt#endif 1041272651Sbapt 1042272651Sbapt#if !YYBTYACC 1043319297Sdelphij goto yyerrlab; /* redundant goto avoids 'unused label' warning */ 1044272651Sbaptyyerrlab: 1045272651Sbapt#endif 1046272651Sbapt ++yynerrs; 1047272651Sbapt 1048272651Sbaptyyinrecovery: 1049272651Sbapt if (yyerrflag < 3) 1050272651Sbapt { 1051272651Sbapt yyerrflag = 3; 1052272651Sbapt for (;;) 1053272651Sbapt { 1054272651Sbapt if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && 1055272651Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) 1056272651Sbapt { 1057272651Sbapt#if YYDEBUG 1058272651Sbapt if (yydebug) 1059272651Sbapt fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n", 1060272651Sbapt YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]); 1061272651Sbapt#endif 1062272651Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 1063272651Sbapt yystate = yytable[yyn]; 1064272651Sbapt *++yystack.s_mark = yytable[yyn]; 1065272651Sbapt *++yystack.l_mark = yylval; 1066272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1067272651Sbapt /* lookahead position is error end position */ 1068272651Sbapt yyerror_loc_range[1] = yylloc; 1069272651Sbapt YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */ 1070272651Sbapt *++yystack.p_mark = yyloc; 1071272651Sbapt#endif 1072272651Sbapt goto yyloop; 1073272651Sbapt } 1074272651Sbapt else 1075272651Sbapt { 1076272651Sbapt#if YYDEBUG 1077272651Sbapt if (yydebug) 1078272651Sbapt fprintf(stderr, "%s[%d]: error recovery discarding state %d\n", 1079272651Sbapt YYDEBUGSTR, yydepth, *yystack.s_mark); 1080272651Sbapt#endif 1081272651Sbapt if (yystack.s_mark <= yystack.s_base) goto yyabort; 1082272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1083272651Sbapt /* the current TOS position is the error start position */ 1084272651Sbapt yyerror_loc_range[0] = *yystack.p_mark; 1085272651Sbapt#endif 1086272651Sbapt#if defined(YYDESTRUCT_CALL) 1087272651Sbapt#if YYBTYACC 1088272651Sbapt if (!yytrial) 1089272651Sbapt#endif /* YYBTYACC */ 1090272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1091272651Sbapt YYDESTRUCT_CALL("error: discarding state", 1092272651Sbapt yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark); 1093272651Sbapt#else 1094272651Sbapt YYDESTRUCT_CALL("error: discarding state", 1095272651Sbapt yystos[*yystack.s_mark], yystack.l_mark); 1096272651Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1097272651Sbapt#endif /* defined(YYDESTRUCT_CALL) */ 1098272651Sbapt --yystack.s_mark; 1099272651Sbapt --yystack.l_mark; 1100272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1101272651Sbapt --yystack.p_mark; 1102272651Sbapt#endif 1103272651Sbapt } 1104272651Sbapt } 1105272651Sbapt } 1106272651Sbapt else 1107272651Sbapt { 1108272651Sbapt if (yychar == YYEOF) goto yyabort; 1109272651Sbapt#if YYDEBUG 1110272651Sbapt if (yydebug) 1111272651Sbapt { 1112319297Sdelphij if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 1113272651Sbapt fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", 1114272651Sbapt YYDEBUGSTR, yydepth, yystate, yychar, yys); 1115272651Sbapt } 1116272651Sbapt#endif 1117272651Sbapt#if defined(YYDESTRUCT_CALL) 1118272651Sbapt#if YYBTYACC 1119272651Sbapt if (!yytrial) 1120272651Sbapt#endif /* YYBTYACC */ 1121272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1122272651Sbapt YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc); 1123272651Sbapt#else 1124272651Sbapt YYDESTRUCT_CALL("error: discarding token", yychar, &yylval); 1125272651Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1126272651Sbapt#endif /* defined(YYDESTRUCT_CALL) */ 1127272651Sbapt yychar = YYEMPTY; 1128272651Sbapt goto yyloop; 1129272651Sbapt } 1130272651Sbapt 1131272651Sbaptyyreduce: 1132272651Sbapt yym = yylen[yyn]; 1133272651Sbapt#if YYDEBUG 1134272651Sbapt if (yydebug) 1135272651Sbapt { 1136272651Sbapt fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)", 1137272651Sbapt YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]); 1138272651Sbapt#ifdef YYSTYPE_TOSTRING 1139272651Sbapt#if YYBTYACC 1140272651Sbapt if (!yytrial) 1141272651Sbapt#endif /* YYBTYACC */ 1142272651Sbapt if (yym > 0) 1143272651Sbapt { 1144272651Sbapt int i; 1145272651Sbapt fputc('<', stderr); 1146272651Sbapt for (i = yym; i > 0; i--) 1147272651Sbapt { 1148272651Sbapt if (i != yym) fputs(", ", stderr); 1149272651Sbapt fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]], 1150272651Sbapt yystack.l_mark[1-i]), stderr); 1151272651Sbapt } 1152272651Sbapt fputc('>', stderr); 1153272651Sbapt } 1154272651Sbapt#endif 1155272651Sbapt fputc('\n', stderr); 1156272651Sbapt } 1157272651Sbapt#endif 1158272651Sbapt if (yym > 0) 1159272651Sbapt yyval = yystack.l_mark[1-yym]; 1160272651Sbapt else 1161272651Sbapt memset(&yyval, 0, sizeof yyval); 1162272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1163272651Sbapt 1164272651Sbapt /* Perform position reduction */ 1165272651Sbapt memset(&yyloc, 0, sizeof(yyloc)); 1166272651Sbapt#if YYBTYACC 1167272651Sbapt if (!yytrial) 1168272651Sbapt#endif /* YYBTYACC */ 1169272651Sbapt { 1170272651Sbapt YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym); 1171272651Sbapt /* just in case YYERROR is invoked within the action, save 1172272651Sbapt the start of the rhs as the error start position */ 1173272651Sbapt yyerror_loc_range[0] = yystack.p_mark[1-yym]; 1174272651Sbapt } 1175272651Sbapt#endif 1176272651Sbapt 1177272651Sbapt switch (yyn) 1178272651Sbapt { 1179272651Sbaptcase 1: 1180272651Sbapt if (!yytrial) 1181272651Sbapt#line 65 "btyacc_destroy3.y" 1182272651Sbapt { yyval.nlist = yystack.l_mark[-5].nlist; } 1183272651Sbaptbreak; 1184272651Sbaptcase 2: 1185272651Sbapt if (!yytrial) 1186272651Sbapt#line 67 "btyacc_destroy3.y" 1187272651Sbapt { yyval.nlist = yystack.l_mark[-3].nlist; } 1188272651Sbaptbreak; 1189272651Sbaptcase 3: 1190272651Sbapt if (!yytrial) 1191272651Sbapt#line 70 "btyacc_destroy3.y" 1192272651Sbapt { yyval.cval = cGLOBAL; } 1193272651Sbaptbreak; 1194272651Sbaptcase 4: 1195272651Sbapt if (!yytrial) 1196272651Sbapt#line 71 "btyacc_destroy3.y" 1197272651Sbapt { yyval.cval = cLOCAL; } 1198272651Sbaptbreak; 1199272651Sbaptcase 5: 1200272651Sbapt if (!yytrial) 1201272651Sbapt#line 74 "btyacc_destroy3.y" 1202272651Sbapt { yyval.tval = tREAL; } 1203272651Sbaptbreak; 1204272651Sbaptcase 6: 1205272651Sbapt if (!yytrial) 1206272651Sbapt#line 75 "btyacc_destroy3.y" 1207272651Sbapt { yyval.tval = tINTEGER; } 1208272651Sbaptbreak; 1209272651Sbaptcase 7: 1210272651Sbapt if (!yytrial) 1211272651Sbapt#line 79 "btyacc_destroy3.y" 1212272651Sbapt { yyval.nlist->s = mksymbol(yystack.l_mark[-2].tval, yystack.l_mark[-2].cval, yystack.l_mark[0].id); 1213272651Sbapt yyval.nlist->next = yystack.l_mark[-1].nlist; 1214272651Sbapt } 1215272651Sbaptbreak; 1216272651Sbaptcase 8: 1217272651Sbapt if (!yytrial) 1218272651Sbapt#line 83 "btyacc_destroy3.y" 1219272651Sbapt { yyval.nlist->s = mksymbol(0, 0, yystack.l_mark[0].id); 1220272651Sbapt yyval.nlist->next = NULL; 1221272651Sbapt } 1222272651Sbaptbreak; 1223272651Sbaptcase 9: 1224272651Sbapt if (!yytrial) 1225272651Sbapt#line 89 "btyacc_destroy3.y" 1226272651Sbapt { yyval.nlist = yystack.l_mark[-5].nlist; } 1227272651Sbaptbreak; 1228319297Sdelphij#line 1229 "btyacc_destroy3.tab.c" 1229272651Sbapt default: 1230272651Sbapt break; 1231272651Sbapt } 1232272651Sbapt yystack.s_mark -= yym; 1233272651Sbapt yystate = *yystack.s_mark; 1234272651Sbapt yystack.l_mark -= yym; 1235272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1236272651Sbapt yystack.p_mark -= yym; 1237272651Sbapt#endif 1238272651Sbapt yym = yylhs[yyn]; 1239272651Sbapt if (yystate == 0 && yym == 0) 1240272651Sbapt { 1241272651Sbapt#if YYDEBUG 1242272651Sbapt if (yydebug) 1243272651Sbapt { 1244272651Sbapt fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth); 1245272651Sbapt#ifdef YYSTYPE_TOSTRING 1246272651Sbapt#if YYBTYACC 1247272651Sbapt if (!yytrial) 1248272651Sbapt#endif /* YYBTYACC */ 1249272651Sbapt fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval)); 1250272651Sbapt#endif 1251272651Sbapt fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL); 1252272651Sbapt } 1253272651Sbapt#endif 1254272651Sbapt yystate = YYFINAL; 1255272651Sbapt *++yystack.s_mark = YYFINAL; 1256272651Sbapt *++yystack.l_mark = yyval; 1257272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1258272651Sbapt *++yystack.p_mark = yyloc; 1259272651Sbapt#endif 1260272651Sbapt if (yychar < 0) 1261272651Sbapt { 1262272651Sbapt#if YYBTYACC 1263272651Sbapt do { 1264272651Sbapt if (yylvp < yylve) 1265272651Sbapt { 1266272651Sbapt /* we're currently re-reading tokens */ 1267272651Sbapt yylval = *yylvp++; 1268272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1269272651Sbapt yylloc = *yylpp++; 1270272651Sbapt#endif 1271272651Sbapt yychar = *yylexp++; 1272272651Sbapt break; 1273272651Sbapt } 1274272651Sbapt if (yyps->save) 1275272651Sbapt { 1276272651Sbapt /* in trial mode; save scanner results for future parse attempts */ 1277272651Sbapt if (yylvp == yylvlim) 1278272651Sbapt { /* Enlarge lexical value queue */ 1279272651Sbapt size_t p = (size_t) (yylvp - yylvals); 1280272651Sbapt size_t s = (size_t) (yylvlim - yylvals); 1281272651Sbapt 1282272651Sbapt s += YYLVQUEUEGROWTH; 1283319297Sdelphij if ((yylexemes = realloc(yylexemes, s * sizeof(YYINT))) == NULL) 1284272651Sbapt goto yyenomem; 1285319297Sdelphij if ((yylvals = realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) 1286272651Sbapt goto yyenomem; 1287272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1288319297Sdelphij if ((yylpsns = realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) 1289272651Sbapt goto yyenomem; 1290272651Sbapt#endif 1291272651Sbapt yylvp = yylve = yylvals + p; 1292272651Sbapt yylvlim = yylvals + s; 1293272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1294272651Sbapt yylpp = yylpe = yylpsns + p; 1295272651Sbapt yylplim = yylpsns + s; 1296272651Sbapt#endif 1297272651Sbapt yylexp = yylexemes + p; 1298272651Sbapt } 1299319297Sdelphij *yylexp = (YYINT) YYLEX; 1300272651Sbapt *yylvp++ = yylval; 1301272651Sbapt yylve++; 1302272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1303272651Sbapt *yylpp++ = yylloc; 1304272651Sbapt yylpe++; 1305272651Sbapt#endif 1306272651Sbapt yychar = *yylexp++; 1307272651Sbapt break; 1308272651Sbapt } 1309272651Sbapt /* normal operation, no conflict encountered */ 1310272651Sbapt#endif /* YYBTYACC */ 1311272651Sbapt yychar = YYLEX; 1312272651Sbapt#if YYBTYACC 1313272651Sbapt } while (0); 1314272651Sbapt#endif /* YYBTYACC */ 1315272651Sbapt if (yychar < 0) yychar = YYEOF; 1316272651Sbapt#if YYDEBUG 1317272651Sbapt if (yydebug) 1318272651Sbapt { 1319319297Sdelphij if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 1320319297Sdelphij fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", 1321272651Sbapt YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); 1322272651Sbapt } 1323272651Sbapt#endif 1324272651Sbapt } 1325272651Sbapt if (yychar == YYEOF) goto yyaccept; 1326272651Sbapt goto yyloop; 1327272651Sbapt } 1328272651Sbapt if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && 1329272651Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) 1330272651Sbapt yystate = yytable[yyn]; 1331272651Sbapt else 1332272651Sbapt yystate = yydgoto[yym]; 1333272651Sbapt#if YYDEBUG 1334272651Sbapt if (yydebug) 1335272651Sbapt { 1336272651Sbapt fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth); 1337272651Sbapt#ifdef YYSTYPE_TOSTRING 1338272651Sbapt#if YYBTYACC 1339272651Sbapt if (!yytrial) 1340272651Sbapt#endif /* YYBTYACC */ 1341272651Sbapt fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval)); 1342272651Sbapt#endif 1343272651Sbapt fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate); 1344272651Sbapt } 1345272651Sbapt#endif 1346272651Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 1347319297Sdelphij *++yystack.s_mark = (YYINT) yystate; 1348272651Sbapt *++yystack.l_mark = yyval; 1349272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1350272651Sbapt *++yystack.p_mark = yyloc; 1351272651Sbapt#endif 1352272651Sbapt goto yyloop; 1353272651Sbapt#if YYBTYACC 1354272651Sbapt 1355272651Sbapt /* Reduction declares that this path is valid. Set yypath and do a full parse */ 1356272651Sbaptyyvalid: 1357272651Sbapt if (yypath) YYABORT; 1358272651Sbapt while (yyps->save) 1359272651Sbapt { 1360272651Sbapt YYParseState *save = yyps->save; 1361272651Sbapt yyps->save = save->save; 1362272651Sbapt save->save = yypath; 1363272651Sbapt yypath = save; 1364272651Sbapt } 1365272651Sbapt#if YYDEBUG 1366272651Sbapt if (yydebug) 1367272651Sbapt fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n", 1368272651Sbapt YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme)); 1369272651Sbapt#endif 1370272651Sbapt if (yyerrctx) 1371272651Sbapt { 1372272651Sbapt yyFreeState(yyerrctx); 1373272651Sbapt yyerrctx = NULL; 1374272651Sbapt } 1375272651Sbapt yylvp = yylvals + yypath->lexeme; 1376272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1377272651Sbapt yylpp = yylpsns + yypath->lexeme; 1378272651Sbapt#endif 1379272651Sbapt yylexp = yylexemes + yypath->lexeme; 1380272651Sbapt yychar = YYEMPTY; 1381272651Sbapt yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); 1382319297Sdelphij memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 1383272651Sbapt yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); 1384272651Sbapt memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1385272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1386272651Sbapt yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base); 1387272651Sbapt memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1388272651Sbapt#endif 1389272651Sbapt yystate = yypath->state; 1390272651Sbapt goto yyloop; 1391272651Sbapt#endif /* YYBTYACC */ 1392272651Sbapt 1393272651Sbaptyyoverflow: 1394272651Sbapt YYERROR_CALL("yacc stack overflow"); 1395272651Sbapt#if YYBTYACC 1396272651Sbapt goto yyabort_nomem; 1397272651Sbaptyyenomem: 1398272651Sbapt YYERROR_CALL("memory exhausted"); 1399272651Sbaptyyabort_nomem: 1400272651Sbapt#endif /* YYBTYACC */ 1401272651Sbapt yyresult = 2; 1402272651Sbapt goto yyreturn; 1403272651Sbapt 1404272651Sbaptyyabort: 1405272651Sbapt yyresult = 1; 1406272651Sbapt goto yyreturn; 1407272651Sbapt 1408272651Sbaptyyaccept: 1409272651Sbapt#if YYBTYACC 1410272651Sbapt if (yyps->save) goto yyvalid; 1411272651Sbapt#endif /* YYBTYACC */ 1412272651Sbapt yyresult = 0; 1413272651Sbapt 1414272651Sbaptyyreturn: 1415272651Sbapt#if defined(YYDESTRUCT_CALL) 1416272651Sbapt if (yychar != YYEOF && yychar != YYEMPTY) 1417272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1418272651Sbapt YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc); 1419272651Sbapt#else 1420272651Sbapt YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval); 1421272651Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1422272651Sbapt 1423272651Sbapt { 1424272651Sbapt YYSTYPE *pv; 1425272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1426272651Sbapt YYLTYPE *pp; 1427272651Sbapt 1428272651Sbapt for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp) 1429272651Sbapt YYDESTRUCT_CALL("cleanup: discarding state", 1430272651Sbapt yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp); 1431272651Sbapt#else 1432272651Sbapt for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv) 1433272651Sbapt YYDESTRUCT_CALL("cleanup: discarding state", 1434272651Sbapt yystos[*(yystack.s_base + (pv - yystack.l_base))], pv); 1435272651Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1436272651Sbapt } 1437272651Sbapt#endif /* defined(YYDESTRUCT_CALL) */ 1438272651Sbapt 1439272651Sbapt#if YYBTYACC 1440272651Sbapt if (yyerrctx) 1441272651Sbapt { 1442272651Sbapt yyFreeState(yyerrctx); 1443272651Sbapt yyerrctx = NULL; 1444272651Sbapt } 1445272651Sbapt while (yyps) 1446272651Sbapt { 1447272651Sbapt YYParseState *save = yyps; 1448272651Sbapt yyps = save->save; 1449272651Sbapt save->save = NULL; 1450272651Sbapt yyFreeState(save); 1451272651Sbapt } 1452272651Sbapt while (yypath) 1453272651Sbapt { 1454272651Sbapt YYParseState *save = yypath; 1455272651Sbapt yypath = save->save; 1456272651Sbapt save->save = NULL; 1457272651Sbapt yyFreeState(save); 1458272651Sbapt } 1459272651Sbapt#endif /* YYBTYACC */ 1460272651Sbapt yyfreestack(&yystack); 1461272651Sbapt return (yyresult); 1462272651Sbapt} 1463