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