1 1.5 christos /* $NetBSD: btyacc_destroy1.tab.c,v 1.7 2026/01/18 16:41:29 christos Exp $ */ 2 1.1 christos 3 1.1 christos /* original parser id follows */ 4 1.1 christos /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ 5 1.2 christos /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ 6 1.1 christos 7 1.1 christos #define YYBYACC 1 8 1.5 christos #define YYMAJOR 2 9 1.5 christos #define YYMINOR 0 10 1.1 christos #define YYCHECK "yyyymmdd" 11 1.1 christos 12 1.1 christos #define YYEMPTY (-1) 13 1.1 christos #define yyclearin (yychar = YYEMPTY) 14 1.1 christos #define yyerrok (yyerrflag = 0) 15 1.1 christos #define YYRECOVERING() (yyerrflag != 0) 16 1.1 christos #define YYENOMEM (-2) 17 1.1 christos #define YYEOF 0 18 1.1 christos #undef YYBTYACC 19 1.1 christos #define YYBTYACC 1 20 1.1 christos #define YYDEBUGSTR (yytrial ? YYPREFIX "debug(trial)" : YYPREFIX "debug") 21 1.1 christos 22 1.1 christos #ifndef yyparse 23 1.1 christos #define yyparse destroy1_parse 24 1.1 christos #endif /* yyparse */ 25 1.1 christos 26 1.1 christos #ifndef yylex 27 1.1 christos #define yylex destroy1_lex 28 1.1 christos #endif /* yylex */ 29 1.1 christos 30 1.1 christos #ifndef yyerror 31 1.1 christos #define yyerror destroy1_error 32 1.1 christos #endif /* yyerror */ 33 1.1 christos 34 1.1 christos #ifndef yychar 35 1.1 christos #define yychar destroy1_char 36 1.1 christos #endif /* yychar */ 37 1.1 christos 38 1.1 christos #ifndef yyval 39 1.1 christos #define yyval destroy1_val 40 1.1 christos #endif /* yyval */ 41 1.1 christos 42 1.1 christos #ifndef yylval 43 1.1 christos #define yylval destroy1_lval 44 1.1 christos #endif /* yylval */ 45 1.1 christos 46 1.1 christos #ifndef yydebug 47 1.1 christos #define yydebug destroy1_debug 48 1.1 christos #endif /* yydebug */ 49 1.1 christos 50 1.1 christos #ifndef yynerrs 51 1.1 christos #define yynerrs destroy1_nerrs 52 1.1 christos #endif /* yynerrs */ 53 1.1 christos 54 1.1 christos #ifndef yyerrflag 55 1.1 christos #define yyerrflag destroy1_errflag 56 1.1 christos #endif /* yyerrflag */ 57 1.1 christos 58 1.1 christos #ifndef yylhs 59 1.1 christos #define yylhs destroy1_lhs 60 1.1 christos #endif /* yylhs */ 61 1.1 christos 62 1.1 christos #ifndef yylen 63 1.1 christos #define yylen destroy1_len 64 1.1 christos #endif /* yylen */ 65 1.1 christos 66 1.1 christos #ifndef yydefred 67 1.1 christos #define yydefred destroy1_defred 68 1.1 christos #endif /* yydefred */ 69 1.1 christos 70 1.1 christos #ifndef yystos 71 1.1 christos #define yystos destroy1_stos 72 1.1 christos #endif /* yystos */ 73 1.1 christos 74 1.1 christos #ifndef yydgoto 75 1.1 christos #define yydgoto destroy1_dgoto 76 1.1 christos #endif /* yydgoto */ 77 1.1 christos 78 1.1 christos #ifndef yysindex 79 1.1 christos #define yysindex destroy1_sindex 80 1.1 christos #endif /* yysindex */ 81 1.1 christos 82 1.1 christos #ifndef yyrindex 83 1.1 christos #define yyrindex destroy1_rindex 84 1.1 christos #endif /* yyrindex */ 85 1.1 christos 86 1.1 christos #ifndef yygindex 87 1.1 christos #define yygindex destroy1_gindex 88 1.1 christos #endif /* yygindex */ 89 1.1 christos 90 1.1 christos #ifndef yytable 91 1.1 christos #define yytable destroy1_table 92 1.1 christos #endif /* yytable */ 93 1.1 christos 94 1.1 christos #ifndef yycheck 95 1.1 christos #define yycheck destroy1_check 96 1.1 christos #endif /* yycheck */ 97 1.1 christos 98 1.1 christos #ifndef yyname 99 1.1 christos #define yyname destroy1_name 100 1.1 christos #endif /* yyname */ 101 1.1 christos 102 1.1 christos #ifndef yyrule 103 1.1 christos #define yyrule destroy1_rule 104 1.1 christos #endif /* yyrule */ 105 1.1 christos 106 1.1 christos #if YYBTYACC 107 1.1 christos 108 1.1 christos #ifndef yycindex 109 1.1 christos #define yycindex destroy1_cindex 110 1.1 christos #endif /* yycindex */ 111 1.1 christos 112 1.1 christos #ifndef yyctable 113 1.1 christos #define yyctable destroy1_ctable 114 1.1 christos #endif /* yyctable */ 115 1.1 christos 116 1.1 christos #endif /* YYBTYACC */ 117 1.1 christos 118 1.1 christos #define YYPREFIX "destroy1_" 119 1.1 christos 120 1.1 christos #define YYPURE 0 121 1.1 christos 122 1.1 christos #line 4 "btyacc_destroy1.y" 123 1.1 christos #include <stdlib.h> 124 1.1 christos 125 1.1 christos typedef enum {cGLOBAL, cLOCAL} class; 126 1.1 christos typedef enum {tREAL, tINTEGER} type; 127 1.1 christos typedef char * name; 128 1.1 christos 129 1.1 christos struct symbol { class c; type t; name id; }; 130 1.1 christos typedef struct symbol symbol; 131 1.1 christos 132 1.1 christos struct namelist { symbol *s; struct namelist *next; }; 133 1.1 christos typedef struct namelist namelist; 134 1.1 christos 135 1.1 christos struct parser_param { 136 1.1 christos int *rtrn; 137 1.1 christos symbol ss; 138 1.1 christos }; 139 1.1 christos 140 1.1 christos extern symbol *mksymbol(type t, class c, name id); 141 1.1 christos 142 1.1 christos #ifdef YYBISON 143 1.1 christos #define YYLEX_DECL() yylex(void) 144 1.1 christos #define YYERROR_DECL() yyerror(const char *s) 145 1.1 christos #endif 146 1.1 christos #ifdef YYSTYPE 147 1.1 christos #undef YYSTYPE_IS_DECLARED 148 1.1 christos #define YYSTYPE_IS_DECLARED 1 149 1.1 christos #endif 150 1.1 christos #ifndef YYSTYPE_IS_DECLARED 151 1.1 christos #define YYSTYPE_IS_DECLARED 1 152 1.2 christos #line 50 "btyacc_destroy1.y" 153 1.6 christos typedef union YYSTYPE 154 1.1 christos { 155 1.1 christos class cval; 156 1.1 christos type tval; 157 1.1 christos namelist * nlist; 158 1.1 christos name id; 159 1.1 christos } YYSTYPE; 160 1.1 christos #endif /* !YYSTYPE_IS_DECLARED */ 161 1.1 christos #line 160 "btyacc_destroy1.tab.c" 162 1.1 christos 163 1.1 christos /* compatibility with bison */ 164 1.1 christos #ifdef YYPARSE_PARAM 165 1.1 christos /* compatibility with FreeBSD */ 166 1.1 christos # ifdef YYPARSE_PARAM_TYPE 167 1.1 christos # define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) 168 1.1 christos # else 169 1.1 christos # define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) 170 1.1 christos # endif 171 1.1 christos #else 172 1.1 christos # define YYPARSE_DECL() yyparse(struct parser_param *param, int flag) 173 1.1 christos #endif 174 1.1 christos 175 1.1 christos /* Parameters sent to lex. */ 176 1.1 christos #ifdef YYLEX_PARAM 177 1.1 christos # define YYLEX_DECL() yylex(void *YYLEX_PARAM) 178 1.1 christos # define YYLEX yylex(YYLEX_PARAM) 179 1.1 christos #else 180 1.1 christos # define YYLEX_DECL() yylex(void) 181 1.1 christos # define YYLEX yylex() 182 1.1 christos #endif 183 1.1 christos 184 1.1 christos /* Parameters sent to yyerror. */ 185 1.1 christos #ifndef YYERROR_DECL 186 1.1 christos #define YYERROR_DECL() yyerror(struct parser_param *param, int flag, const char *s) 187 1.1 christos #endif 188 1.1 christos #ifndef YYERROR_CALL 189 1.1 christos #define YYERROR_CALL(msg) yyerror(param, flag, msg) 190 1.1 christos #endif 191 1.1 christos 192 1.1 christos #ifndef YYDESTRUCT_DECL 193 1.1 christos #define YYDESTRUCT_DECL() yydestruct(const char *msg, int psymb, YYSTYPE *val, struct parser_param *param, int flag) 194 1.1 christos #endif 195 1.1 christos #ifndef YYDESTRUCT_CALL 196 1.1 christos #define YYDESTRUCT_CALL(msg, psymb, val) yydestruct(msg, psymb, val, param, flag) 197 1.1 christos #endif 198 1.1 christos 199 1.1 christos extern int YYPARSE_DECL(); 200 1.1 christos 201 1.1 christos #define GLOBAL 257 202 1.1 christos #define LOCAL 258 203 1.1 christos #define REAL 259 204 1.1 christos #define INTEGER 260 205 1.1 christos #define NAME 261 206 1.1 christos #define YYERRCODE 256 207 1.6 christos typedef int YYINT; 208 1.1 christos static const YYINT destroy1_lhs[] = { -1, 209 1.1 christos 0, 0, 2, 2, 3, 3, 4, 4, 1, 210 1.1 christos }; 211 1.1 christos static const YYINT destroy1_len[] = { 2, 212 1.1 christos 8, 5, 1, 1, 1, 1, 2, 1, 6, 213 1.1 christos }; 214 1.1 christos static const YYINT destroy1_defred[] = { 0, 215 1.1 christos 3, 4, 5, 6, 0, 0, 0, 0, 8, 0, 216 1.1 christos 0, 0, 0, 7, 0, 0, 0, 0, 0, 2, 217 1.1 christos 0, 0, 0, 0, 9, 1, 218 1.1 christos }; 219 1.2 christos #if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING) 220 1.1 christos static const YYINT destroy1_stos[] = { 0, 221 1.1 christos 257, 258, 259, 260, 263, 265, 266, 266, 261, 264, 222 1.1 christos 267, 267, 40, 261, 40, 40, 265, 258, 265, 41, 223 1.1 christos 44, 44, 266, 266, 41, 41, 224 1.1 christos }; 225 1.2 christos #endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */ 226 1.1 christos static const YYINT destroy1_dgoto[] = { 5, 227 1.1 christos 10, 6, 7, 11, 228 1.1 christos }; 229 1.1 christos static const YYINT destroy1_sindex[] = { -254, 230 1.1 christos 0, 0, 0, 0, 0, -251, -248, -248, 0, -26, 231 1.1 christos -40, -39, -246, 0, -243, -246, -25, -24, -23, 0, 232 1.1 christos -251, -251, -22, -19, 0, 0, 233 1.1 christos }; 234 1.1 christos static const YYINT destroy1_rindex[] = { 0, 235 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 236 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237 1.1 christos 0, 0, 0, 0, 0, 0, 238 1.1 christos }; 239 1.1 christos #if YYBTYACC 240 1.1 christos static const YYINT destroy1_cindex[] = { 0, 241 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 242 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 243 1.1 christos 0, 0, 0, 0, 0, 0, 244 1.1 christos }; 245 1.1 christos #endif 246 1.1 christos static const YYINT destroy1_gindex[] = { 0, 247 1.1 christos 0, -6, -4, 15, 248 1.1 christos }; 249 1.1 christos #define YYTABLESIZE 222 250 1.1 christos static const YYINT destroy1_table[] = { 15, 251 1.1 christos 16, 8, 1, 2, 3, 4, 17, 3, 4, 19, 252 1.1 christos 1, 2, 9, 13, 18, 20, 23, 24, 25, 21, 253 1.1 christos 22, 26, 12, 0, 0, 0, 0, 0, 0, 0, 254 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 257 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 258 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 259 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 260 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 261 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 263 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 264 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 265 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 266 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 267 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 268 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 269 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 270 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 271 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 273 1.1 christos 14, 14, 274 1.1 christos }; 275 1.1 christos static const YYINT destroy1_check[] = { 40, 276 1.1 christos 40, 6, 257, 258, 259, 260, 13, 259, 260, 16, 277 1.1 christos 257, 258, 261, 40, 258, 41, 21, 22, 41, 44, 278 1.1 christos 44, 41, 8, -1, -1, -1, -1, -1, -1, -1, 279 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 280 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 282 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 283 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 284 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 285 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 286 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 287 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 288 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 290 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 291 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 292 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 295 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 296 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 297 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 298 1.1 christos 261, 261, 299 1.1 christos }; 300 1.1 christos #if YYBTYACC 301 1.1 christos static const YYINT destroy1_ctable[] = { -1, 302 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 303 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 304 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 306 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 307 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 308 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 310 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 311 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 314 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 315 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 316 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 318 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 319 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 321 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 322 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 323 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 324 1.1 christos -1, 325 1.1 christos }; 326 1.1 christos #endif 327 1.1 christos #define YYFINAL 5 328 1.1 christos #ifndef YYDEBUG 329 1.1 christos #define YYDEBUG 0 330 1.1 christos #endif 331 1.1 christos #define YYMAXTOKEN 261 332 1.1 christos #define YYUNDFTOKEN 268 333 1.1 christos #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) 334 1.1 christos #if YYDEBUG 335 1.7 christos #ifndef NULL 336 1.7 christos #define NULL (void*)0 337 1.7 christos #endif 338 1.1 christos static const char *const destroy1_name[] = { 339 1.1 christos 340 1.7 christos "$end",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 341 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 342 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"'('","')'",NULL,NULL,"','",NULL, 343 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 344 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 345 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 346 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 347 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 348 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 349 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 350 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 351 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 352 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 353 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 354 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 355 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 356 1.7 christos NULL,NULL,"error","GLOBAL","LOCAL","REAL","INTEGER","NAME","$accept", 357 1.7 christos "declaration","locnamelist","class","type","namelist","illegal-symbol", 358 1.1 christos }; 359 1.1 christos static const char *const destroy1_rule[] = { 360 1.1 christos "$accept : declaration", 361 1.1 christos "declaration : class type namelist '(' class ',' type ')'", 362 1.1 christos "declaration : type locnamelist '(' class ')'", 363 1.1 christos "class : GLOBAL", 364 1.1 christos "class : LOCAL", 365 1.1 christos "type : REAL", 366 1.1 christos "type : INTEGER", 367 1.1 christos "namelist : namelist NAME", 368 1.1 christos "namelist : NAME", 369 1.1 christos "locnamelist : namelist '(' LOCAL ',' type ')'", 370 1.1 christos 371 1.1 christos }; 372 1.1 christos #endif 373 1.1 christos 374 1.4 christos #if YYDEBUG 375 1.1 christos int yydebug; 376 1.4 christos #endif 377 1.1 christos 378 1.1 christos int yyerrflag; 379 1.1 christos int yychar; 380 1.1 christos YYSTYPE yyval; 381 1.1 christos YYSTYPE yylval; 382 1.4 christos int yynerrs; 383 1.4 christos 384 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 385 1.1 christos YYLTYPE yyloc; /* position returned by actions */ 386 1.1 christos YYLTYPE yylloc; /* position from the lexer */ 387 1.1 christos #endif 388 1.1 christos 389 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 390 1.1 christos #ifndef YYLLOC_DEFAULT 391 1.1 christos #define YYLLOC_DEFAULT(loc, rhs, n) \ 392 1.1 christos do \ 393 1.1 christos { \ 394 1.1 christos if (n == 0) \ 395 1.1 christos { \ 396 1.4 christos (loc).first_line = YYRHSLOC(rhs, 0).last_line; \ 397 1.4 christos (loc).first_column = YYRHSLOC(rhs, 0).last_column; \ 398 1.4 christos (loc).last_line = YYRHSLOC(rhs, 0).last_line; \ 399 1.4 christos (loc).last_column = YYRHSLOC(rhs, 0).last_column; \ 400 1.1 christos } \ 401 1.1 christos else \ 402 1.1 christos { \ 403 1.4 christos (loc).first_line = YYRHSLOC(rhs, 1).first_line; \ 404 1.4 christos (loc).first_column = YYRHSLOC(rhs, 1).first_column; \ 405 1.4 christos (loc).last_line = YYRHSLOC(rhs, n).last_line; \ 406 1.4 christos (loc).last_column = YYRHSLOC(rhs, n).last_column; \ 407 1.1 christos } \ 408 1.1 christos } while (0) 409 1.1 christos #endif /* YYLLOC_DEFAULT */ 410 1.1 christos #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 411 1.1 christos #if YYBTYACC 412 1.1 christos 413 1.1 christos #ifndef YYLVQUEUEGROWTH 414 1.1 christos #define YYLVQUEUEGROWTH 32 415 1.1 christos #endif 416 1.1 christos #endif /* YYBTYACC */ 417 1.1 christos 418 1.1 christos /* define the initial stack-sizes */ 419 1.1 christos #ifdef YYSTACKSIZE 420 1.1 christos #undef YYMAXDEPTH 421 1.1 christos #define YYMAXDEPTH YYSTACKSIZE 422 1.1 christos #else 423 1.1 christos #ifdef YYMAXDEPTH 424 1.1 christos #define YYSTACKSIZE YYMAXDEPTH 425 1.1 christos #else 426 1.1 christos #define YYSTACKSIZE 10000 427 1.1 christos #define YYMAXDEPTH 10000 428 1.1 christos #endif 429 1.1 christos #endif 430 1.1 christos 431 1.1 christos #ifndef YYINITSTACKSIZE 432 1.1 christos #define YYINITSTACKSIZE 200 433 1.1 christos #endif 434 1.1 christos 435 1.1 christos typedef struct { 436 1.1 christos unsigned stacksize; 437 1.2 christos YYINT *s_base; 438 1.2 christos YYINT *s_mark; 439 1.2 christos YYINT *s_last; 440 1.1 christos YYSTYPE *l_base; 441 1.1 christos YYSTYPE *l_mark; 442 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 443 1.1 christos YYLTYPE *p_base; 444 1.1 christos YYLTYPE *p_mark; 445 1.1 christos #endif 446 1.1 christos } YYSTACKDATA; 447 1.1 christos #if YYBTYACC 448 1.1 christos 449 1.1 christos struct YYParseState_s 450 1.1 christos { 451 1.1 christos struct YYParseState_s *save; /* Previously saved parser state */ 452 1.1 christos YYSTACKDATA yystack; /* saved parser stack */ 453 1.1 christos int state; /* saved parser state */ 454 1.1 christos int errflag; /* saved error recovery status */ 455 1.1 christos int lexeme; /* saved index of the conflict lexeme in the lexical queue */ 456 1.1 christos YYINT ctry; /* saved index in yyctable[] for this conflict */ 457 1.1 christos }; 458 1.1 christos typedef struct YYParseState_s YYParseState; 459 1.1 christos #endif /* YYBTYACC */ 460 1.1 christos /* variables for the parser stack */ 461 1.1 christos static YYSTACKDATA yystack; 462 1.1 christos #if YYBTYACC 463 1.1 christos 464 1.1 christos /* Current parser state */ 465 1.7 christos static YYParseState *yyps = NULL; 466 1.1 christos 467 1.1 christos /* yypath != NULL: do the full parse, starting at *yypath parser state. */ 468 1.7 christos static YYParseState *yypath = NULL; 469 1.1 christos 470 1.1 christos /* Base of the lexical value queue */ 471 1.7 christos static YYSTYPE *yylvals = NULL; 472 1.1 christos 473 1.1 christos /* Current position at lexical value queue */ 474 1.7 christos static YYSTYPE *yylvp = NULL; 475 1.1 christos 476 1.1 christos /* End position of lexical value queue */ 477 1.7 christos static YYSTYPE *yylve = NULL; 478 1.1 christos 479 1.1 christos /* The last allocated position at the lexical value queue */ 480 1.7 christos static YYSTYPE *yylvlim = NULL; 481 1.1 christos 482 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 483 1.1 christos /* Base of the lexical position queue */ 484 1.7 christos static YYLTYPE *yylpsns = NULL; 485 1.1 christos 486 1.1 christos /* Current position at lexical position queue */ 487 1.7 christos static YYLTYPE *yylpp = NULL; 488 1.1 christos 489 1.1 christos /* End position of lexical position queue */ 490 1.7 christos static YYLTYPE *yylpe = NULL; 491 1.1 christos 492 1.1 christos /* The last allocated position at the lexical position queue */ 493 1.7 christos static YYLTYPE *yylplim = NULL; 494 1.1 christos #endif 495 1.1 christos 496 1.1 christos /* Current position at lexical token queue */ 497 1.7 christos static YYINT *yylexp = NULL; 498 1.1 christos 499 1.7 christos static YYINT *yylexemes = NULL; 500 1.1 christos #endif /* YYBTYACC */ 501 1.1 christos #line 89 "btyacc_destroy1.y" 502 1.1 christos 503 1.1 christos extern int YYLEX_DECL(); 504 1.1 christos extern void YYERROR_DECL(); 505 1.7 christos #line 504 "btyacc_destroy1.tab.c" 506 1.1 christos 507 1.1 christos /* Release memory associated with symbol. */ 508 1.1 christos #if ! defined YYDESTRUCT_IS_DECLARED 509 1.1 christos static void 510 1.1 christos YYDESTRUCT_DECL() 511 1.1 christos { 512 1.1 christos switch (psymb) 513 1.1 christos { 514 1.1 christos case 263: 515 1.1 christos #line 41 "btyacc_destroy1.y" 516 1.1 christos { 517 1.1 christos namelist *p = (*val).nlist; 518 1.1 christos while (p != NULL) 519 1.1 christos { namelist *pp = p; 520 1.1 christos p = p->next; 521 1.1 christos free(pp->s); free(pp); 522 1.1 christos } 523 1.1 christos } 524 1.7 christos #line 523 "btyacc_destroy1.tab.c" 525 1.1 christos break; 526 1.1 christos } 527 1.1 christos } 528 1.1 christos #define YYDESTRUCT_IS_DECLARED 1 529 1.1 christos #endif 530 1.1 christos 531 1.1 christos /* For use in generated program */ 532 1.1 christos #define yydepth (int)(yystack.s_mark - yystack.s_base) 533 1.1 christos #if YYBTYACC 534 1.1 christos #define yytrial (yyps->save) 535 1.1 christos #endif /* YYBTYACC */ 536 1.1 christos 537 1.1 christos #if YYDEBUG 538 1.2 christos #include <stdio.h> /* needed for printf */ 539 1.1 christos #endif 540 1.1 christos 541 1.2 christos #include <stdlib.h> /* needed for malloc, etc */ 542 1.2 christos #include <string.h> /* needed for memset */ 543 1.1 christos 544 1.1 christos /* allocate initial stack or double stack size, up to YYMAXDEPTH */ 545 1.1 christos static int yygrowstack(YYSTACKDATA *data) 546 1.1 christos { 547 1.1 christos int i; 548 1.1 christos unsigned newsize; 549 1.2 christos YYINT *newss; 550 1.1 christos YYSTYPE *newvs; 551 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 552 1.1 christos YYLTYPE *newps; 553 1.1 christos #endif 554 1.1 christos 555 1.1 christos if ((newsize = data->stacksize) == 0) 556 1.1 christos newsize = YYINITSTACKSIZE; 557 1.1 christos else if (newsize >= YYMAXDEPTH) 558 1.1 christos return YYENOMEM; 559 1.1 christos else if ((newsize *= 2) > YYMAXDEPTH) 560 1.1 christos newsize = YYMAXDEPTH; 561 1.1 christos 562 1.1 christos i = (int) (data->s_mark - data->s_base); 563 1.2 christos newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); 564 1.7 christos if (newss == NULL) 565 1.1 christos return YYENOMEM; 566 1.1 christos 567 1.1 christos data->s_base = newss; 568 1.1 christos data->s_mark = newss + i; 569 1.1 christos 570 1.1 christos newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); 571 1.7 christos if (newvs == NULL) 572 1.1 christos return YYENOMEM; 573 1.1 christos 574 1.1 christos data->l_base = newvs; 575 1.1 christos data->l_mark = newvs + i; 576 1.1 christos 577 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 578 1.1 christos newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps)); 579 1.7 christos if (newps == NULL) 580 1.1 christos return YYENOMEM; 581 1.1 christos 582 1.1 christos data->p_base = newps; 583 1.1 christos data->p_mark = newps + i; 584 1.1 christos #endif 585 1.1 christos 586 1.1 christos data->stacksize = newsize; 587 1.1 christos data->s_last = data->s_base + newsize - 1; 588 1.1 christos 589 1.1 christos #if YYDEBUG 590 1.1 christos if (yydebug) 591 1.1 christos fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize); 592 1.1 christos #endif 593 1.1 christos return 0; 594 1.1 christos } 595 1.1 christos 596 1.1 christos #if YYPURE || defined(YY_NO_LEAKS) 597 1.1 christos static void yyfreestack(YYSTACKDATA *data) 598 1.1 christos { 599 1.1 christos free(data->s_base); 600 1.1 christos free(data->l_base); 601 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 602 1.1 christos free(data->p_base); 603 1.1 christos #endif 604 1.1 christos memset(data, 0, sizeof(*data)); 605 1.1 christos } 606 1.1 christos #else 607 1.1 christos #define yyfreestack(data) /* nothing */ 608 1.1 christos #endif /* YYPURE || defined(YY_NO_LEAKS) */ 609 1.1 christos #if YYBTYACC 610 1.1 christos 611 1.1 christos static YYParseState * 612 1.1 christos yyNewState(unsigned size) 613 1.1 christos { 614 1.1 christos YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState)); 615 1.1 christos if (p == NULL) return NULL; 616 1.1 christos 617 1.1 christos p->yystack.stacksize = size; 618 1.1 christos if (size == 0) 619 1.1 christos { 620 1.1 christos p->yystack.s_base = NULL; 621 1.1 christos p->yystack.l_base = NULL; 622 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 623 1.1 christos p->yystack.p_base = NULL; 624 1.1 christos #endif 625 1.1 christos return p; 626 1.1 christos } 627 1.2 christos p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); 628 1.1 christos if (p->yystack.s_base == NULL) return NULL; 629 1.1 christos p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); 630 1.1 christos if (p->yystack.l_base == NULL) return NULL; 631 1.1 christos memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE)); 632 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 633 1.1 christos p->yystack.p_base = (YYLTYPE *) malloc(size * sizeof(YYLTYPE)); 634 1.1 christos if (p->yystack.p_base == NULL) return NULL; 635 1.1 christos memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE)); 636 1.1 christos #endif 637 1.1 christos 638 1.1 christos return p; 639 1.1 christos } 640 1.1 christos 641 1.1 christos static void 642 1.1 christos yyFreeState(YYParseState *p) 643 1.1 christos { 644 1.1 christos yyfreestack(&p->yystack); 645 1.1 christos free(p); 646 1.1 christos } 647 1.1 christos #endif /* YYBTYACC */ 648 1.1 christos 649 1.1 christos #define YYABORT goto yyabort 650 1.1 christos #define YYREJECT goto yyabort 651 1.1 christos #define YYACCEPT goto yyaccept 652 1.1 christos #define YYERROR goto yyerrlab 653 1.1 christos #if YYBTYACC 654 1.1 christos #define YYVALID do { if (yyps->save) goto yyvalid; } while(0) 655 1.1 christos #define YYVALID_NESTED do { if (yyps->save && \ 656 1.1 christos yyps->save->save == 0) goto yyvalid; } while(0) 657 1.1 christos #endif /* YYBTYACC */ 658 1.1 christos 659 1.1 christos int 660 1.1 christos YYPARSE_DECL() 661 1.1 christos { 662 1.1 christos int yym, yyn, yystate, yyresult; 663 1.1 christos #if YYBTYACC 664 1.1 christos int yynewerrflag; 665 1.1 christos YYParseState *yyerrctx = NULL; 666 1.1 christos #endif /* YYBTYACC */ 667 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 668 1.4 christos YYLTYPE yyerror_loc_range[3]; /* position of error start/end (0 unused) */ 669 1.1 christos #endif 670 1.1 christos #if YYDEBUG 671 1.1 christos const char *yys; 672 1.1 christos 673 1.7 christos if ((yys = getenv("YYDEBUG")) != NULL) 674 1.1 christos { 675 1.1 christos yyn = *yys; 676 1.1 christos if (yyn >= '0' && yyn <= '9') 677 1.1 christos yydebug = yyn - '0'; 678 1.1 christos } 679 1.1 christos if (yydebug) 680 1.1 christos fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX); 681 1.1 christos #endif 682 1.3 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 683 1.3 christos memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range)); 684 1.3 christos #endif 685 1.1 christos 686 1.1 christos #if YYBTYACC 687 1.7 christos yyps = yyNewState(0); if (yyps == NULL) goto yyenomem; 688 1.7 christos yyps->save = NULL; 689 1.1 christos #endif /* YYBTYACC */ 690 1.2 christos yym = 0; 691 1.6 christos /* yyn is set below */ 692 1.1 christos yynerrs = 0; 693 1.1 christos yyerrflag = 0; 694 1.1 christos yychar = YYEMPTY; 695 1.1 christos yystate = 0; 696 1.1 christos 697 1.1 christos #if YYPURE 698 1.1 christos memset(&yystack, 0, sizeof(yystack)); 699 1.1 christos #endif 700 1.1 christos 701 1.1 christos if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 702 1.1 christos yystack.s_mark = yystack.s_base; 703 1.1 christos yystack.l_mark = yystack.l_base; 704 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 705 1.1 christos yystack.p_mark = yystack.p_base; 706 1.1 christos #endif 707 1.1 christos yystate = 0; 708 1.1 christos *yystack.s_mark = 0; 709 1.1 christos 710 1.1 christos yyloop: 711 1.1 christos if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 712 1.1 christos if (yychar < 0) 713 1.1 christos { 714 1.1 christos #if YYBTYACC 715 1.1 christos do { 716 1.1 christos if (yylvp < yylve) 717 1.1 christos { 718 1.1 christos /* we're currently re-reading tokens */ 719 1.1 christos yylval = *yylvp++; 720 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 721 1.1 christos yylloc = *yylpp++; 722 1.1 christos #endif 723 1.1 christos yychar = *yylexp++; 724 1.1 christos break; 725 1.1 christos } 726 1.1 christos if (yyps->save) 727 1.1 christos { 728 1.1 christos /* in trial mode; save scanner results for future parse attempts */ 729 1.1 christos if (yylvp == yylvlim) 730 1.1 christos { /* Enlarge lexical value queue */ 731 1.1 christos size_t p = (size_t) (yylvp - yylvals); 732 1.1 christos size_t s = (size_t) (yylvlim - yylvals); 733 1.1 christos 734 1.1 christos s += YYLVQUEUEGROWTH; 735 1.4 christos if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem; 736 1.4 christos if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem; 737 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 738 1.4 christos if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem; 739 1.1 christos #endif 740 1.1 christos yylvp = yylve = yylvals + p; 741 1.1 christos yylvlim = yylvals + s; 742 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 743 1.1 christos yylpp = yylpe = yylpsns + p; 744 1.1 christos yylplim = yylpsns + s; 745 1.1 christos #endif 746 1.1 christos yylexp = yylexemes + p; 747 1.1 christos } 748 1.2 christos *yylexp = (YYINT) YYLEX; 749 1.1 christos *yylvp++ = yylval; 750 1.1 christos yylve++; 751 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 752 1.1 christos *yylpp++ = yylloc; 753 1.1 christos yylpe++; 754 1.1 christos #endif 755 1.1 christos yychar = *yylexp++; 756 1.1 christos break; 757 1.1 christos } 758 1.1 christos /* normal operation, no conflict encountered */ 759 1.1 christos #endif /* YYBTYACC */ 760 1.1 christos yychar = YYLEX; 761 1.1 christos #if YYBTYACC 762 1.1 christos } while (0); 763 1.1 christos #endif /* YYBTYACC */ 764 1.1 christos if (yychar < 0) yychar = YYEOF; 765 1.1 christos #if YYDEBUG 766 1.1 christos if (yydebug) 767 1.1 christos { 768 1.2 christos if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 769 1.1 christos fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", 770 1.1 christos YYDEBUGSTR, yydepth, yystate, yychar, yys); 771 1.1 christos #ifdef YYSTYPE_TOSTRING 772 1.1 christos #if YYBTYACC 773 1.1 christos if (!yytrial) 774 1.1 christos #endif /* YYBTYACC */ 775 1.1 christos fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval)); 776 1.1 christos #endif 777 1.1 christos fputc('\n', stderr); 778 1.1 christos } 779 1.1 christos #endif 780 1.1 christos } 781 1.1 christos #if YYBTYACC 782 1.1 christos 783 1.1 christos /* Do we have a conflict? */ 784 1.1 christos if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 && 785 1.1 christos yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 786 1.1 christos { 787 1.1 christos YYINT ctry; 788 1.1 christos 789 1.1 christos if (yypath) 790 1.1 christos { 791 1.1 christos YYParseState *save; 792 1.1 christos #if YYDEBUG 793 1.1 christos if (yydebug) 794 1.1 christos fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n", 795 1.1 christos YYDEBUGSTR, yydepth, yystate); 796 1.1 christos #endif 797 1.1 christos /* Switch to the next conflict context */ 798 1.1 christos save = yypath; 799 1.1 christos yypath = save->save; 800 1.1 christos save->save = NULL; 801 1.1 christos ctry = save->ctry; 802 1.1 christos if (save->state != yystate) YYABORT; 803 1.1 christos yyFreeState(save); 804 1.1 christos 805 1.1 christos } 806 1.1 christos else 807 1.1 christos { 808 1.1 christos 809 1.1 christos /* Unresolved conflict - start/continue trial parse */ 810 1.1 christos YYParseState *save; 811 1.1 christos #if YYDEBUG 812 1.1 christos if (yydebug) 813 1.1 christos { 814 1.1 christos fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate); 815 1.1 christos if (yyps->save) 816 1.1 christos fputs("ALREADY in conflict, continuing trial parse.\n", stderr); 817 1.1 christos else 818 1.1 christos fputs("Starting trial parse.\n", stderr); 819 1.1 christos } 820 1.1 christos #endif 821 1.1 christos save = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1)); 822 1.1 christos if (save == NULL) goto yyenomem; 823 1.1 christos save->save = yyps->save; 824 1.1 christos save->state = yystate; 825 1.1 christos save->errflag = yyerrflag; 826 1.1 christos save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); 827 1.2 christos memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 828 1.1 christos save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); 829 1.1 christos memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 830 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 831 1.1 christos save->yystack.p_mark = save->yystack.p_base + (yystack.p_mark - yystack.p_base); 832 1.1 christos memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 833 1.1 christos #endif 834 1.1 christos ctry = yytable[yyn]; 835 1.1 christos if (yyctable[ctry] == -1) 836 1.1 christos { 837 1.1 christos #if YYDEBUG 838 1.1 christos if (yydebug && yychar >= YYEOF) 839 1.1 christos fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth); 840 1.1 christos #endif 841 1.1 christos ctry++; 842 1.1 christos } 843 1.1 christos save->ctry = ctry; 844 1.1 christos if (yyps->save == NULL) 845 1.1 christos { 846 1.1 christos /* If this is a first conflict in the stack, start saving lexemes */ 847 1.1 christos if (!yylexemes) 848 1.1 christos { 849 1.4 christos yylexemes = (YYINT *) malloc((YYLVQUEUEGROWTH) * sizeof(YYINT)); 850 1.1 christos if (yylexemes == NULL) goto yyenomem; 851 1.1 christos yylvals = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE)); 852 1.1 christos if (yylvals == NULL) goto yyenomem; 853 1.1 christos yylvlim = yylvals + YYLVQUEUEGROWTH; 854 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 855 1.1 christos yylpsns = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE)); 856 1.1 christos if (yylpsns == NULL) goto yyenomem; 857 1.1 christos yylplim = yylpsns + YYLVQUEUEGROWTH; 858 1.1 christos #endif 859 1.1 christos } 860 1.1 christos if (yylvp == yylve) 861 1.1 christos { 862 1.1 christos yylvp = yylve = yylvals; 863 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 864 1.1 christos yylpp = yylpe = yylpsns; 865 1.1 christos #endif 866 1.1 christos yylexp = yylexemes; 867 1.1 christos if (yychar >= YYEOF) 868 1.1 christos { 869 1.1 christos *yylve++ = yylval; 870 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 871 1.1 christos *yylpe++ = yylloc; 872 1.1 christos #endif 873 1.2 christos *yylexp = (YYINT) yychar; 874 1.1 christos yychar = YYEMPTY; 875 1.1 christos } 876 1.1 christos } 877 1.1 christos } 878 1.1 christos if (yychar >= YYEOF) 879 1.1 christos { 880 1.1 christos yylvp--; 881 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 882 1.1 christos yylpp--; 883 1.1 christos #endif 884 1.1 christos yylexp--; 885 1.1 christos yychar = YYEMPTY; 886 1.1 christos } 887 1.1 christos save->lexeme = (int) (yylvp - yylvals); 888 1.1 christos yyps->save = save; 889 1.1 christos } 890 1.1 christos if (yytable[yyn] == ctry) 891 1.1 christos { 892 1.1 christos #if YYDEBUG 893 1.1 christos if (yydebug) 894 1.1 christos fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", 895 1.1 christos YYDEBUGSTR, yydepth, yystate, yyctable[ctry]); 896 1.1 christos #endif 897 1.1 christos if (yychar < 0) 898 1.1 christos { 899 1.1 christos yylvp++; 900 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 901 1.1 christos yylpp++; 902 1.1 christos #endif 903 1.1 christos yylexp++; 904 1.1 christos } 905 1.1 christos if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 906 1.1 christos goto yyoverflow; 907 1.1 christos yystate = yyctable[ctry]; 908 1.2 christos *++yystack.s_mark = (YYINT) yystate; 909 1.1 christos *++yystack.l_mark = yylval; 910 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 911 1.1 christos *++yystack.p_mark = yylloc; 912 1.1 christos #endif 913 1.1 christos yychar = YYEMPTY; 914 1.1 christos if (yyerrflag > 0) --yyerrflag; 915 1.1 christos goto yyloop; 916 1.1 christos } 917 1.1 christos else 918 1.1 christos { 919 1.1 christos yyn = yyctable[ctry]; 920 1.1 christos goto yyreduce; 921 1.1 christos } 922 1.1 christos } /* End of code dealing with conflicts */ 923 1.1 christos #endif /* YYBTYACC */ 924 1.1 christos if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && 925 1.1 christos yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 926 1.1 christos { 927 1.1 christos #if YYDEBUG 928 1.1 christos if (yydebug) 929 1.1 christos fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", 930 1.1 christos YYDEBUGSTR, yydepth, yystate, yytable[yyn]); 931 1.1 christos #endif 932 1.1 christos if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 933 1.1 christos yystate = yytable[yyn]; 934 1.1 christos *++yystack.s_mark = yytable[yyn]; 935 1.1 christos *++yystack.l_mark = yylval; 936 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 937 1.1 christos *++yystack.p_mark = yylloc; 938 1.1 christos #endif 939 1.1 christos yychar = YYEMPTY; 940 1.1 christos if (yyerrflag > 0) --yyerrflag; 941 1.1 christos goto yyloop; 942 1.1 christos } 943 1.1 christos if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && 944 1.1 christos yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 945 1.1 christos { 946 1.1 christos yyn = yytable[yyn]; 947 1.1 christos goto yyreduce; 948 1.1 christos } 949 1.1 christos if (yyerrflag != 0) goto yyinrecovery; 950 1.1 christos #if YYBTYACC 951 1.1 christos 952 1.1 christos yynewerrflag = 1; 953 1.1 christos goto yyerrhandler; 954 1.2 christos goto yyerrlab; /* redundant goto avoids 'unused label' warning */ 955 1.1 christos 956 1.1 christos yyerrlab: 957 1.2 christos /* explicit YYERROR from an action -- pop the rhs of the rule reduced 958 1.2 christos * before looking for error recovery */ 959 1.2 christos yystack.s_mark -= yym; 960 1.2 christos yystate = *yystack.s_mark; 961 1.2 christos yystack.l_mark -= yym; 962 1.2 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 963 1.2 christos yystack.p_mark -= yym; 964 1.2 christos #endif 965 1.2 christos 966 1.1 christos yynewerrflag = 0; 967 1.1 christos yyerrhandler: 968 1.1 christos while (yyps->save) 969 1.1 christos { 970 1.1 christos int ctry; 971 1.1 christos YYParseState *save = yyps->save; 972 1.1 christos #if YYDEBUG 973 1.1 christos if (yydebug) 974 1.1 christos fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n", 975 1.1 christos YYDEBUGSTR, yydepth, yystate, yyps->save->state, 976 1.1 christos (int)(yylvp - yylvals - yyps->save->lexeme)); 977 1.1 christos #endif 978 1.1 christos /* Memorize most forward-looking error state in case it's really an error. */ 979 1.1 christos if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals) 980 1.1 christos { 981 1.1 christos /* Free old saved error context state */ 982 1.1 christos if (yyerrctx) yyFreeState(yyerrctx); 983 1.1 christos /* Create and fill out new saved error context state */ 984 1.1 christos yyerrctx = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1)); 985 1.1 christos if (yyerrctx == NULL) goto yyenomem; 986 1.1 christos yyerrctx->save = yyps->save; 987 1.1 christos yyerrctx->state = yystate; 988 1.1 christos yyerrctx->errflag = yyerrflag; 989 1.1 christos yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); 990 1.2 christos memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 991 1.1 christos yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); 992 1.1 christos memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 993 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 994 1.1 christos yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base); 995 1.1 christos memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 996 1.1 christos #endif 997 1.1 christos yyerrctx->lexeme = (int) (yylvp - yylvals); 998 1.1 christos } 999 1.1 christos yylvp = yylvals + save->lexeme; 1000 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1001 1.1 christos yylpp = yylpsns + save->lexeme; 1002 1.1 christos #endif 1003 1.1 christos yylexp = yylexemes + save->lexeme; 1004 1.1 christos yychar = YYEMPTY; 1005 1.1 christos yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); 1006 1.2 christos memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 1007 1.1 christos yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); 1008 1.1 christos memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1009 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1010 1.1 christos yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base); 1011 1.1 christos memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1012 1.1 christos #endif 1013 1.1 christos ctry = ++save->ctry; 1014 1.1 christos yystate = save->state; 1015 1.1 christos /* We tried shift, try reduce now */ 1016 1.1 christos if ((yyn = yyctable[ctry]) >= 0) goto yyreduce; 1017 1.1 christos yyps->save = save->save; 1018 1.1 christos save->save = NULL; 1019 1.1 christos yyFreeState(save); 1020 1.1 christos 1021 1.1 christos /* Nothing left on the stack -- error */ 1022 1.1 christos if (!yyps->save) 1023 1.1 christos { 1024 1.1 christos #if YYDEBUG 1025 1.1 christos if (yydebug) 1026 1.1 christos fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n", 1027 1.1 christos YYPREFIX, yydepth); 1028 1.1 christos #endif 1029 1.1 christos /* Restore state as it was in the most forward-advanced error */ 1030 1.1 christos yylvp = yylvals + yyerrctx->lexeme; 1031 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1032 1.1 christos yylpp = yylpsns + yyerrctx->lexeme; 1033 1.1 christos #endif 1034 1.1 christos yylexp = yylexemes + yyerrctx->lexeme; 1035 1.1 christos yychar = yylexp[-1]; 1036 1.1 christos yylval = yylvp[-1]; 1037 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1038 1.1 christos yylloc = yylpp[-1]; 1039 1.1 christos #endif 1040 1.1 christos yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); 1041 1.2 christos memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 1042 1.1 christos yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); 1043 1.1 christos memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1044 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1045 1.1 christos yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base); 1046 1.1 christos memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1047 1.1 christos #endif 1048 1.1 christos yystate = yyerrctx->state; 1049 1.1 christos yyFreeState(yyerrctx); 1050 1.1 christos yyerrctx = NULL; 1051 1.1 christos } 1052 1.1 christos yynewerrflag = 1; 1053 1.1 christos } 1054 1.1 christos if (yynewerrflag == 0) goto yyinrecovery; 1055 1.1 christos #endif /* YYBTYACC */ 1056 1.1 christos 1057 1.1 christos YYERROR_CALL("syntax error"); 1058 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1059 1.4 christos yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */ 1060 1.1 christos #endif 1061 1.1 christos 1062 1.1 christos #if !YYBTYACC 1063 1.2 christos goto yyerrlab; /* redundant goto avoids 'unused label' warning */ 1064 1.1 christos yyerrlab: 1065 1.1 christos #endif 1066 1.1 christos ++yynerrs; 1067 1.1 christos 1068 1.1 christos yyinrecovery: 1069 1.1 christos if (yyerrflag < 3) 1070 1.1 christos { 1071 1.1 christos yyerrflag = 3; 1072 1.1 christos for (;;) 1073 1.1 christos { 1074 1.1 christos if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && 1075 1.1 christos yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) 1076 1.1 christos { 1077 1.1 christos #if YYDEBUG 1078 1.1 christos if (yydebug) 1079 1.1 christos fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n", 1080 1.1 christos YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]); 1081 1.1 christos #endif 1082 1.1 christos if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 1083 1.1 christos yystate = yytable[yyn]; 1084 1.1 christos *++yystack.s_mark = yytable[yyn]; 1085 1.1 christos *++yystack.l_mark = yylval; 1086 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1087 1.1 christos /* lookahead position is error end position */ 1088 1.4 christos yyerror_loc_range[2] = yylloc; 1089 1.1 christos YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */ 1090 1.1 christos *++yystack.p_mark = yyloc; 1091 1.1 christos #endif 1092 1.1 christos goto yyloop; 1093 1.1 christos } 1094 1.1 christos else 1095 1.1 christos { 1096 1.1 christos #if YYDEBUG 1097 1.1 christos if (yydebug) 1098 1.1 christos fprintf(stderr, "%s[%d]: error recovery discarding state %d\n", 1099 1.1 christos YYDEBUGSTR, yydepth, *yystack.s_mark); 1100 1.1 christos #endif 1101 1.1 christos if (yystack.s_mark <= yystack.s_base) goto yyabort; 1102 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1103 1.1 christos /* the current TOS position is the error start position */ 1104 1.4 christos yyerror_loc_range[1] = *yystack.p_mark; 1105 1.1 christos #endif 1106 1.1 christos #if defined(YYDESTRUCT_CALL) 1107 1.1 christos #if YYBTYACC 1108 1.1 christos if (!yytrial) 1109 1.1 christos #endif /* YYBTYACC */ 1110 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1111 1.1 christos YYDESTRUCT_CALL("error: discarding state", 1112 1.1 christos yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark); 1113 1.1 christos #else 1114 1.1 christos YYDESTRUCT_CALL("error: discarding state", 1115 1.1 christos yystos[*yystack.s_mark], yystack.l_mark); 1116 1.1 christos #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1117 1.1 christos #endif /* defined(YYDESTRUCT_CALL) */ 1118 1.1 christos --yystack.s_mark; 1119 1.1 christos --yystack.l_mark; 1120 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1121 1.1 christos --yystack.p_mark; 1122 1.1 christos #endif 1123 1.1 christos } 1124 1.1 christos } 1125 1.1 christos } 1126 1.1 christos else 1127 1.1 christos { 1128 1.1 christos if (yychar == YYEOF) goto yyabort; 1129 1.1 christos #if YYDEBUG 1130 1.1 christos if (yydebug) 1131 1.1 christos { 1132 1.2 christos if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 1133 1.1 christos fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", 1134 1.1 christos YYDEBUGSTR, yydepth, yystate, yychar, yys); 1135 1.1 christos } 1136 1.1 christos #endif 1137 1.1 christos #if defined(YYDESTRUCT_CALL) 1138 1.1 christos #if YYBTYACC 1139 1.1 christos if (!yytrial) 1140 1.1 christos #endif /* YYBTYACC */ 1141 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1142 1.1 christos YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc); 1143 1.1 christos #else 1144 1.1 christos YYDESTRUCT_CALL("error: discarding token", yychar, &yylval); 1145 1.1 christos #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1146 1.1 christos #endif /* defined(YYDESTRUCT_CALL) */ 1147 1.1 christos yychar = YYEMPTY; 1148 1.1 christos goto yyloop; 1149 1.1 christos } 1150 1.1 christos 1151 1.1 christos yyreduce: 1152 1.1 christos yym = yylen[yyn]; 1153 1.1 christos #if YYDEBUG 1154 1.1 christos if (yydebug) 1155 1.1 christos { 1156 1.1 christos fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)", 1157 1.1 christos YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]); 1158 1.1 christos #ifdef YYSTYPE_TOSTRING 1159 1.1 christos #if YYBTYACC 1160 1.1 christos if (!yytrial) 1161 1.1 christos #endif /* YYBTYACC */ 1162 1.1 christos if (yym > 0) 1163 1.1 christos { 1164 1.1 christos int i; 1165 1.1 christos fputc('<', stderr); 1166 1.1 christos for (i = yym; i > 0; i--) 1167 1.1 christos { 1168 1.1 christos if (i != yym) fputs(", ", stderr); 1169 1.1 christos fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]], 1170 1.1 christos yystack.l_mark[1-i]), stderr); 1171 1.1 christos } 1172 1.1 christos fputc('>', stderr); 1173 1.1 christos } 1174 1.1 christos #endif 1175 1.1 christos fputc('\n', stderr); 1176 1.1 christos } 1177 1.1 christos #endif 1178 1.1 christos if (yym > 0) 1179 1.1 christos yyval = yystack.l_mark[1-yym]; 1180 1.1 christos else 1181 1.1 christos memset(&yyval, 0, sizeof yyval); 1182 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1183 1.1 christos 1184 1.1 christos /* Perform position reduction */ 1185 1.1 christos memset(&yyloc, 0, sizeof(yyloc)); 1186 1.1 christos #if YYBTYACC 1187 1.1 christos if (!yytrial) 1188 1.1 christos #endif /* YYBTYACC */ 1189 1.1 christos { 1190 1.4 christos YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym); 1191 1.1 christos /* just in case YYERROR is invoked within the action, save 1192 1.1 christos the start of the rhs as the error start position */ 1193 1.4 christos yyerror_loc_range[1] = yystack.p_mark[1-yym]; 1194 1.1 christos } 1195 1.1 christos #endif 1196 1.1 christos 1197 1.1 christos switch (yyn) 1198 1.1 christos { 1199 1.1 christos case 1: 1200 1.1 christos if (!yytrial) 1201 1.1 christos #line 62 "btyacc_destroy1.y" 1202 1.1 christos { yyval.nlist = yystack.l_mark[-5].nlist; } 1203 1.7 christos #line 1202 "btyacc_destroy1.tab.c" 1204 1.1 christos break; 1205 1.1 christos case 2: 1206 1.1 christos if (!yytrial) 1207 1.1 christos #line 64 "btyacc_destroy1.y" 1208 1.1 christos { yyval.nlist = yystack.l_mark[-3].nlist; } 1209 1.7 christos #line 1208 "btyacc_destroy1.tab.c" 1210 1.1 christos break; 1211 1.1 christos case 3: 1212 1.1 christos if (!yytrial) 1213 1.1 christos #line 67 "btyacc_destroy1.y" 1214 1.1 christos { yyval.cval = cGLOBAL; } 1215 1.7 christos #line 1214 "btyacc_destroy1.tab.c" 1216 1.1 christos break; 1217 1.1 christos case 4: 1218 1.1 christos if (!yytrial) 1219 1.1 christos #line 68 "btyacc_destroy1.y" 1220 1.1 christos { yyval.cval = cLOCAL; } 1221 1.7 christos #line 1220 "btyacc_destroy1.tab.c" 1222 1.1 christos break; 1223 1.1 christos case 5: 1224 1.1 christos if (!yytrial) 1225 1.1 christos #line 71 "btyacc_destroy1.y" 1226 1.1 christos { yyval.tval = tREAL; } 1227 1.7 christos #line 1226 "btyacc_destroy1.tab.c" 1228 1.1 christos break; 1229 1.1 christos case 6: 1230 1.1 christos if (!yytrial) 1231 1.1 christos #line 72 "btyacc_destroy1.y" 1232 1.1 christos { yyval.tval = tINTEGER; } 1233 1.7 christos #line 1232 "btyacc_destroy1.tab.c" 1234 1.1 christos break; 1235 1.1 christos case 7: 1236 1.1 christos if (!yytrial) 1237 1.1 christos #line 76 "btyacc_destroy1.y" 1238 1.1 christos { yyval.nlist->s = mksymbol(yystack.l_mark[-2].tval, yystack.l_mark[-2].cval, yystack.l_mark[0].id); 1239 1.1 christos yyval.nlist->next = yystack.l_mark[-1].nlist; 1240 1.1 christos } 1241 1.7 christos #line 1240 "btyacc_destroy1.tab.c" 1242 1.1 christos break; 1243 1.1 christos case 8: 1244 1.1 christos if (!yytrial) 1245 1.1 christos #line 80 "btyacc_destroy1.y" 1246 1.1 christos { yyval.nlist->s = mksymbol(0, 0, yystack.l_mark[0].id); 1247 1.1 christos yyval.nlist->next = NULL; 1248 1.1 christos } 1249 1.7 christos #line 1248 "btyacc_destroy1.tab.c" 1250 1.1 christos break; 1251 1.1 christos case 9: 1252 1.1 christos if (!yytrial) 1253 1.1 christos #line 86 "btyacc_destroy1.y" 1254 1.1 christos { yyval.nlist = yystack.l_mark[-5].nlist; } 1255 1.7 christos #line 1254 "btyacc_destroy1.tab.c" 1256 1.1 christos break; 1257 1.7 christos #line 1256 "btyacc_destroy1.tab.c" 1258 1.1 christos default: 1259 1.1 christos break; 1260 1.1 christos } 1261 1.1 christos yystack.s_mark -= yym; 1262 1.1 christos yystate = *yystack.s_mark; 1263 1.1 christos yystack.l_mark -= yym; 1264 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1265 1.1 christos yystack.p_mark -= yym; 1266 1.1 christos #endif 1267 1.1 christos yym = yylhs[yyn]; 1268 1.1 christos if (yystate == 0 && yym == 0) 1269 1.1 christos { 1270 1.1 christos #if YYDEBUG 1271 1.1 christos if (yydebug) 1272 1.1 christos { 1273 1.1 christos fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth); 1274 1.1 christos #ifdef YYSTYPE_TOSTRING 1275 1.1 christos #if YYBTYACC 1276 1.1 christos if (!yytrial) 1277 1.1 christos #endif /* YYBTYACC */ 1278 1.1 christos fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval)); 1279 1.1 christos #endif 1280 1.1 christos fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL); 1281 1.1 christos } 1282 1.1 christos #endif 1283 1.1 christos yystate = YYFINAL; 1284 1.1 christos *++yystack.s_mark = YYFINAL; 1285 1.1 christos *++yystack.l_mark = yyval; 1286 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1287 1.1 christos *++yystack.p_mark = yyloc; 1288 1.1 christos #endif 1289 1.1 christos if (yychar < 0) 1290 1.1 christos { 1291 1.1 christos #if YYBTYACC 1292 1.1 christos do { 1293 1.1 christos if (yylvp < yylve) 1294 1.1 christos { 1295 1.1 christos /* we're currently re-reading tokens */ 1296 1.1 christos yylval = *yylvp++; 1297 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1298 1.1 christos yylloc = *yylpp++; 1299 1.1 christos #endif 1300 1.1 christos yychar = *yylexp++; 1301 1.1 christos break; 1302 1.1 christos } 1303 1.1 christos if (yyps->save) 1304 1.1 christos { 1305 1.1 christos /* in trial mode; save scanner results for future parse attempts */ 1306 1.1 christos if (yylvp == yylvlim) 1307 1.1 christos { /* Enlarge lexical value queue */ 1308 1.1 christos size_t p = (size_t) (yylvp - yylvals); 1309 1.1 christos size_t s = (size_t) (yylvlim - yylvals); 1310 1.1 christos 1311 1.1 christos s += YYLVQUEUEGROWTH; 1312 1.4 christos if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) 1313 1.1 christos goto yyenomem; 1314 1.4 christos if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) 1315 1.1 christos goto yyenomem; 1316 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1317 1.4 christos if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) 1318 1.1 christos goto yyenomem; 1319 1.1 christos #endif 1320 1.1 christos yylvp = yylve = yylvals + p; 1321 1.1 christos yylvlim = yylvals + s; 1322 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1323 1.1 christos yylpp = yylpe = yylpsns + p; 1324 1.1 christos yylplim = yylpsns + s; 1325 1.1 christos #endif 1326 1.1 christos yylexp = yylexemes + p; 1327 1.1 christos } 1328 1.2 christos *yylexp = (YYINT) YYLEX; 1329 1.1 christos *yylvp++ = yylval; 1330 1.1 christos yylve++; 1331 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1332 1.1 christos *yylpp++ = yylloc; 1333 1.1 christos yylpe++; 1334 1.1 christos #endif 1335 1.1 christos yychar = *yylexp++; 1336 1.1 christos break; 1337 1.1 christos } 1338 1.1 christos /* normal operation, no conflict encountered */ 1339 1.1 christos #endif /* YYBTYACC */ 1340 1.1 christos yychar = YYLEX; 1341 1.1 christos #if YYBTYACC 1342 1.1 christos } while (0); 1343 1.1 christos #endif /* YYBTYACC */ 1344 1.1 christos if (yychar < 0) yychar = YYEOF; 1345 1.1 christos #if YYDEBUG 1346 1.1 christos if (yydebug) 1347 1.1 christos { 1348 1.2 christos if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 1349 1.2 christos fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", 1350 1.1 christos YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); 1351 1.1 christos } 1352 1.1 christos #endif 1353 1.1 christos } 1354 1.1 christos if (yychar == YYEOF) goto yyaccept; 1355 1.1 christos goto yyloop; 1356 1.1 christos } 1357 1.1 christos if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && 1358 1.1 christos yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) 1359 1.1 christos yystate = yytable[yyn]; 1360 1.1 christos else 1361 1.1 christos yystate = yydgoto[yym]; 1362 1.1 christos #if YYDEBUG 1363 1.1 christos if (yydebug) 1364 1.1 christos { 1365 1.1 christos fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth); 1366 1.1 christos #ifdef YYSTYPE_TOSTRING 1367 1.1 christos #if YYBTYACC 1368 1.1 christos if (!yytrial) 1369 1.1 christos #endif /* YYBTYACC */ 1370 1.1 christos fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval)); 1371 1.1 christos #endif 1372 1.1 christos fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate); 1373 1.1 christos } 1374 1.1 christos #endif 1375 1.1 christos if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 1376 1.2 christos *++yystack.s_mark = (YYINT) yystate; 1377 1.1 christos *++yystack.l_mark = yyval; 1378 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1379 1.1 christos *++yystack.p_mark = yyloc; 1380 1.1 christos #endif 1381 1.1 christos goto yyloop; 1382 1.1 christos #if YYBTYACC 1383 1.1 christos 1384 1.1 christos /* Reduction declares that this path is valid. Set yypath and do a full parse */ 1385 1.1 christos yyvalid: 1386 1.1 christos if (yypath) YYABORT; 1387 1.1 christos while (yyps->save) 1388 1.1 christos { 1389 1.1 christos YYParseState *save = yyps->save; 1390 1.1 christos yyps->save = save->save; 1391 1.1 christos save->save = yypath; 1392 1.1 christos yypath = save; 1393 1.1 christos } 1394 1.1 christos #if YYDEBUG 1395 1.1 christos if (yydebug) 1396 1.1 christos fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n", 1397 1.1 christos YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme)); 1398 1.1 christos #endif 1399 1.1 christos if (yyerrctx) 1400 1.1 christos { 1401 1.1 christos yyFreeState(yyerrctx); 1402 1.1 christos yyerrctx = NULL; 1403 1.1 christos } 1404 1.1 christos yylvp = yylvals + yypath->lexeme; 1405 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1406 1.1 christos yylpp = yylpsns + yypath->lexeme; 1407 1.1 christos #endif 1408 1.1 christos yylexp = yylexemes + yypath->lexeme; 1409 1.1 christos yychar = YYEMPTY; 1410 1.1 christos yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); 1411 1.2 christos memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 1412 1.1 christos yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); 1413 1.1 christos memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1414 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1415 1.1 christos yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base); 1416 1.1 christos memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1417 1.1 christos #endif 1418 1.1 christos yystate = yypath->state; 1419 1.1 christos goto yyloop; 1420 1.1 christos #endif /* YYBTYACC */ 1421 1.1 christos 1422 1.1 christos yyoverflow: 1423 1.1 christos YYERROR_CALL("yacc stack overflow"); 1424 1.1 christos #if YYBTYACC 1425 1.1 christos goto yyabort_nomem; 1426 1.1 christos yyenomem: 1427 1.1 christos YYERROR_CALL("memory exhausted"); 1428 1.1 christos yyabort_nomem: 1429 1.1 christos #endif /* YYBTYACC */ 1430 1.1 christos yyresult = 2; 1431 1.1 christos goto yyreturn; 1432 1.1 christos 1433 1.1 christos yyabort: 1434 1.1 christos yyresult = 1; 1435 1.1 christos goto yyreturn; 1436 1.1 christos 1437 1.1 christos yyaccept: 1438 1.1 christos #if YYBTYACC 1439 1.1 christos if (yyps->save) goto yyvalid; 1440 1.1 christos #endif /* YYBTYACC */ 1441 1.1 christos yyresult = 0; 1442 1.1 christos 1443 1.1 christos yyreturn: 1444 1.1 christos #if defined(YYDESTRUCT_CALL) 1445 1.1 christos if (yychar != YYEOF && yychar != YYEMPTY) 1446 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1447 1.1 christos YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc); 1448 1.1 christos #else 1449 1.1 christos YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval); 1450 1.1 christos #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1451 1.1 christos 1452 1.1 christos { 1453 1.1 christos YYSTYPE *pv; 1454 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1455 1.1 christos YYLTYPE *pp; 1456 1.1 christos 1457 1.1 christos for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp) 1458 1.1 christos YYDESTRUCT_CALL("cleanup: discarding state", 1459 1.1 christos yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp); 1460 1.1 christos #else 1461 1.1 christos for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv) 1462 1.1 christos YYDESTRUCT_CALL("cleanup: discarding state", 1463 1.1 christos yystos[*(yystack.s_base + (pv - yystack.l_base))], pv); 1464 1.1 christos #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1465 1.1 christos } 1466 1.1 christos #endif /* defined(YYDESTRUCT_CALL) */ 1467 1.1 christos 1468 1.1 christos #if YYBTYACC 1469 1.1 christos if (yyerrctx) 1470 1.1 christos { 1471 1.1 christos yyFreeState(yyerrctx); 1472 1.1 christos yyerrctx = NULL; 1473 1.1 christos } 1474 1.1 christos while (yyps) 1475 1.1 christos { 1476 1.1 christos YYParseState *save = yyps; 1477 1.1 christos yyps = save->save; 1478 1.1 christos save->save = NULL; 1479 1.1 christos yyFreeState(save); 1480 1.1 christos } 1481 1.1 christos while (yypath) 1482 1.1 christos { 1483 1.1 christos YYParseState *save = yypath; 1484 1.1 christos yypath = save->save; 1485 1.1 christos save->save = NULL; 1486 1.1 christos yyFreeState(save); 1487 1.1 christos } 1488 1.1 christos #endif /* YYBTYACC */ 1489 1.1 christos yyfreestack(&yystack); 1490 1.1 christos return (yyresult); 1491 1.1 christos } 1492