Home | History | Annotate | Line # | Download | only in btyacc
btyacc_destroy1.tab.c revision 1.4
      1 /*	$NetBSD: btyacc_destroy1.tab.c,v 1.4 2018/12/23 15:38:53 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 1
      9 #define YYMINOR 9
     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
    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 short 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 static const char *const destroy1_name[] = {
    336 
    337 "$end",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    338 0,0,0,"'('","')'",0,0,"','",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    339 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    340 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    341 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    342 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    343 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"error","GLOBAL","LOCAL",
    344 "REAL","INTEGER","NAME","$accept","declaration","locnamelist","class","type",
    345 "namelist","illegal-symbol",
    346 };
    347 static const char *const destroy1_rule[] = {
    348 "$accept : declaration",
    349 "declaration : class type namelist '(' class ',' type ')'",
    350 "declaration : type locnamelist '(' class ')'",
    351 "class : GLOBAL",
    352 "class : LOCAL",
    353 "type : REAL",
    354 "type : INTEGER",
    355 "namelist : namelist NAME",
    356 "namelist : NAME",
    357 "locnamelist : namelist '(' LOCAL ',' type ')'",
    358 
    359 };
    360 #endif
    361 
    362 #if YYDEBUG
    363 int      yydebug;
    364 #endif
    365 
    366 int      yyerrflag;
    367 int      yychar;
    368 YYSTYPE  yyval;
    369 YYSTYPE  yylval;
    370 int      yynerrs;
    371 
    372 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    373 YYLTYPE  yyloc; /* position returned by actions */
    374 YYLTYPE  yylloc; /* position from the lexer */
    375 #endif
    376 
    377 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    378 #ifndef YYLLOC_DEFAULT
    379 #define YYLLOC_DEFAULT(loc, rhs, n) \
    380 do \
    381 { \
    382     if (n == 0) \
    383     { \
    384         (loc).first_line   = YYRHSLOC(rhs, 0).last_line; \
    385         (loc).first_column = YYRHSLOC(rhs, 0).last_column; \
    386         (loc).last_line    = YYRHSLOC(rhs, 0).last_line; \
    387         (loc).last_column  = YYRHSLOC(rhs, 0).last_column; \
    388     } \
    389     else \
    390     { \
    391         (loc).first_line   = YYRHSLOC(rhs, 1).first_line; \
    392         (loc).first_column = YYRHSLOC(rhs, 1).first_column; \
    393         (loc).last_line    = YYRHSLOC(rhs, n).last_line; \
    394         (loc).last_column  = YYRHSLOC(rhs, n).last_column; \
    395     } \
    396 } while (0)
    397 #endif /* YYLLOC_DEFAULT */
    398 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
    399 #if YYBTYACC
    400 
    401 #ifndef YYLVQUEUEGROWTH
    402 #define YYLVQUEUEGROWTH 32
    403 #endif
    404 #endif /* YYBTYACC */
    405 
    406 /* define the initial stack-sizes */
    407 #ifdef YYSTACKSIZE
    408 #undef YYMAXDEPTH
    409 #define YYMAXDEPTH  YYSTACKSIZE
    410 #else
    411 #ifdef YYMAXDEPTH
    412 #define YYSTACKSIZE YYMAXDEPTH
    413 #else
    414 #define YYSTACKSIZE 10000
    415 #define YYMAXDEPTH  10000
    416 #endif
    417 #endif
    418 
    419 #ifndef YYINITSTACKSIZE
    420 #define YYINITSTACKSIZE 200
    421 #endif
    422 
    423 typedef struct {
    424     unsigned stacksize;
    425     YYINT    *s_base;
    426     YYINT    *s_mark;
    427     YYINT    *s_last;
    428     YYSTYPE  *l_base;
    429     YYSTYPE  *l_mark;
    430 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    431     YYLTYPE  *p_base;
    432     YYLTYPE  *p_mark;
    433 #endif
    434 } YYSTACKDATA;
    435 #if YYBTYACC
    436 
    437 struct YYParseState_s
    438 {
    439     struct YYParseState_s *save;    /* Previously saved parser state */
    440     YYSTACKDATA            yystack; /* saved parser stack */
    441     int                    state;   /* saved parser state */
    442     int                    errflag; /* saved error recovery status */
    443     int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */
    444     YYINT                  ctry;    /* saved index in yyctable[] for this conflict */
    445 };
    446 typedef struct YYParseState_s YYParseState;
    447 #endif /* YYBTYACC */
    448 /* variables for the parser stack */
    449 static YYSTACKDATA yystack;
    450 #if YYBTYACC
    451 
    452 /* Current parser state */
    453 static YYParseState *yyps = 0;
    454 
    455 /* yypath != NULL: do the full parse, starting at *yypath parser state. */
    456 static YYParseState *yypath = 0;
    457 
    458 /* Base of the lexical value queue */
    459 static YYSTYPE *yylvals = 0;
    460 
    461 /* Current position at lexical value queue */
    462 static YYSTYPE *yylvp = 0;
    463 
    464 /* End position of lexical value queue */
    465 static YYSTYPE *yylve = 0;
    466 
    467 /* The last allocated position at the lexical value queue */
    468 static YYSTYPE *yylvlim = 0;
    469 
    470 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    471 /* Base of the lexical position queue */
    472 static YYLTYPE *yylpsns = 0;
    473 
    474 /* Current position at lexical position queue */
    475 static YYLTYPE *yylpp = 0;
    476 
    477 /* End position of lexical position queue */
    478 static YYLTYPE *yylpe = 0;
    479 
    480 /* The last allocated position at the lexical position queue */
    481 static YYLTYPE *yylplim = 0;
    482 #endif
    483 
    484 /* Current position at lexical token queue */
    485 static YYINT  *yylexp = 0;
    486 
    487 static YYINT  *yylexemes = 0;
    488 #endif /* YYBTYACC */
    489 #line 89 "btyacc_destroy1.y"
    490 
    491 extern int YYLEX_DECL();
    492 extern void YYERROR_DECL();
    493 #line 492 "btyacc_destroy1.tab.c"
    494 
    495 /* Release memory associated with symbol. */
    496 #if ! defined YYDESTRUCT_IS_DECLARED
    497 static void
    498 YYDESTRUCT_DECL()
    499 {
    500     switch (psymb)
    501     {
    502 	case 263:
    503 #line 41 "btyacc_destroy1.y"
    504 	{
    505 		  namelist *p = (*val).nlist;
    506 		  while (p != NULL)
    507 		  { namelist *pp = p;
    508 		    p = p->next;
    509 		    free(pp->s); free(pp);
    510 		  }
    511 		}
    512 	break;
    513 #line 512 "btyacc_destroy1.tab.c"
    514     }
    515 }
    516 #define YYDESTRUCT_IS_DECLARED 1
    517 #endif
    518 
    519 /* For use in generated program */
    520 #define yydepth (int)(yystack.s_mark - yystack.s_base)
    521 #if YYBTYACC
    522 #define yytrial (yyps->save)
    523 #endif /* YYBTYACC */
    524 
    525 #if YYDEBUG
    526 #include <stdio.h>	/* needed for printf */
    527 #endif
    528 
    529 #include <stdlib.h>	/* needed for malloc, etc */
    530 #include <string.h>	/* needed for memset */
    531 
    532 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
    533 static int yygrowstack(YYSTACKDATA *data)
    534 {
    535     int i;
    536     unsigned newsize;
    537     YYINT *newss;
    538     YYSTYPE *newvs;
    539 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    540     YYLTYPE *newps;
    541 #endif
    542 
    543     if ((newsize = data->stacksize) == 0)
    544         newsize = YYINITSTACKSIZE;
    545     else if (newsize >= YYMAXDEPTH)
    546         return YYENOMEM;
    547     else if ((newsize *= 2) > YYMAXDEPTH)
    548         newsize = YYMAXDEPTH;
    549 
    550     i = (int) (data->s_mark - data->s_base);
    551     newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
    552     if (newss == 0)
    553         return YYENOMEM;
    554 
    555     data->s_base = newss;
    556     data->s_mark = newss + i;
    557 
    558     newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
    559     if (newvs == 0)
    560         return YYENOMEM;
    561 
    562     data->l_base = newvs;
    563     data->l_mark = newvs + i;
    564 
    565 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    566     newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
    567     if (newps == 0)
    568         return YYENOMEM;
    569 
    570     data->p_base = newps;
    571     data->p_mark = newps + i;
    572 #endif
    573 
    574     data->stacksize = newsize;
    575     data->s_last = data->s_base + newsize - 1;
    576 
    577 #if YYDEBUG
    578     if (yydebug)
    579         fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
    580 #endif
    581     return 0;
    582 }
    583 
    584 #if YYPURE || defined(YY_NO_LEAKS)
    585 static void yyfreestack(YYSTACKDATA *data)
    586 {
    587     free(data->s_base);
    588     free(data->l_base);
    589 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    590     free(data->p_base);
    591 #endif
    592     memset(data, 0, sizeof(*data));
    593 }
    594 #else
    595 #define yyfreestack(data) /* nothing */
    596 #endif /* YYPURE || defined(YY_NO_LEAKS) */
    597 #if YYBTYACC
    598 
    599 static YYParseState *
    600 yyNewState(unsigned size)
    601 {
    602     YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
    603     if (p == NULL) return NULL;
    604 
    605     p->yystack.stacksize = size;
    606     if (size == 0)
    607     {
    608         p->yystack.s_base = NULL;
    609         p->yystack.l_base = NULL;
    610 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    611         p->yystack.p_base = NULL;
    612 #endif
    613         return p;
    614     }
    615     p->yystack.s_base    = (YYINT *) malloc(size * sizeof(YYINT));
    616     if (p->yystack.s_base == NULL) return NULL;
    617     p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
    618     if (p->yystack.l_base == NULL) return NULL;
    619     memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
    620 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    621     p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
    622     if (p->yystack.p_base == NULL) return NULL;
    623     memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
    624 #endif
    625 
    626     return p;
    627 }
    628 
    629 static void
    630 yyFreeState(YYParseState *p)
    631 {
    632     yyfreestack(&p->yystack);
    633     free(p);
    634 }
    635 #endif /* YYBTYACC */
    636 
    637 #define YYABORT  goto yyabort
    638 #define YYREJECT goto yyabort
    639 #define YYACCEPT goto yyaccept
    640 #define YYERROR  goto yyerrlab
    641 #if YYBTYACC
    642 #define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)
    643 #define YYVALID_NESTED do { if (yyps->save && \
    644                                 yyps->save->save == 0) goto yyvalid; } while(0)
    645 #endif /* YYBTYACC */
    646 
    647 int
    648 YYPARSE_DECL()
    649 {
    650     int yym, yyn, yystate, yyresult;
    651 #if YYBTYACC
    652     int yynewerrflag;
    653     YYParseState *yyerrctx = NULL;
    654 #endif /* YYBTYACC */
    655 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    656     YYLTYPE  yyerror_loc_range[3]; /* position of error start/end (0 unused) */
    657 #endif
    658 #if YYDEBUG
    659     const char *yys;
    660 
    661     if ((yys = getenv("YYDEBUG")) != 0)
    662     {
    663         yyn = *yys;
    664         if (yyn >= '0' && yyn <= '9')
    665             yydebug = yyn - '0';
    666     }
    667     if (yydebug)
    668         fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
    669 #endif
    670 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    671     memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));
    672 #endif
    673 
    674 #if YYBTYACC
    675     yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
    676     yyps->save = 0;
    677 #endif /* YYBTYACC */
    678     yym = 0;
    679     yyn = 0;
    680     yynerrs = 0;
    681     yyerrflag = 0;
    682     yychar = YYEMPTY;
    683     yystate = 0;
    684 
    685 #if YYPURE
    686     memset(&yystack, 0, sizeof(yystack));
    687 #endif
    688 
    689     if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    690     yystack.s_mark = yystack.s_base;
    691     yystack.l_mark = yystack.l_base;
    692 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    693     yystack.p_mark = yystack.p_base;
    694 #endif
    695     yystate = 0;
    696     *yystack.s_mark = 0;
    697 
    698 yyloop:
    699     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
    700     if (yychar < 0)
    701     {
    702 #if YYBTYACC
    703         do {
    704         if (yylvp < yylve)
    705         {
    706             /* we're currently re-reading tokens */
    707             yylval = *yylvp++;
    708 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    709             yylloc = *yylpp++;
    710 #endif
    711             yychar = *yylexp++;
    712             break;
    713         }
    714         if (yyps->save)
    715         {
    716             /* in trial mode; save scanner results for future parse attempts */
    717             if (yylvp == yylvlim)
    718             {   /* Enlarge lexical value queue */
    719                 size_t p = (size_t) (yylvp - yylvals);
    720                 size_t s = (size_t) (yylvlim - yylvals);
    721 
    722                 s += YYLVQUEUEGROWTH;
    723                 if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;
    724                 if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
    725 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    726                 if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
    727 #endif
    728                 yylvp   = yylve = yylvals + p;
    729                 yylvlim = yylvals + s;
    730 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    731                 yylpp   = yylpe = yylpsns + p;
    732                 yylplim = yylpsns + s;
    733 #endif
    734                 yylexp  = yylexemes + p;
    735             }
    736             *yylexp = (YYINT) YYLEX;
    737             *yylvp++ = yylval;
    738             yylve++;
    739 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    740             *yylpp++ = yylloc;
    741             yylpe++;
    742 #endif
    743             yychar = *yylexp++;
    744             break;
    745         }
    746         /* normal operation, no conflict encountered */
    747 #endif /* YYBTYACC */
    748         yychar = YYLEX;
    749 #if YYBTYACC
    750         } while (0);
    751 #endif /* YYBTYACC */
    752         if (yychar < 0) yychar = YYEOF;
    753 #if YYDEBUG
    754         if (yydebug)
    755         {
    756             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
    757             fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
    758                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
    759 #ifdef YYSTYPE_TOSTRING
    760 #if YYBTYACC
    761             if (!yytrial)
    762 #endif /* YYBTYACC */
    763                 fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
    764 #endif
    765             fputc('\n', stderr);
    766         }
    767 #endif
    768     }
    769 #if YYBTYACC
    770 
    771     /* Do we have a conflict? */
    772     if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
    773         yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
    774     {
    775         YYINT ctry;
    776 
    777         if (yypath)
    778         {
    779             YYParseState *save;
    780 #if YYDEBUG
    781             if (yydebug)
    782                 fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
    783                                 YYDEBUGSTR, yydepth, yystate);
    784 #endif
    785             /* Switch to the next conflict context */
    786             save = yypath;
    787             yypath = save->save;
    788             save->save = NULL;
    789             ctry = save->ctry;
    790             if (save->state != yystate) YYABORT;
    791             yyFreeState(save);
    792 
    793         }
    794         else
    795         {
    796 
    797             /* Unresolved conflict - start/continue trial parse */
    798             YYParseState *save;
    799 #if YYDEBUG
    800             if (yydebug)
    801             {
    802                 fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
    803                 if (yyps->save)
    804                     fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
    805                 else
    806                     fputs("Starting trial parse.\n", stderr);
    807             }
    808 #endif
    809             save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
    810             if (save == NULL) goto yyenomem;
    811             save->save            = yyps->save;
    812             save->state           = yystate;
    813             save->errflag         = yyerrflag;
    814             save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
    815             memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
    816             save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
    817             memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
    818 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    819             save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
    820             memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
    821 #endif
    822             ctry                  = yytable[yyn];
    823             if (yyctable[ctry] == -1)
    824             {
    825 #if YYDEBUG
    826                 if (yydebug && yychar >= YYEOF)
    827                     fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
    828 #endif
    829                 ctry++;
    830             }
    831             save->ctry = ctry;
    832             if (yyps->save == NULL)
    833             {
    834                 /* If this is a first conflict in the stack, start saving lexemes */
    835                 if (!yylexemes)
    836                 {
    837                     yylexemes = (YYINT *) malloc((YYLVQUEUEGROWTH) * sizeof(YYINT));
    838                     if (yylexemes == NULL) goto yyenomem;
    839                     yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
    840                     if (yylvals == NULL) goto yyenomem;
    841                     yylvlim   = yylvals + YYLVQUEUEGROWTH;
    842 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    843                     yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
    844                     if (yylpsns == NULL) goto yyenomem;
    845                     yylplim   = yylpsns + YYLVQUEUEGROWTH;
    846 #endif
    847                 }
    848                 if (yylvp == yylve)
    849                 {
    850                     yylvp  = yylve = yylvals;
    851 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    852                     yylpp  = yylpe = yylpsns;
    853 #endif
    854                     yylexp = yylexemes;
    855                     if (yychar >= YYEOF)
    856                     {
    857                         *yylve++ = yylval;
    858 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    859                         *yylpe++ = yylloc;
    860 #endif
    861                         *yylexp  = (YYINT) yychar;
    862                         yychar   = YYEMPTY;
    863                     }
    864                 }
    865             }
    866             if (yychar >= YYEOF)
    867             {
    868                 yylvp--;
    869 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    870                 yylpp--;
    871 #endif
    872                 yylexp--;
    873                 yychar = YYEMPTY;
    874             }
    875             save->lexeme = (int) (yylvp - yylvals);
    876             yyps->save   = save;
    877         }
    878         if (yytable[yyn] == ctry)
    879         {
    880 #if YYDEBUG
    881             if (yydebug)
    882                 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
    883                                 YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
    884 #endif
    885             if (yychar < 0)
    886             {
    887                 yylvp++;
    888 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    889                 yylpp++;
    890 #endif
    891                 yylexp++;
    892             }
    893             if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
    894                 goto yyoverflow;
    895             yystate = yyctable[ctry];
    896             *++yystack.s_mark = (YYINT) yystate;
    897             *++yystack.l_mark = yylval;
    898 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    899             *++yystack.p_mark = yylloc;
    900 #endif
    901             yychar  = YYEMPTY;
    902             if (yyerrflag > 0) --yyerrflag;
    903             goto yyloop;
    904         }
    905         else
    906         {
    907             yyn = yyctable[ctry];
    908             goto yyreduce;
    909         }
    910     } /* End of code dealing with conflicts */
    911 #endif /* YYBTYACC */
    912     if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
    913             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
    914     {
    915 #if YYDEBUG
    916         if (yydebug)
    917             fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
    918                             YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
    919 #endif
    920         if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    921         yystate = yytable[yyn];
    922         *++yystack.s_mark = yytable[yyn];
    923         *++yystack.l_mark = yylval;
    924 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    925         *++yystack.p_mark = yylloc;
    926 #endif
    927         yychar = YYEMPTY;
    928         if (yyerrflag > 0)  --yyerrflag;
    929         goto yyloop;
    930     }
    931     if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
    932             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
    933     {
    934         yyn = yytable[yyn];
    935         goto yyreduce;
    936     }
    937     if (yyerrflag != 0) goto yyinrecovery;
    938 #if YYBTYACC
    939 
    940     yynewerrflag = 1;
    941     goto yyerrhandler;
    942     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
    943 
    944 yyerrlab:
    945     /* explicit YYERROR from an action -- pop the rhs of the rule reduced
    946      * before looking for error recovery */
    947     yystack.s_mark -= yym;
    948     yystate = *yystack.s_mark;
    949     yystack.l_mark -= yym;
    950 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    951     yystack.p_mark -= yym;
    952 #endif
    953 
    954     yynewerrflag = 0;
    955 yyerrhandler:
    956     while (yyps->save)
    957     {
    958         int ctry;
    959         YYParseState *save = yyps->save;
    960 #if YYDEBUG
    961         if (yydebug)
    962             fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
    963                             YYDEBUGSTR, yydepth, yystate, yyps->save->state,
    964                     (int)(yylvp - yylvals - yyps->save->lexeme));
    965 #endif
    966         /* Memorize most forward-looking error state in case it's really an error. */
    967         if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
    968         {
    969             /* Free old saved error context state */
    970             if (yyerrctx) yyFreeState(yyerrctx);
    971             /* Create and fill out new saved error context state */
    972             yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
    973             if (yyerrctx == NULL) goto yyenomem;
    974             yyerrctx->save           = yyps->save;
    975             yyerrctx->state          = yystate;
    976             yyerrctx->errflag        = yyerrflag;
    977             yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
    978             memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
    979             yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
    980             memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
    981 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    982             yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
    983             memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
    984 #endif
    985             yyerrctx->lexeme         = (int) (yylvp - yylvals);
    986         }
    987         yylvp          = yylvals   + save->lexeme;
    988 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    989         yylpp          = yylpsns   + save->lexeme;
    990 #endif
    991         yylexp         = yylexemes + save->lexeme;
    992         yychar         = YYEMPTY;
    993         yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
    994         memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
    995         yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
    996         memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
    997 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    998         yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
    999         memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1000 #endif
   1001         ctry           = ++save->ctry;
   1002         yystate        = save->state;
   1003         /* We tried shift, try reduce now */
   1004         if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
   1005         yyps->save     = save->save;
   1006         save->save     = NULL;
   1007         yyFreeState(save);
   1008 
   1009         /* Nothing left on the stack -- error */
   1010         if (!yyps->save)
   1011         {
   1012 #if YYDEBUG
   1013             if (yydebug)
   1014                 fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
   1015                                 YYPREFIX, yydepth);
   1016 #endif
   1017             /* Restore state as it was in the most forward-advanced error */
   1018             yylvp          = yylvals   + yyerrctx->lexeme;
   1019 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1020             yylpp          = yylpsns   + yyerrctx->lexeme;
   1021 #endif
   1022             yylexp         = yylexemes + yyerrctx->lexeme;
   1023             yychar         = yylexp[-1];
   1024             yylval         = yylvp[-1];
   1025 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1026             yylloc         = yylpp[-1];
   1027 #endif
   1028             yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
   1029             memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   1030             yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
   1031             memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1032 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1033             yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
   1034             memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1035 #endif
   1036             yystate        = yyerrctx->state;
   1037             yyFreeState(yyerrctx);
   1038             yyerrctx       = NULL;
   1039         }
   1040         yynewerrflag = 1;
   1041     }
   1042     if (yynewerrflag == 0) goto yyinrecovery;
   1043 #endif /* YYBTYACC */
   1044 
   1045     YYERROR_CALL("syntax error");
   1046 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1047     yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */
   1048 #endif
   1049 
   1050 #if !YYBTYACC
   1051     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
   1052 yyerrlab:
   1053 #endif
   1054     ++yynerrs;
   1055 
   1056 yyinrecovery:
   1057     if (yyerrflag < 3)
   1058     {
   1059         yyerrflag = 3;
   1060         for (;;)
   1061         {
   1062             if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
   1063                     yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
   1064             {
   1065 #if YYDEBUG
   1066                 if (yydebug)
   1067                     fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
   1068                                     YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
   1069 #endif
   1070                 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   1071                 yystate = yytable[yyn];
   1072                 *++yystack.s_mark = yytable[yyn];
   1073                 *++yystack.l_mark = yylval;
   1074 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1075                 /* lookahead position is error end position */
   1076                 yyerror_loc_range[2] = yylloc;
   1077                 YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
   1078                 *++yystack.p_mark = yyloc;
   1079 #endif
   1080                 goto yyloop;
   1081             }
   1082             else
   1083             {
   1084 #if YYDEBUG
   1085                 if (yydebug)
   1086                     fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
   1087                                     YYDEBUGSTR, yydepth, *yystack.s_mark);
   1088 #endif
   1089                 if (yystack.s_mark <= yystack.s_base) goto yyabort;
   1090 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1091                 /* the current TOS position is the error start position */
   1092                 yyerror_loc_range[1] = *yystack.p_mark;
   1093 #endif
   1094 #if defined(YYDESTRUCT_CALL)
   1095 #if YYBTYACC
   1096                 if (!yytrial)
   1097 #endif /* YYBTYACC */
   1098 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1099                     YYDESTRUCT_CALL("error: discarding state",
   1100                                     yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
   1101 #else
   1102                     YYDESTRUCT_CALL("error: discarding state",
   1103                                     yystos[*yystack.s_mark], yystack.l_mark);
   1104 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1105 #endif /* defined(YYDESTRUCT_CALL) */
   1106                 --yystack.s_mark;
   1107                 --yystack.l_mark;
   1108 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1109                 --yystack.p_mark;
   1110 #endif
   1111             }
   1112         }
   1113     }
   1114     else
   1115     {
   1116         if (yychar == YYEOF) goto yyabort;
   1117 #if YYDEBUG
   1118         if (yydebug)
   1119         {
   1120             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
   1121             fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
   1122                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
   1123         }
   1124 #endif
   1125 #if defined(YYDESTRUCT_CALL)
   1126 #if YYBTYACC
   1127         if (!yytrial)
   1128 #endif /* YYBTYACC */
   1129 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1130             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
   1131 #else
   1132             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
   1133 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1134 #endif /* defined(YYDESTRUCT_CALL) */
   1135         yychar = YYEMPTY;
   1136         goto yyloop;
   1137     }
   1138 
   1139 yyreduce:
   1140     yym = yylen[yyn];
   1141 #if YYDEBUG
   1142     if (yydebug)
   1143     {
   1144         fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
   1145                         YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
   1146 #ifdef YYSTYPE_TOSTRING
   1147 #if YYBTYACC
   1148         if (!yytrial)
   1149 #endif /* YYBTYACC */
   1150             if (yym > 0)
   1151             {
   1152                 int i;
   1153                 fputc('<', stderr);
   1154                 for (i = yym; i > 0; i--)
   1155                 {
   1156                     if (i != yym) fputs(", ", stderr);
   1157                     fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
   1158                                            yystack.l_mark[1-i]), stderr);
   1159                 }
   1160                 fputc('>', stderr);
   1161             }
   1162 #endif
   1163         fputc('\n', stderr);
   1164     }
   1165 #endif
   1166     if (yym > 0)
   1167         yyval = yystack.l_mark[1-yym];
   1168     else
   1169         memset(&yyval, 0, sizeof yyval);
   1170 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1171 
   1172     /* Perform position reduction */
   1173     memset(&yyloc, 0, sizeof(yyloc));
   1174 #if YYBTYACC
   1175     if (!yytrial)
   1176 #endif /* YYBTYACC */
   1177     {
   1178         YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym);
   1179         /* just in case YYERROR is invoked within the action, save
   1180            the start of the rhs as the error start position */
   1181         yyerror_loc_range[1] = yystack.p_mark[1-yym];
   1182     }
   1183 #endif
   1184 
   1185     switch (yyn)
   1186     {
   1187 case 1:
   1188   if (!yytrial)
   1189 #line 62 "btyacc_destroy1.y"
   1190 	{ yyval.nlist = yystack.l_mark[-5].nlist; }
   1191 break;
   1192 case 2:
   1193   if (!yytrial)
   1194 #line 64 "btyacc_destroy1.y"
   1195 	{ yyval.nlist = yystack.l_mark[-3].nlist; }
   1196 break;
   1197 case 3:
   1198   if (!yytrial)
   1199 #line 67 "btyacc_destroy1.y"
   1200 	{ yyval.cval = cGLOBAL; }
   1201 break;
   1202 case 4:
   1203   if (!yytrial)
   1204 #line 68 "btyacc_destroy1.y"
   1205 	{ yyval.cval = cLOCAL; }
   1206 break;
   1207 case 5:
   1208   if (!yytrial)
   1209 #line 71 "btyacc_destroy1.y"
   1210 	{ yyval.tval = tREAL; }
   1211 break;
   1212 case 6:
   1213   if (!yytrial)
   1214 #line 72 "btyacc_destroy1.y"
   1215 	{ yyval.tval = tINTEGER; }
   1216 break;
   1217 case 7:
   1218   if (!yytrial)
   1219 #line 76 "btyacc_destroy1.y"
   1220 	{ yyval.nlist->s = mksymbol(yystack.l_mark[-2].tval, yystack.l_mark[-2].cval, yystack.l_mark[0].id);
   1221 	      yyval.nlist->next = yystack.l_mark[-1].nlist;
   1222 	    }
   1223 break;
   1224 case 8:
   1225   if (!yytrial)
   1226 #line 80 "btyacc_destroy1.y"
   1227 	{ yyval.nlist->s = mksymbol(0, 0, yystack.l_mark[0].id);
   1228 	      yyval.nlist->next = NULL;
   1229 	    }
   1230 break;
   1231 case 9:
   1232   if (!yytrial)
   1233 #line 86 "btyacc_destroy1.y"
   1234 	{ yyval.nlist = yystack.l_mark[-5].nlist; }
   1235 break;
   1236 #line 1235 "btyacc_destroy1.tab.c"
   1237     default:
   1238         break;
   1239     }
   1240     yystack.s_mark -= yym;
   1241     yystate = *yystack.s_mark;
   1242     yystack.l_mark -= yym;
   1243 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1244     yystack.p_mark -= yym;
   1245 #endif
   1246     yym = yylhs[yyn];
   1247     if (yystate == 0 && yym == 0)
   1248     {
   1249 #if YYDEBUG
   1250         if (yydebug)
   1251         {
   1252             fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
   1253 #ifdef YYSTYPE_TOSTRING
   1254 #if YYBTYACC
   1255             if (!yytrial)
   1256 #endif /* YYBTYACC */
   1257                 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
   1258 #endif
   1259             fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
   1260         }
   1261 #endif
   1262         yystate = YYFINAL;
   1263         *++yystack.s_mark = YYFINAL;
   1264         *++yystack.l_mark = yyval;
   1265 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1266         *++yystack.p_mark = yyloc;
   1267 #endif
   1268         if (yychar < 0)
   1269         {
   1270 #if YYBTYACC
   1271             do {
   1272             if (yylvp < yylve)
   1273             {
   1274                 /* we're currently re-reading tokens */
   1275                 yylval = *yylvp++;
   1276 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1277                 yylloc = *yylpp++;
   1278 #endif
   1279                 yychar = *yylexp++;
   1280                 break;
   1281             }
   1282             if (yyps->save)
   1283             {
   1284                 /* in trial mode; save scanner results for future parse attempts */
   1285                 if (yylvp == yylvlim)
   1286                 {   /* Enlarge lexical value queue */
   1287                     size_t p = (size_t) (yylvp - yylvals);
   1288                     size_t s = (size_t) (yylvlim - yylvals);
   1289 
   1290                     s += YYLVQUEUEGROWTH;
   1291                     if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL)
   1292                         goto yyenomem;
   1293                     if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
   1294                         goto yyenomem;
   1295 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1296                     if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
   1297                         goto yyenomem;
   1298 #endif
   1299                     yylvp   = yylve = yylvals + p;
   1300                     yylvlim = yylvals + s;
   1301 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1302                     yylpp   = yylpe = yylpsns + p;
   1303                     yylplim = yylpsns + s;
   1304 #endif
   1305                     yylexp  = yylexemes + p;
   1306                 }
   1307                 *yylexp = (YYINT) YYLEX;
   1308                 *yylvp++ = yylval;
   1309                 yylve++;
   1310 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1311                 *yylpp++ = yylloc;
   1312                 yylpe++;
   1313 #endif
   1314                 yychar = *yylexp++;
   1315                 break;
   1316             }
   1317             /* normal operation, no conflict encountered */
   1318 #endif /* YYBTYACC */
   1319             yychar = YYLEX;
   1320 #if YYBTYACC
   1321             } while (0);
   1322 #endif /* YYBTYACC */
   1323             if (yychar < 0) yychar = YYEOF;
   1324 #if YYDEBUG
   1325             if (yydebug)
   1326             {
   1327                 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
   1328                 fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",
   1329                                 YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
   1330             }
   1331 #endif
   1332         }
   1333         if (yychar == YYEOF) goto yyaccept;
   1334         goto yyloop;
   1335     }
   1336     if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
   1337             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
   1338         yystate = yytable[yyn];
   1339     else
   1340         yystate = yydgoto[yym];
   1341 #if YYDEBUG
   1342     if (yydebug)
   1343     {
   1344         fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
   1345 #ifdef YYSTYPE_TOSTRING
   1346 #if YYBTYACC
   1347         if (!yytrial)
   1348 #endif /* YYBTYACC */
   1349             fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
   1350 #endif
   1351         fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
   1352     }
   1353 #endif
   1354     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   1355     *++yystack.s_mark = (YYINT) yystate;
   1356     *++yystack.l_mark = yyval;
   1357 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1358     *++yystack.p_mark = yyloc;
   1359 #endif
   1360     goto yyloop;
   1361 #if YYBTYACC
   1362 
   1363     /* Reduction declares that this path is valid. Set yypath and do a full parse */
   1364 yyvalid:
   1365     if (yypath) YYABORT;
   1366     while (yyps->save)
   1367     {
   1368         YYParseState *save = yyps->save;
   1369         yyps->save = save->save;
   1370         save->save = yypath;
   1371         yypath = save;
   1372     }
   1373 #if YYDEBUG
   1374     if (yydebug)
   1375         fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
   1376                         YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
   1377 #endif
   1378     if (yyerrctx)
   1379     {
   1380         yyFreeState(yyerrctx);
   1381         yyerrctx = NULL;
   1382     }
   1383     yylvp          = yylvals + yypath->lexeme;
   1384 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1385     yylpp          = yylpsns + yypath->lexeme;
   1386 #endif
   1387     yylexp         = yylexemes + yypath->lexeme;
   1388     yychar         = YYEMPTY;
   1389     yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
   1390     memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   1391     yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
   1392     memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1393 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1394     yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
   1395     memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1396 #endif
   1397     yystate        = yypath->state;
   1398     goto yyloop;
   1399 #endif /* YYBTYACC */
   1400 
   1401 yyoverflow:
   1402     YYERROR_CALL("yacc stack overflow");
   1403 #if YYBTYACC
   1404     goto yyabort_nomem;
   1405 yyenomem:
   1406     YYERROR_CALL("memory exhausted");
   1407 yyabort_nomem:
   1408 #endif /* YYBTYACC */
   1409     yyresult = 2;
   1410     goto yyreturn;
   1411 
   1412 yyabort:
   1413     yyresult = 1;
   1414     goto yyreturn;
   1415 
   1416 yyaccept:
   1417 #if YYBTYACC
   1418     if (yyps->save) goto yyvalid;
   1419 #endif /* YYBTYACC */
   1420     yyresult = 0;
   1421 
   1422 yyreturn:
   1423 #if defined(YYDESTRUCT_CALL)
   1424     if (yychar != YYEOF && yychar != YYEMPTY)
   1425 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1426         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
   1427 #else
   1428         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
   1429 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1430 
   1431     {
   1432         YYSTYPE *pv;
   1433 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1434         YYLTYPE *pp;
   1435 
   1436         for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
   1437              YYDESTRUCT_CALL("cleanup: discarding state",
   1438                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
   1439 #else
   1440         for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
   1441              YYDESTRUCT_CALL("cleanup: discarding state",
   1442                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
   1443 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1444     }
   1445 #endif /* defined(YYDESTRUCT_CALL) */
   1446 
   1447 #if YYBTYACC
   1448     if (yyerrctx)
   1449     {
   1450         yyFreeState(yyerrctx);
   1451         yyerrctx = NULL;
   1452     }
   1453     while (yyps)
   1454     {
   1455         YYParseState *save = yyps;
   1456         yyps = save->save;
   1457         save->save = NULL;
   1458         yyFreeState(save);
   1459     }
   1460     while (yypath)
   1461     {
   1462         YYParseState *save = yypath;
   1463         yypath = save->save;
   1464         save->save = NULL;
   1465         yyFreeState(save);
   1466     }
   1467 #endif /* YYBTYACC */
   1468     yyfreestack(&yystack);
   1469     return (yyresult);
   1470 }
   1471