1272651Sbapt/* original parser id follows */ 2272651Sbapt/* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ 3272651Sbapt/* (use YYMAJOR/YYMINOR for ifdefs dependent of 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#line 53 "btyacc_destroy3.y" 145272651Sbapt#ifdef YYSTYPE 146272651Sbapt#undef YYSTYPE_IS_DECLARED 147272651Sbapt#define YYSTYPE_IS_DECLARED 1 148272651Sbapt#endif 149272651Sbapt#ifndef YYSTYPE_IS_DECLARED 150272651Sbapt#define YYSTYPE_IS_DECLARED 1 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}; 217272651Sbaptstatic const YYINT destroy3_stos[] = { 0, 218272651Sbapt 257, 258, 259, 260, 263, 265, 266, 266, 261, 264, 219272651Sbapt 267, 267, 40, 261, 40, 40, 265, 258, 265, 41, 220272651Sbapt 44, 44, 266, 266, 41, 41, 221272651Sbapt}; 222272651Sbaptstatic const YYINT destroy3_dgoto[] = { 5, 223272651Sbapt 10, 6, 7, 11, 224272651Sbapt}; 225272651Sbaptstatic const YYINT destroy3_sindex[] = { -254, 226272651Sbapt 0, 0, 0, 0, 0, -251, -248, -248, 0, -26, 227272651Sbapt -40, -39, -246, 0, -243, -246, -25, -24, -23, 0, 228272651Sbapt -251, -251, -22, -19, 0, 0, 229272651Sbapt}; 230272651Sbaptstatic const YYINT destroy3_rindex[] = { 0, 231272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 233272651Sbapt 0, 0, 0, 0, 0, 0, 234272651Sbapt}; 235272651Sbapt#if YYBTYACC 236272651Sbaptstatic const YYINT destroy3_cindex[] = { 0, 237272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 238272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 239272651Sbapt 0, 0, 0, 0, 0, 0, 240272651Sbapt}; 241272651Sbapt#endif 242272651Sbaptstatic const YYINT destroy3_gindex[] = { 0, 243272651Sbapt 0, -6, -4, 15, 244272651Sbapt}; 245272651Sbapt#define YYTABLESIZE 222 246272651Sbaptstatic const YYINT destroy3_table[] = { 15, 247272651Sbapt 16, 8, 1, 2, 3, 4, 17, 3, 4, 19, 248272651Sbapt 1, 2, 9, 13, 18, 20, 23, 24, 25, 21, 249272651Sbapt 22, 26, 12, 0, 0, 0, 0, 0, 0, 0, 250272651Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 251272651Sbapt 0, 0, 0, 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 14, 14, 270272651Sbapt}; 271272651Sbaptstatic const YYINT destroy3_check[] = { 40, 272272651Sbapt 40, 6, 257, 258, 259, 260, 13, 259, 260, 16, 273272651Sbapt 257, 258, 261, 40, 258, 41, 21, 22, 41, 44, 274272651Sbapt 44, 41, 8, -1, -1, -1, -1, -1, -1, -1, 275272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 276272651Sbapt -1, -1, -1, -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 261, 261, 295272651Sbapt}; 296272651Sbapt#if YYBTYACC 297272651Sbaptstatic const YYINT destroy3_ctable[] = { -1, 298272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 299272651Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -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, 321272651Sbapt}; 322272651Sbapt#endif 323272651Sbapt#define YYFINAL 5 324272651Sbapt#ifndef YYDEBUG 325272651Sbapt#define YYDEBUG 0 326272651Sbapt#endif 327272651Sbapt#define YYMAXTOKEN 261 328272651Sbapt#define YYUNDFTOKEN 268 329272651Sbapt#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) 330272651Sbapt#if YYDEBUG 331272651Sbaptstatic const char *const destroy3_name[] = { 332272651Sbapt 333272651Sbapt"$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, 334272651Sbapt0,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, 335272651Sbapt0,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, 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,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,"error","GLOBAL","LOCAL", 340272651Sbapt"REAL","INTEGER","NAME","$accept","declaration","locnamelist","class","type", 341272651Sbapt"namelist","illegal-symbol", 342272651Sbapt}; 343272651Sbaptstatic const char *const destroy3_rule[] = { 344272651Sbapt"$accept : declaration", 345272651Sbapt"declaration : class type namelist '(' class ',' type ')'", 346272651Sbapt"declaration : type locnamelist '(' class ')'", 347272651Sbapt"class : GLOBAL", 348272651Sbapt"class : LOCAL", 349272651Sbapt"type : REAL", 350272651Sbapt"type : INTEGER", 351272651Sbapt"namelist : namelist NAME", 352272651Sbapt"namelist : NAME", 353272651Sbapt"locnamelist : namelist '(' LOCAL ',' type ')'", 354272651Sbapt 355272651Sbapt}; 356272651Sbapt#endif 357272651Sbapt 358272651Sbaptint yydebug; 359272651Sbaptint yynerrs; 360272651Sbapt 361272651Sbaptint yyerrflag; 362272651Sbaptint yychar; 363272651SbaptYYSTYPE yyval; 364272651SbaptYYSTYPE yylval; 365272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 366272651SbaptYYLTYPE yyloc; /* position returned by actions */ 367272651SbaptYYLTYPE yylloc; /* position from the lexer */ 368272651Sbapt#endif 369272651Sbapt 370272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 371272651Sbapt#ifndef YYLLOC_DEFAULT 372272651Sbapt#define YYLLOC_DEFAULT(loc, rhs, n) \ 373272651Sbaptdo \ 374272651Sbapt{ \ 375272651Sbapt if (n == 0) \ 376272651Sbapt { \ 377272651Sbapt (loc).first_line = ((rhs)[-1]).last_line; \ 378272651Sbapt (loc).first_column = ((rhs)[-1]).last_column; \ 379272651Sbapt (loc).last_line = ((rhs)[-1]).last_line; \ 380272651Sbapt (loc).last_column = ((rhs)[-1]).last_column; \ 381272651Sbapt } \ 382272651Sbapt else \ 383272651Sbapt { \ 384272651Sbapt (loc).first_line = ((rhs)[ 0 ]).first_line; \ 385272651Sbapt (loc).first_column = ((rhs)[ 0 ]).first_column; \ 386272651Sbapt (loc).last_line = ((rhs)[n-1]).last_line; \ 387272651Sbapt (loc).last_column = ((rhs)[n-1]).last_column; \ 388272651Sbapt } \ 389272651Sbapt} while (0) 390272651Sbapt#endif /* YYLLOC_DEFAULT */ 391272651Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 392272651Sbapt#if YYBTYACC 393272651Sbapt 394272651Sbapt#ifndef YYLVQUEUEGROWTH 395272651Sbapt#define YYLVQUEUEGROWTH 32 396272651Sbapt#endif 397272651Sbapt#endif /* YYBTYACC */ 398272651Sbapt 399272651Sbapt/* define the initial stack-sizes */ 400272651Sbapt#ifdef YYSTACKSIZE 401272651Sbapt#undef YYMAXDEPTH 402272651Sbapt#define YYMAXDEPTH YYSTACKSIZE 403272651Sbapt#else 404272651Sbapt#ifdef YYMAXDEPTH 405272651Sbapt#define YYSTACKSIZE YYMAXDEPTH 406272651Sbapt#else 407272651Sbapt#define YYSTACKSIZE 10000 408272651Sbapt#define YYMAXDEPTH 10000 409272651Sbapt#endif 410272651Sbapt#endif 411272651Sbapt 412272651Sbapt#ifndef YYINITSTACKSIZE 413272651Sbapt#define YYINITSTACKSIZE 200 414272651Sbapt#endif 415272651Sbapt 416272651Sbapttypedef struct { 417272651Sbapt unsigned stacksize; 418272651Sbapt short *s_base; 419272651Sbapt short *s_mark; 420272651Sbapt short *s_last; 421272651Sbapt YYSTYPE *l_base; 422272651Sbapt YYSTYPE *l_mark; 423272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 424272651Sbapt YYLTYPE *p_base; 425272651Sbapt YYLTYPE *p_mark; 426272651Sbapt#endif 427272651Sbapt} YYSTACKDATA; 428272651Sbapt#if YYBTYACC 429272651Sbapt 430272651Sbaptstruct YYParseState_s 431272651Sbapt{ 432272651Sbapt struct YYParseState_s *save; /* Previously saved parser state */ 433272651Sbapt YYSTACKDATA yystack; /* saved parser stack */ 434272651Sbapt int state; /* saved parser state */ 435272651Sbapt int errflag; /* saved error recovery status */ 436272651Sbapt int lexeme; /* saved index of the conflict lexeme in the lexical queue */ 437272651Sbapt YYINT ctry; /* saved index in yyctable[] for this conflict */ 438272651Sbapt}; 439272651Sbapttypedef struct YYParseState_s YYParseState; 440272651Sbapt#endif /* YYBTYACC */ 441272651Sbapt/* variables for the parser stack */ 442272651Sbaptstatic YYSTACKDATA yystack; 443272651Sbapt#if YYBTYACC 444272651Sbapt 445272651Sbapt/* Current parser state */ 446272651Sbaptstatic YYParseState *yyps = 0; 447272651Sbapt 448272651Sbapt/* yypath != NULL: do the full parse, starting at *yypath parser state. */ 449272651Sbaptstatic YYParseState *yypath = 0; 450272651Sbapt 451272651Sbapt/* Base of the lexical value queue */ 452272651Sbaptstatic YYSTYPE *yylvals = 0; 453272651Sbapt 454272651Sbapt/* Current position at lexical value queue */ 455272651Sbaptstatic YYSTYPE *yylvp = 0; 456272651Sbapt 457272651Sbapt/* End position of lexical value queue */ 458272651Sbaptstatic YYSTYPE *yylve = 0; 459272651Sbapt 460272651Sbapt/* The last allocated position at the lexical value queue */ 461272651Sbaptstatic YYSTYPE *yylvlim = 0; 462272651Sbapt 463272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 464272651Sbapt/* Base of the lexical position queue */ 465272651Sbaptstatic YYLTYPE *yylpsns = 0; 466272651Sbapt 467272651Sbapt/* Current position at lexical position queue */ 468272651Sbaptstatic YYLTYPE *yylpp = 0; 469272651Sbapt 470272651Sbapt/* End position of lexical position queue */ 471272651Sbaptstatic YYLTYPE *yylpe = 0; 472272651Sbapt 473272651Sbapt/* The last allocated position at the lexical position queue */ 474272651Sbaptstatic YYLTYPE *yylplim = 0; 475272651Sbapt#endif 476272651Sbapt 477272651Sbapt/* Current position at lexical token queue */ 478272651Sbaptstatic short *yylexp = 0; 479272651Sbapt 480272651Sbaptstatic short *yylexemes = 0; 481272651Sbapt#endif /* YYBTYACC */ 482272651Sbapt#line 92 "btyacc_destroy3.y" 483272651Sbapt 484272651Sbaptextern int YYLEX_DECL(); 485272651Sbaptextern void YYERROR_DECL(); 486272651Sbapt#line 487 "btyacc_destroy3.tab.c" 487272651Sbapt 488272651Sbapt/* Release memory associated with symbol. */ 489272651Sbapt#if ! defined YYDESTRUCT_IS_DECLARED 490272651Sbaptstatic void 491272651SbaptYYDESTRUCT_DECL() 492272651Sbapt{ 493272651Sbapt switch (psymb) 494272651Sbapt { 495272651Sbapt case 263: 496272651Sbapt#line 44 "btyacc_destroy3.y" 497272651Sbapt { 498272651Sbapt namelist *p = (*val).nlist; 499272651Sbapt while (p != NULL) 500272651Sbapt { namelist *pp = p; 501272651Sbapt p = p->next; 502272651Sbapt free(pp->s); free(pp); 503272651Sbapt } 504272651Sbapt } 505272651Sbapt break; 506272651Sbapt#line 507 "btyacc_destroy3.tab.c" 507272651Sbapt } 508272651Sbapt} 509272651Sbapt#define YYDESTRUCT_IS_DECLARED 1 510272651Sbapt#endif 511272651Sbapt 512272651Sbapt/* For use in generated program */ 513272651Sbapt#define yydepth (int)(yystack.s_mark - yystack.s_base) 514272651Sbapt#if YYBTYACC 515272651Sbapt#define yytrial (yyps->save) 516272651Sbapt#endif /* YYBTYACC */ 517272651Sbapt 518272651Sbapt#if YYDEBUG 519272651Sbapt#include <stdio.h> /* needed for printf */ 520272651Sbapt#endif 521272651Sbapt 522272651Sbapt#include <stdlib.h> /* needed for malloc, etc */ 523272651Sbapt#include <string.h> /* needed for memset */ 524272651Sbapt 525272651Sbapt/* allocate initial stack or double stack size, up to YYMAXDEPTH */ 526272651Sbaptstatic int yygrowstack(YYSTACKDATA *data) 527272651Sbapt{ 528272651Sbapt int i; 529272651Sbapt unsigned newsize; 530272651Sbapt short *newss; 531272651Sbapt YYSTYPE *newvs; 532272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 533272651Sbapt YYLTYPE *newps; 534272651Sbapt#endif 535272651Sbapt 536272651Sbapt if ((newsize = data->stacksize) == 0) 537272651Sbapt newsize = YYINITSTACKSIZE; 538272651Sbapt else if (newsize >= YYMAXDEPTH) 539272651Sbapt return YYENOMEM; 540272651Sbapt else if ((newsize *= 2) > YYMAXDEPTH) 541272651Sbapt newsize = YYMAXDEPTH; 542272651Sbapt 543272651Sbapt i = (int) (data->s_mark - data->s_base); 544272651Sbapt newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); 545272651Sbapt if (newss == 0) 546272651Sbapt return YYENOMEM; 547272651Sbapt 548272651Sbapt data->s_base = newss; 549272651Sbapt data->s_mark = newss + i; 550272651Sbapt 551272651Sbapt newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); 552272651Sbapt if (newvs == 0) 553272651Sbapt return YYENOMEM; 554272651Sbapt 555272651Sbapt data->l_base = newvs; 556272651Sbapt data->l_mark = newvs + i; 557272651Sbapt 558272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 559272651Sbapt newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps)); 560272651Sbapt if (newps == 0) 561272651Sbapt return YYENOMEM; 562272651Sbapt 563272651Sbapt data->p_base = newps; 564272651Sbapt data->p_mark = newps + i; 565272651Sbapt#endif 566272651Sbapt 567272651Sbapt data->stacksize = newsize; 568272651Sbapt data->s_last = data->s_base + newsize - 1; 569272651Sbapt 570272651Sbapt#if YYDEBUG 571272651Sbapt if (yydebug) 572272651Sbapt fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize); 573272651Sbapt#endif 574272651Sbapt return 0; 575272651Sbapt} 576272651Sbapt 577272651Sbapt#if YYPURE || defined(YY_NO_LEAKS) 578272651Sbaptstatic void yyfreestack(YYSTACKDATA *data) 579272651Sbapt{ 580272651Sbapt free(data->s_base); 581272651Sbapt free(data->l_base); 582272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 583272651Sbapt free(data->p_base); 584272651Sbapt#endif 585272651Sbapt memset(data, 0, sizeof(*data)); 586272651Sbapt} 587272651Sbapt#else 588272651Sbapt#define yyfreestack(data) /* nothing */ 589272651Sbapt#endif /* YYPURE || defined(YY_NO_LEAKS) */ 590272651Sbapt#if YYBTYACC 591272651Sbapt 592272651Sbaptstatic YYParseState * 593272651SbaptyyNewState(unsigned size) 594272651Sbapt{ 595272651Sbapt YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState)); 596272651Sbapt if (p == NULL) return NULL; 597272651Sbapt 598272651Sbapt p->yystack.stacksize = size; 599272651Sbapt if (size == 0) 600272651Sbapt { 601272651Sbapt p->yystack.s_base = NULL; 602272651Sbapt p->yystack.l_base = NULL; 603272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 604272651Sbapt p->yystack.p_base = NULL; 605272651Sbapt#endif 606272651Sbapt return p; 607272651Sbapt } 608272651Sbapt p->yystack.s_base = (short *) malloc(size * sizeof(short)); 609272651Sbapt if (p->yystack.s_base == NULL) return NULL; 610272651Sbapt p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); 611272651Sbapt if (p->yystack.l_base == NULL) return NULL; 612272651Sbapt memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE)); 613272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 614272651Sbapt p->yystack.p_base = (YYLTYPE *) malloc(size * sizeof(YYLTYPE)); 615272651Sbapt if (p->yystack.p_base == NULL) return NULL; 616272651Sbapt memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE)); 617272651Sbapt#endif 618272651Sbapt 619272651Sbapt return p; 620272651Sbapt} 621272651Sbapt 622272651Sbaptstatic void 623272651SbaptyyFreeState(YYParseState *p) 624272651Sbapt{ 625272651Sbapt yyfreestack(&p->yystack); 626272651Sbapt free(p); 627272651Sbapt} 628272651Sbapt#endif /* YYBTYACC */ 629272651Sbapt 630272651Sbapt#define YYABORT goto yyabort 631272651Sbapt#define YYREJECT goto yyabort 632272651Sbapt#define YYACCEPT goto yyaccept 633272651Sbapt#define YYERROR goto yyerrlab 634272651Sbapt#if YYBTYACC 635272651Sbapt#define YYVALID do { if (yyps->save) goto yyvalid; } while(0) 636272651Sbapt#define YYVALID_NESTED do { if (yyps->save && \ 637272651Sbapt yyps->save->save == 0) goto yyvalid; } while(0) 638272651Sbapt#endif /* YYBTYACC */ 639272651Sbapt 640272651Sbaptint 641272651SbaptYYPARSE_DECL() 642272651Sbapt{ 643272651Sbapt int yym, yyn, yystate, yyresult; 644272651Sbapt#if YYBTYACC 645272651Sbapt int yynewerrflag; 646272651Sbapt YYParseState *yyerrctx = NULL; 647272651Sbapt#endif /* YYBTYACC */ 648272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 649272651Sbapt YYLTYPE yyerror_loc_range[2]; /* position of error start & end */ 650272651Sbapt#endif 651272651Sbapt#if YYDEBUG 652272651Sbapt const char *yys; 653272651Sbapt 654272651Sbapt if ((yys = getenv("YYDEBUG")) != 0) 655272651Sbapt { 656272651Sbapt yyn = *yys; 657272651Sbapt if (yyn >= '0' && yyn <= '9') 658272651Sbapt yydebug = yyn - '0'; 659272651Sbapt } 660272651Sbapt if (yydebug) 661272651Sbapt fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX); 662272651Sbapt#endif 663272651Sbapt 664272651Sbapt#if YYBTYACC 665272651Sbapt yyps = yyNewState(0); if (yyps == 0) goto yyenomem; 666272651Sbapt yyps->save = 0; 667272651Sbapt#endif /* YYBTYACC */ 668272651Sbapt yynerrs = 0; 669272651Sbapt yyerrflag = 0; 670272651Sbapt yychar = YYEMPTY; 671272651Sbapt yystate = 0; 672272651Sbapt 673272651Sbapt#if YYPURE 674272651Sbapt memset(&yystack, 0, sizeof(yystack)); 675272651Sbapt#endif 676272651Sbapt 677272651Sbapt if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 678272651Sbapt yystack.s_mark = yystack.s_base; 679272651Sbapt yystack.l_mark = yystack.l_base; 680272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 681272651Sbapt yystack.p_mark = yystack.p_base; 682272651Sbapt#endif 683272651Sbapt yystate = 0; 684272651Sbapt *yystack.s_mark = 0; 685272651Sbapt 686272651Sbaptyyloop: 687272651Sbapt if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 688272651Sbapt if (yychar < 0) 689272651Sbapt { 690272651Sbapt#if YYBTYACC 691272651Sbapt do { 692272651Sbapt if (yylvp < yylve) 693272651Sbapt { 694272651Sbapt /* we're currently re-reading tokens */ 695272651Sbapt yylval = *yylvp++; 696272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 697272651Sbapt yylloc = *yylpp++; 698272651Sbapt#endif 699272651Sbapt yychar = *yylexp++; 700272651Sbapt break; 701272651Sbapt } 702272651Sbapt if (yyps->save) 703272651Sbapt { 704272651Sbapt /* in trial mode; save scanner results for future parse attempts */ 705272651Sbapt if (yylvp == yylvlim) 706272651Sbapt { /* Enlarge lexical value queue */ 707272651Sbapt size_t p = (size_t) (yylvp - yylvals); 708272651Sbapt size_t s = (size_t) (yylvlim - yylvals); 709272651Sbapt 710272651Sbapt s += YYLVQUEUEGROWTH; 711272651Sbapt if ((yylexemes = (short *) realloc(yylexemes, s * sizeof(short))) == NULL) goto yyenomem; 712272651Sbapt if ((yylvals = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem; 713272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 714272651Sbapt if ((yylpsns = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem; 715272651Sbapt#endif 716272651Sbapt yylvp = yylve = yylvals + p; 717272651Sbapt yylvlim = yylvals + s; 718272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 719272651Sbapt yylpp = yylpe = yylpsns + p; 720272651Sbapt yylplim = yylpsns + s; 721272651Sbapt#endif 722272651Sbapt yylexp = yylexemes + p; 723272651Sbapt } 724272651Sbapt *yylexp = (short) YYLEX; 725272651Sbapt *yylvp++ = yylval; 726272651Sbapt yylve++; 727272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 728272651Sbapt *yylpp++ = yylloc; 729272651Sbapt yylpe++; 730272651Sbapt#endif 731272651Sbapt yychar = *yylexp++; 732272651Sbapt break; 733272651Sbapt } 734272651Sbapt /* normal operation, no conflict encountered */ 735272651Sbapt#endif /* YYBTYACC */ 736272651Sbapt yychar = YYLEX; 737272651Sbapt#if YYBTYACC 738272651Sbapt } while (0); 739272651Sbapt#endif /* YYBTYACC */ 740272651Sbapt if (yychar < 0) yychar = YYEOF; 741272651Sbapt /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ 742272651Sbapt#if YYDEBUG 743272651Sbapt if (yydebug) 744272651Sbapt { 745272651Sbapt yys = yyname[YYTRANSLATE(yychar)]; 746272651Sbapt fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", 747272651Sbapt YYDEBUGSTR, yydepth, yystate, yychar, yys); 748272651Sbapt#ifdef YYSTYPE_TOSTRING 749272651Sbapt#if YYBTYACC 750272651Sbapt if (!yytrial) 751272651Sbapt#endif /* YYBTYACC */ 752272651Sbapt fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval)); 753272651Sbapt#endif 754272651Sbapt fputc('\n', stderr); 755272651Sbapt } 756272651Sbapt#endif 757272651Sbapt } 758272651Sbapt#if YYBTYACC 759272651Sbapt 760272651Sbapt /* Do we have a conflict? */ 761272651Sbapt if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 && 762272651Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 763272651Sbapt { 764272651Sbapt YYINT ctry; 765272651Sbapt 766272651Sbapt if (yypath) 767272651Sbapt { 768272651Sbapt YYParseState *save; 769272651Sbapt#if YYDEBUG 770272651Sbapt if (yydebug) 771272651Sbapt fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n", 772272651Sbapt YYDEBUGSTR, yydepth, yystate); 773272651Sbapt#endif 774272651Sbapt /* Switch to the next conflict context */ 775272651Sbapt save = yypath; 776272651Sbapt yypath = save->save; 777272651Sbapt save->save = NULL; 778272651Sbapt ctry = save->ctry; 779272651Sbapt if (save->state != yystate) YYABORT; 780272651Sbapt yyFreeState(save); 781272651Sbapt 782272651Sbapt } 783272651Sbapt else 784272651Sbapt { 785272651Sbapt 786272651Sbapt /* Unresolved conflict - start/continue trial parse */ 787272651Sbapt YYParseState *save; 788272651Sbapt#if YYDEBUG 789272651Sbapt if (yydebug) 790272651Sbapt { 791272651Sbapt fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate); 792272651Sbapt if (yyps->save) 793272651Sbapt fputs("ALREADY in conflict, continuing trial parse.\n", stderr); 794272651Sbapt else 795272651Sbapt fputs("Starting trial parse.\n", stderr); 796272651Sbapt } 797272651Sbapt#endif 798272651Sbapt save = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1)); 799272651Sbapt if (save == NULL) goto yyenomem; 800272651Sbapt save->save = yyps->save; 801272651Sbapt save->state = yystate; 802272651Sbapt save->errflag = yyerrflag; 803272651Sbapt save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); 804272651Sbapt memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); 805272651Sbapt save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); 806272651Sbapt memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 807272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 808272651Sbapt save->yystack.p_mark = save->yystack.p_base + (yystack.p_mark - yystack.p_base); 809272651Sbapt memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 810272651Sbapt#endif 811272651Sbapt ctry = yytable[yyn]; 812272651Sbapt if (yyctable[ctry] == -1) 813272651Sbapt { 814272651Sbapt#if YYDEBUG 815272651Sbapt if (yydebug && yychar >= YYEOF) 816272651Sbapt fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth); 817272651Sbapt#endif 818272651Sbapt ctry++; 819272651Sbapt } 820272651Sbapt save->ctry = ctry; 821272651Sbapt if (yyps->save == NULL) 822272651Sbapt { 823272651Sbapt /* If this is a first conflict in the stack, start saving lexemes */ 824272651Sbapt if (!yylexemes) 825272651Sbapt { 826272651Sbapt yylexemes = (short *) malloc((YYLVQUEUEGROWTH) * sizeof(short)); 827272651Sbapt if (yylexemes == NULL) goto yyenomem; 828272651Sbapt yylvals = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE)); 829272651Sbapt if (yylvals == NULL) goto yyenomem; 830272651Sbapt yylvlim = yylvals + YYLVQUEUEGROWTH; 831272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 832272651Sbapt yylpsns = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE)); 833272651Sbapt if (yylpsns == NULL) goto yyenomem; 834272651Sbapt yylplim = yylpsns + YYLVQUEUEGROWTH; 835272651Sbapt#endif 836272651Sbapt } 837272651Sbapt if (yylvp == yylve) 838272651Sbapt { 839272651Sbapt yylvp = yylve = yylvals; 840272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 841272651Sbapt yylpp = yylpe = yylpsns; 842272651Sbapt#endif 843272651Sbapt yylexp = yylexemes; 844272651Sbapt if (yychar >= YYEOF) 845272651Sbapt { 846272651Sbapt *yylve++ = yylval; 847272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 848272651Sbapt *yylpe++ = yylloc; 849272651Sbapt#endif 850272651Sbapt *yylexp = (short) yychar; 851272651Sbapt yychar = YYEMPTY; 852272651Sbapt } 853272651Sbapt } 854272651Sbapt } 855272651Sbapt if (yychar >= YYEOF) 856272651Sbapt { 857272651Sbapt yylvp--; 858272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 859272651Sbapt yylpp--; 860272651Sbapt#endif 861272651Sbapt yylexp--; 862272651Sbapt yychar = YYEMPTY; 863272651Sbapt } 864272651Sbapt save->lexeme = (int) (yylvp - yylvals); 865272651Sbapt yyps->save = save; 866272651Sbapt } 867272651Sbapt if (yytable[yyn] == ctry) 868272651Sbapt { 869272651Sbapt#if YYDEBUG 870272651Sbapt if (yydebug) 871272651Sbapt fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", 872272651Sbapt YYDEBUGSTR, yydepth, yystate, yyctable[ctry]); 873272651Sbapt#endif 874272651Sbapt if (yychar < 0) 875272651Sbapt { 876272651Sbapt yylvp++; 877272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 878272651Sbapt yylpp++; 879272651Sbapt#endif 880272651Sbapt yylexp++; 881272651Sbapt } 882272651Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 883272651Sbapt goto yyoverflow; 884272651Sbapt yystate = yyctable[ctry]; 885272651Sbapt *++yystack.s_mark = (short) yystate; 886272651Sbapt *++yystack.l_mark = yylval; 887272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 888272651Sbapt *++yystack.p_mark = yylloc; 889272651Sbapt#endif 890272651Sbapt yychar = YYEMPTY; 891272651Sbapt if (yyerrflag > 0) --yyerrflag; 892272651Sbapt goto yyloop; 893272651Sbapt } 894272651Sbapt else 895272651Sbapt { 896272651Sbapt yyn = yyctable[ctry]; 897272651Sbapt goto yyreduce; 898272651Sbapt } 899272651Sbapt } /* End of code dealing with conflicts */ 900272651Sbapt#endif /* YYBTYACC */ 901272651Sbapt if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && 902272651Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 903272651Sbapt { 904272651Sbapt#if YYDEBUG 905272651Sbapt if (yydebug) 906272651Sbapt fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", 907272651Sbapt YYDEBUGSTR, yydepth, yystate, yytable[yyn]); 908272651Sbapt#endif 909272651Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 910272651Sbapt yystate = yytable[yyn]; 911272651Sbapt *++yystack.s_mark = yytable[yyn]; 912272651Sbapt *++yystack.l_mark = yylval; 913272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 914272651Sbapt *++yystack.p_mark = yylloc; 915272651Sbapt#endif 916272651Sbapt yychar = YYEMPTY; 917272651Sbapt if (yyerrflag > 0) --yyerrflag; 918272651Sbapt goto yyloop; 919272651Sbapt } 920272651Sbapt if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && 921272651Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 922272651Sbapt { 923272651Sbapt yyn = yytable[yyn]; 924272651Sbapt goto yyreduce; 925272651Sbapt } 926272651Sbapt if (yyerrflag != 0) goto yyinrecovery; 927272651Sbapt#if YYBTYACC 928272651Sbapt 929272651Sbapt yynewerrflag = 1; 930272651Sbapt goto yyerrhandler; 931272651Sbapt goto yyerrlab; 932272651Sbapt 933272651Sbaptyyerrlab: 934272651Sbapt yynewerrflag = 0; 935272651Sbaptyyerrhandler: 936272651Sbapt while (yyps->save) 937272651Sbapt { 938272651Sbapt int ctry; 939272651Sbapt YYParseState *save = yyps->save; 940272651Sbapt#if YYDEBUG 941272651Sbapt if (yydebug) 942272651Sbapt fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n", 943272651Sbapt YYDEBUGSTR, yydepth, yystate, yyps->save->state, 944272651Sbapt (int)(yylvp - yylvals - yyps->save->lexeme)); 945272651Sbapt#endif 946272651Sbapt /* Memorize most forward-looking error state in case it's really an error. */ 947272651Sbapt if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals) 948272651Sbapt { 949272651Sbapt /* Free old saved error context state */ 950272651Sbapt if (yyerrctx) yyFreeState(yyerrctx); 951272651Sbapt /* Create and fill out new saved error context state */ 952272651Sbapt yyerrctx = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1)); 953272651Sbapt if (yyerrctx == NULL) goto yyenomem; 954272651Sbapt yyerrctx->save = yyps->save; 955272651Sbapt yyerrctx->state = yystate; 956272651Sbapt yyerrctx->errflag = yyerrflag; 957272651Sbapt yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); 958272651Sbapt memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); 959272651Sbapt yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); 960272651Sbapt memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 961272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 962272651Sbapt yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base); 963272651Sbapt memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 964272651Sbapt#endif 965272651Sbapt yyerrctx->lexeme = (int) (yylvp - yylvals); 966272651Sbapt } 967272651Sbapt yylvp = yylvals + save->lexeme; 968272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 969272651Sbapt yylpp = yylpsns + save->lexeme; 970272651Sbapt#endif 971272651Sbapt yylexp = yylexemes + save->lexeme; 972272651Sbapt yychar = YYEMPTY; 973272651Sbapt yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); 974272651Sbapt memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); 975272651Sbapt yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); 976272651Sbapt memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 977272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 978272651Sbapt yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base); 979272651Sbapt memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 980272651Sbapt#endif 981272651Sbapt ctry = ++save->ctry; 982272651Sbapt yystate = save->state; 983272651Sbapt /* We tried shift, try reduce now */ 984272651Sbapt if ((yyn = yyctable[ctry]) >= 0) goto yyreduce; 985272651Sbapt yyps->save = save->save; 986272651Sbapt save->save = NULL; 987272651Sbapt yyFreeState(save); 988272651Sbapt 989272651Sbapt /* Nothing left on the stack -- error */ 990272651Sbapt if (!yyps->save) 991272651Sbapt { 992272651Sbapt#if YYDEBUG 993272651Sbapt if (yydebug) 994272651Sbapt fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n", 995272651Sbapt YYPREFIX, yydepth); 996272651Sbapt#endif 997272651Sbapt /* Restore state as it was in the most forward-advanced error */ 998272651Sbapt yylvp = yylvals + yyerrctx->lexeme; 999272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1000272651Sbapt yylpp = yylpsns + yyerrctx->lexeme; 1001272651Sbapt#endif 1002272651Sbapt yylexp = yylexemes + yyerrctx->lexeme; 1003272651Sbapt yychar = yylexp[-1]; 1004272651Sbapt yylval = yylvp[-1]; 1005272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1006272651Sbapt yylloc = yylpp[-1]; 1007272651Sbapt#endif 1008272651Sbapt yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); 1009272651Sbapt memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); 1010272651Sbapt yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); 1011272651Sbapt memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1012272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1013272651Sbapt yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base); 1014272651Sbapt memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1015272651Sbapt#endif 1016272651Sbapt yystate = yyerrctx->state; 1017272651Sbapt yyFreeState(yyerrctx); 1018272651Sbapt yyerrctx = NULL; 1019272651Sbapt } 1020272651Sbapt yynewerrflag = 1; 1021272651Sbapt } 1022272651Sbapt if (yynewerrflag == 0) goto yyinrecovery; 1023272651Sbapt#endif /* YYBTYACC */ 1024272651Sbapt 1025272651Sbapt YYERROR_CALL("syntax error"); 1026272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1027272651Sbapt yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */ 1028272651Sbapt#endif 1029272651Sbapt 1030272651Sbapt#if !YYBTYACC 1031272651Sbapt goto yyerrlab; 1032272651Sbaptyyerrlab: 1033272651Sbapt#endif 1034272651Sbapt ++yynerrs; 1035272651Sbapt 1036272651Sbaptyyinrecovery: 1037272651Sbapt if (yyerrflag < 3) 1038272651Sbapt { 1039272651Sbapt yyerrflag = 3; 1040272651Sbapt for (;;) 1041272651Sbapt { 1042272651Sbapt if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && 1043272651Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) 1044272651Sbapt { 1045272651Sbapt#if YYDEBUG 1046272651Sbapt if (yydebug) 1047272651Sbapt fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n", 1048272651Sbapt YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]); 1049272651Sbapt#endif 1050272651Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 1051272651Sbapt yystate = yytable[yyn]; 1052272651Sbapt *++yystack.s_mark = yytable[yyn]; 1053272651Sbapt *++yystack.l_mark = yylval; 1054272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1055272651Sbapt /* lookahead position is error end position */ 1056272651Sbapt yyerror_loc_range[1] = yylloc; 1057272651Sbapt YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */ 1058272651Sbapt *++yystack.p_mark = yyloc; 1059272651Sbapt#endif 1060272651Sbapt goto yyloop; 1061272651Sbapt } 1062272651Sbapt else 1063272651Sbapt { 1064272651Sbapt#if YYDEBUG 1065272651Sbapt if (yydebug) 1066272651Sbapt fprintf(stderr, "%s[%d]: error recovery discarding state %d\n", 1067272651Sbapt YYDEBUGSTR, yydepth, *yystack.s_mark); 1068272651Sbapt#endif 1069272651Sbapt if (yystack.s_mark <= yystack.s_base) goto yyabort; 1070272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1071272651Sbapt /* the current TOS position is the error start position */ 1072272651Sbapt yyerror_loc_range[0] = *yystack.p_mark; 1073272651Sbapt#endif 1074272651Sbapt#if defined(YYDESTRUCT_CALL) 1075272651Sbapt#if YYBTYACC 1076272651Sbapt if (!yytrial) 1077272651Sbapt#endif /* YYBTYACC */ 1078272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1079272651Sbapt YYDESTRUCT_CALL("error: discarding state", 1080272651Sbapt yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark); 1081272651Sbapt#else 1082272651Sbapt YYDESTRUCT_CALL("error: discarding state", 1083272651Sbapt yystos[*yystack.s_mark], yystack.l_mark); 1084272651Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1085272651Sbapt#endif /* defined(YYDESTRUCT_CALL) */ 1086272651Sbapt --yystack.s_mark; 1087272651Sbapt --yystack.l_mark; 1088272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1089272651Sbapt --yystack.p_mark; 1090272651Sbapt#endif 1091272651Sbapt } 1092272651Sbapt } 1093272651Sbapt } 1094272651Sbapt else 1095272651Sbapt { 1096272651Sbapt if (yychar == YYEOF) goto yyabort; 1097272651Sbapt#if YYDEBUG 1098272651Sbapt if (yydebug) 1099272651Sbapt { 1100272651Sbapt yys = yyname[YYTRANSLATE(yychar)]; 1101272651Sbapt fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", 1102272651Sbapt YYDEBUGSTR, yydepth, yystate, yychar, yys); 1103272651Sbapt } 1104272651Sbapt#endif 1105272651Sbapt#if defined(YYDESTRUCT_CALL) 1106272651Sbapt#if YYBTYACC 1107272651Sbapt if (!yytrial) 1108272651Sbapt#endif /* YYBTYACC */ 1109272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1110272651Sbapt YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc); 1111272651Sbapt#else 1112272651Sbapt YYDESTRUCT_CALL("error: discarding token", yychar, &yylval); 1113272651Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1114272651Sbapt#endif /* defined(YYDESTRUCT_CALL) */ 1115272651Sbapt yychar = YYEMPTY; 1116272651Sbapt goto yyloop; 1117272651Sbapt } 1118272651Sbapt 1119272651Sbaptyyreduce: 1120272651Sbapt yym = yylen[yyn]; 1121272651Sbapt#if YYDEBUG 1122272651Sbapt if (yydebug) 1123272651Sbapt { 1124272651Sbapt fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)", 1125272651Sbapt YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]); 1126272651Sbapt#ifdef YYSTYPE_TOSTRING 1127272651Sbapt#if YYBTYACC 1128272651Sbapt if (!yytrial) 1129272651Sbapt#endif /* YYBTYACC */ 1130272651Sbapt if (yym > 0) 1131272651Sbapt { 1132272651Sbapt int i; 1133272651Sbapt fputc('<', stderr); 1134272651Sbapt for (i = yym; i > 0; i--) 1135272651Sbapt { 1136272651Sbapt if (i != yym) fputs(", ", stderr); 1137272651Sbapt fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]], 1138272651Sbapt yystack.l_mark[1-i]), stderr); 1139272651Sbapt } 1140272651Sbapt fputc('>', stderr); 1141272651Sbapt } 1142272651Sbapt#endif 1143272651Sbapt fputc('\n', stderr); 1144272651Sbapt } 1145272651Sbapt#endif 1146272651Sbapt if (yym > 0) 1147272651Sbapt yyval = yystack.l_mark[1-yym]; 1148272651Sbapt else 1149272651Sbapt memset(&yyval, 0, sizeof yyval); 1150272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1151272651Sbapt 1152272651Sbapt /* Perform position reduction */ 1153272651Sbapt memset(&yyloc, 0, sizeof(yyloc)); 1154272651Sbapt#if YYBTYACC 1155272651Sbapt if (!yytrial) 1156272651Sbapt#endif /* YYBTYACC */ 1157272651Sbapt { 1158272651Sbapt YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym); 1159272651Sbapt /* just in case YYERROR is invoked within the action, save 1160272651Sbapt the start of the rhs as the error start position */ 1161272651Sbapt yyerror_loc_range[0] = yystack.p_mark[1-yym]; 1162272651Sbapt } 1163272651Sbapt#endif 1164272651Sbapt 1165272651Sbapt switch (yyn) 1166272651Sbapt { 1167272651Sbaptcase 1: 1168272651Sbapt if (!yytrial) 1169272651Sbapt#line 65 "btyacc_destroy3.y" 1170272651Sbapt { yyval.nlist = yystack.l_mark[-5].nlist; } 1171272651Sbaptbreak; 1172272651Sbaptcase 2: 1173272651Sbapt if (!yytrial) 1174272651Sbapt#line 67 "btyacc_destroy3.y" 1175272651Sbapt { yyval.nlist = yystack.l_mark[-3].nlist; } 1176272651Sbaptbreak; 1177272651Sbaptcase 3: 1178272651Sbapt if (!yytrial) 1179272651Sbapt#line 70 "btyacc_destroy3.y" 1180272651Sbapt { yyval.cval = cGLOBAL; } 1181272651Sbaptbreak; 1182272651Sbaptcase 4: 1183272651Sbapt if (!yytrial) 1184272651Sbapt#line 71 "btyacc_destroy3.y" 1185272651Sbapt { yyval.cval = cLOCAL; } 1186272651Sbaptbreak; 1187272651Sbaptcase 5: 1188272651Sbapt if (!yytrial) 1189272651Sbapt#line 74 "btyacc_destroy3.y" 1190272651Sbapt { yyval.tval = tREAL; } 1191272651Sbaptbreak; 1192272651Sbaptcase 6: 1193272651Sbapt if (!yytrial) 1194272651Sbapt#line 75 "btyacc_destroy3.y" 1195272651Sbapt { yyval.tval = tINTEGER; } 1196272651Sbaptbreak; 1197272651Sbaptcase 7: 1198272651Sbapt if (!yytrial) 1199272651Sbapt#line 79 "btyacc_destroy3.y" 1200272651Sbapt { yyval.nlist->s = mksymbol(yystack.l_mark[-2].tval, yystack.l_mark[-2].cval, yystack.l_mark[0].id); 1201272651Sbapt yyval.nlist->next = yystack.l_mark[-1].nlist; 1202272651Sbapt } 1203272651Sbaptbreak; 1204272651Sbaptcase 8: 1205272651Sbapt if (!yytrial) 1206272651Sbapt#line 83 "btyacc_destroy3.y" 1207272651Sbapt { yyval.nlist->s = mksymbol(0, 0, yystack.l_mark[0].id); 1208272651Sbapt yyval.nlist->next = NULL; 1209272651Sbapt } 1210272651Sbaptbreak; 1211272651Sbaptcase 9: 1212272651Sbapt if (!yytrial) 1213272651Sbapt#line 89 "btyacc_destroy3.y" 1214272651Sbapt { yyval.nlist = yystack.l_mark[-5].nlist; } 1215272651Sbaptbreak; 1216272651Sbapt#line 1217 "btyacc_destroy3.tab.c" 1217272651Sbapt default: 1218272651Sbapt break; 1219272651Sbapt } 1220272651Sbapt yystack.s_mark -= yym; 1221272651Sbapt yystate = *yystack.s_mark; 1222272651Sbapt yystack.l_mark -= yym; 1223272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1224272651Sbapt yystack.p_mark -= yym; 1225272651Sbapt#endif 1226272651Sbapt yym = yylhs[yyn]; 1227272651Sbapt if (yystate == 0 && yym == 0) 1228272651Sbapt { 1229272651Sbapt#if YYDEBUG 1230272651Sbapt if (yydebug) 1231272651Sbapt { 1232272651Sbapt fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth); 1233272651Sbapt#ifdef YYSTYPE_TOSTRING 1234272651Sbapt#if YYBTYACC 1235272651Sbapt if (!yytrial) 1236272651Sbapt#endif /* YYBTYACC */ 1237272651Sbapt fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval)); 1238272651Sbapt#endif 1239272651Sbapt fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL); 1240272651Sbapt } 1241272651Sbapt#endif 1242272651Sbapt yystate = YYFINAL; 1243272651Sbapt *++yystack.s_mark = YYFINAL; 1244272651Sbapt *++yystack.l_mark = yyval; 1245272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1246272651Sbapt *++yystack.p_mark = yyloc; 1247272651Sbapt#endif 1248272651Sbapt if (yychar < 0) 1249272651Sbapt { 1250272651Sbapt#if YYBTYACC 1251272651Sbapt do { 1252272651Sbapt if (yylvp < yylve) 1253272651Sbapt { 1254272651Sbapt /* we're currently re-reading tokens */ 1255272651Sbapt yylval = *yylvp++; 1256272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1257272651Sbapt yylloc = *yylpp++; 1258272651Sbapt#endif 1259272651Sbapt yychar = *yylexp++; 1260272651Sbapt break; 1261272651Sbapt } 1262272651Sbapt if (yyps->save) 1263272651Sbapt { 1264272651Sbapt /* in trial mode; save scanner results for future parse attempts */ 1265272651Sbapt if (yylvp == yylvlim) 1266272651Sbapt { /* Enlarge lexical value queue */ 1267272651Sbapt size_t p = (size_t) (yylvp - yylvals); 1268272651Sbapt size_t s = (size_t) (yylvlim - yylvals); 1269272651Sbapt 1270272651Sbapt s += YYLVQUEUEGROWTH; 1271272651Sbapt if ((yylexemes = (short *) realloc(yylexemes, s * sizeof(short))) == NULL) 1272272651Sbapt goto yyenomem; 1273272651Sbapt if ((yylvals = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) 1274272651Sbapt goto yyenomem; 1275272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1276272651Sbapt if ((yylpsns = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) 1277272651Sbapt goto yyenomem; 1278272651Sbapt#endif 1279272651Sbapt yylvp = yylve = yylvals + p; 1280272651Sbapt yylvlim = yylvals + s; 1281272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1282272651Sbapt yylpp = yylpe = yylpsns + p; 1283272651Sbapt yylplim = yylpsns + s; 1284272651Sbapt#endif 1285272651Sbapt yylexp = yylexemes + p; 1286272651Sbapt } 1287272651Sbapt *yylexp = (short) YYLEX; 1288272651Sbapt *yylvp++ = yylval; 1289272651Sbapt yylve++; 1290272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1291272651Sbapt *yylpp++ = yylloc; 1292272651Sbapt yylpe++; 1293272651Sbapt#endif 1294272651Sbapt yychar = *yylexp++; 1295272651Sbapt break; 1296272651Sbapt } 1297272651Sbapt /* normal operation, no conflict encountered */ 1298272651Sbapt#endif /* YYBTYACC */ 1299272651Sbapt yychar = YYLEX; 1300272651Sbapt#if YYBTYACC 1301272651Sbapt } while (0); 1302272651Sbapt#endif /* YYBTYACC */ 1303272651Sbapt if (yychar < 0) yychar = YYEOF; 1304272651Sbapt /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ 1305272651Sbapt#if YYDEBUG 1306272651Sbapt if (yydebug) 1307272651Sbapt { 1308272651Sbapt yys = yyname[YYTRANSLATE(yychar)]; 1309272651Sbapt fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", 1310272651Sbapt YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); 1311272651Sbapt } 1312272651Sbapt#endif 1313272651Sbapt } 1314272651Sbapt if (yychar == YYEOF) goto yyaccept; 1315272651Sbapt goto yyloop; 1316272651Sbapt } 1317272651Sbapt if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && 1318272651Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) 1319272651Sbapt yystate = yytable[yyn]; 1320272651Sbapt else 1321272651Sbapt yystate = yydgoto[yym]; 1322272651Sbapt#if YYDEBUG 1323272651Sbapt if (yydebug) 1324272651Sbapt { 1325272651Sbapt fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth); 1326272651Sbapt#ifdef YYSTYPE_TOSTRING 1327272651Sbapt#if YYBTYACC 1328272651Sbapt if (!yytrial) 1329272651Sbapt#endif /* YYBTYACC */ 1330272651Sbapt fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval)); 1331272651Sbapt#endif 1332272651Sbapt fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate); 1333272651Sbapt } 1334272651Sbapt#endif 1335272651Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 1336272651Sbapt *++yystack.s_mark = (short) yystate; 1337272651Sbapt *++yystack.l_mark = yyval; 1338272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1339272651Sbapt *++yystack.p_mark = yyloc; 1340272651Sbapt#endif 1341272651Sbapt goto yyloop; 1342272651Sbapt#if YYBTYACC 1343272651Sbapt 1344272651Sbapt /* Reduction declares that this path is valid. Set yypath and do a full parse */ 1345272651Sbaptyyvalid: 1346272651Sbapt if (yypath) YYABORT; 1347272651Sbapt while (yyps->save) 1348272651Sbapt { 1349272651Sbapt YYParseState *save = yyps->save; 1350272651Sbapt yyps->save = save->save; 1351272651Sbapt save->save = yypath; 1352272651Sbapt yypath = save; 1353272651Sbapt } 1354272651Sbapt#if YYDEBUG 1355272651Sbapt if (yydebug) 1356272651Sbapt fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n", 1357272651Sbapt YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme)); 1358272651Sbapt#endif 1359272651Sbapt if (yyerrctx) 1360272651Sbapt { 1361272651Sbapt yyFreeState(yyerrctx); 1362272651Sbapt yyerrctx = NULL; 1363272651Sbapt } 1364272651Sbapt yylvp = yylvals + yypath->lexeme; 1365272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1366272651Sbapt yylpp = yylpsns + yypath->lexeme; 1367272651Sbapt#endif 1368272651Sbapt yylexp = yylexemes + yypath->lexeme; 1369272651Sbapt yychar = YYEMPTY; 1370272651Sbapt yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); 1371272651Sbapt memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); 1372272651Sbapt yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); 1373272651Sbapt memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1374272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1375272651Sbapt yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base); 1376272651Sbapt memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1377272651Sbapt#endif 1378272651Sbapt yystate = yypath->state; 1379272651Sbapt goto yyloop; 1380272651Sbapt#endif /* YYBTYACC */ 1381272651Sbapt 1382272651Sbaptyyoverflow: 1383272651Sbapt YYERROR_CALL("yacc stack overflow"); 1384272651Sbapt#if YYBTYACC 1385272651Sbapt goto yyabort_nomem; 1386272651Sbaptyyenomem: 1387272651Sbapt YYERROR_CALL("memory exhausted"); 1388272651Sbaptyyabort_nomem: 1389272651Sbapt#endif /* YYBTYACC */ 1390272651Sbapt yyresult = 2; 1391272651Sbapt goto yyreturn; 1392272651Sbapt 1393272651Sbaptyyabort: 1394272651Sbapt yyresult = 1; 1395272651Sbapt goto yyreturn; 1396272651Sbapt 1397272651Sbaptyyaccept: 1398272651Sbapt#if YYBTYACC 1399272651Sbapt if (yyps->save) goto yyvalid; 1400272651Sbapt#endif /* YYBTYACC */ 1401272651Sbapt yyresult = 0; 1402272651Sbapt 1403272651Sbaptyyreturn: 1404272651Sbapt#if defined(YYDESTRUCT_CALL) 1405272651Sbapt if (yychar != YYEOF && yychar != YYEMPTY) 1406272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1407272651Sbapt YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc); 1408272651Sbapt#else 1409272651Sbapt YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval); 1410272651Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1411272651Sbapt 1412272651Sbapt { 1413272651Sbapt YYSTYPE *pv; 1414272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1415272651Sbapt YYLTYPE *pp; 1416272651Sbapt 1417272651Sbapt for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp) 1418272651Sbapt YYDESTRUCT_CALL("cleanup: discarding state", 1419272651Sbapt yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp); 1420272651Sbapt#else 1421272651Sbapt for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv) 1422272651Sbapt YYDESTRUCT_CALL("cleanup: discarding state", 1423272651Sbapt yystos[*(yystack.s_base + (pv - yystack.l_base))], pv); 1424272651Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1425272651Sbapt } 1426272651Sbapt#endif /* defined(YYDESTRUCT_CALL) */ 1427272651Sbapt 1428272651Sbapt#if YYBTYACC 1429272651Sbapt if (yyerrctx) 1430272651Sbapt { 1431272651Sbapt yyFreeState(yyerrctx); 1432272651Sbapt yyerrctx = NULL; 1433272651Sbapt } 1434272651Sbapt while (yyps) 1435272651Sbapt { 1436272651Sbapt YYParseState *save = yyps; 1437272651Sbapt yyps = save->save; 1438272651Sbapt save->save = NULL; 1439272651Sbapt yyFreeState(save); 1440272651Sbapt } 1441272651Sbapt while (yypath) 1442272651Sbapt { 1443272651Sbapt YYParseState *save = yypath; 1444272651Sbapt yypath = save->save; 1445272651Sbapt save->save = NULL; 1446272651Sbapt yyFreeState(save); 1447272651Sbapt } 1448272651Sbapt#endif /* YYBTYACC */ 1449272651Sbapt yyfreestack(&yystack); 1450272651Sbapt return (yyresult); 1451272651Sbapt} 1452