Home | History | Annotate | Download | only in bison
      1                                                              -*- C -*-
      2 
      3 # Yacc compatible skeleton for Bison
      4 
      5 # Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation,
      6 # Inc.
      7 
      8 # This program is free software: you can redistribute it and/or modify
      9 # it under the terms of the GNU General Public License as published by
     10 # the Free Software Foundation, either version 3 of the License, or
     11 # (at your option) any later version.
     12 #
     13 # This program is distributed in the hope that it will be useful,
     14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     16 # GNU General Public License for more details.
     17 #
     18 # You should have received a copy of the GNU General Public License
     19 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
     20 
     21 # Check the value of %define api.push-pull.
     22 b4_percent_define_default([[api.push-pull]], [[pull]])
     23 b4_percent_define_check_values([[[[api.push-pull]],
     24                                  [[pull]], [[push]], [[both]]]])
     25 b4_define_flag_if([pull]) m4_define([b4_pull_flag], [[1]])
     26 b4_define_flag_if([push]) m4_define([b4_push_flag], [[1]])
     27 m4_case(b4_percent_define_get([[api.push-pull]]),
     28         [pull], [m4_define([b4_push_flag], [[0]])],
     29         [push], [m4_define([b4_pull_flag], [[0]])])
     30 
     31 # Handle BISON_USE_PUSH_FOR_PULL for the test suite.  So that push parsing
     32 # tests function as written, do not let BISON_USE_PUSH_FOR_PULL modify the
     33 # behavior of Bison at all when push parsing is already requested.
     34 b4_define_flag_if([use_push_for_pull])
     35 b4_use_push_for_pull_if([
     36   b4_push_if([m4_define([b4_use_push_for_pull_flag], [[0]])],
     37              [m4_define([b4_push_flag], [[1]])])])
     38 
     39 # Check the value of %define parse.lac and friends, where LAC stands for
     40 # lookahead correction.
     41 b4_percent_define_default([[parse.lac]], [[none]])
     42 b4_percent_define_default([[parse.lac.es-capacity-initial]], [[20]])
     43 b4_percent_define_default([[parse.lac.memory-trace]], [[failures]])
     44 b4_percent_define_check_values([[[[parse.lac]], [[full]], [[none]]]],
     45                                [[[[parse.lac.memory-trace]],
     46                                  [[failures]], [[full]]]])
     47 b4_define_flag_if([lac])
     48 m4_define([b4_lac_flag],
     49           [m4_if(b4_percent_define_get([[parse.lac]]),
     50                  [none], [[0]], [[1]])])
     51 
     52 m4_include(b4_pkgdatadir/[c.m4])
     53 
     54 ## ---------------- ##
     55 ## Default values.  ##
     56 ## ---------------- ##
     57 
     58 # Stack parameters.
     59 m4_define_default([b4_stack_depth_max], [10000])
     60 m4_define_default([b4_stack_depth_init],  [200])
     61 
     62 
     63 ## ------------------------ ##
     64 ## Pure/impure interfaces.  ##
     65 ## ------------------------ ##
     66 
     67 b4_percent_define_default([[api.pure]], [[false]])
     68 b4_percent_define_check_values([[[[api.pure]],
     69                                  [[false]], [[true]], [[]], [[full]]]])
     70 
     71 m4_define([b4_pure_flag], [[0]])
     72 m4_case(b4_percent_define_get([[api.pure]]),
     73         [false], [m4_define([b4_pure_flag], [[0]])],
     74         [true],  [m4_define([b4_pure_flag], [[1]])],
     75         [],      [m4_define([b4_pure_flag], [[1]])],
     76         [full],  [m4_define([b4_pure_flag], [[2]])])
     77 
     78 m4_define([b4_pure_if],
     79 [m4_case(b4_pure_flag,
     80          [0], [$2],
     81          [1], [$1],
     82          [2], [$1])])
     83          [m4_fatal([invalid api.pure value: ]$1)])])
     84 
     85 # b4_yyerror_arg_loc_if(ARG)
     86 # --------------------------
     87 # Expand ARG iff yyerror is to be given a location as argument.
     88 m4_define([b4_yyerror_arg_loc_if],
     89 [b4_locations_if([m4_case(b4_pure_flag,
     90                           [1], [m4_ifset([b4_parse_param], [$1])],
     91                           [2], [$1])])])
     92 
     93 # b4_yyerror_args
     94 # ---------------
     95 # Arguments passed to yyerror: user args plus yylloc.
     96 m4_define([b4_yyerror_args],
     97 [b4_yyerror_arg_loc_if([&yylloc, ])dnl
     98 m4_ifset([b4_parse_param], [b4_c_args(b4_parse_param), ])])
     99 
    100 
    101 # b4_lex_param
    102 # ------------
    103 # Accumulate in b4_lex_param all the yylex arguments.
    104 # b4_lex_param arrives quoted twice, but we want to keep only one level.
    105 m4_define([b4_lex_param],
    106 m4_dquote(b4_pure_if([[[[YYSTYPE *]], [[&yylval]]][]dnl
    107 b4_locations_if([, [[YYLTYPE *], [&yylloc]]])m4_ifdef([b4_lex_param], [, ])])dnl
    108 m4_ifdef([b4_lex_param], b4_lex_param)))
    109 
    110 
    111 ## ------------ ##
    112 ## Data Types.  ##
    113 ## ------------ ##
    114 
    115 # b4_int_type(MIN, MAX)
    116 # ---------------------
    117 # Return the smallest int type able to handle numbers ranging from
    118 # MIN to MAX (included).  Overwrite the version from c.m4, which
    119 # uses only C89 types, so that the user can override the shorter
    120 # types, and so that pre-C89 compilers are handled correctly.
    121 m4_define([b4_int_type],
    122 [m4_if(b4_ints_in($@,      [0],   [255]), [1], [yytype_uint8],
    123        b4_ints_in($@,   [-128],   [127]), [1], [yytype_int8],
    124 
    125        b4_ints_in($@,      [0], [65535]), [1], [yytype_uint16],
    126        b4_ints_in($@, [-32768], [32767]), [1], [yytype_int16],
    127 
    128        m4_eval([0 <= $1]),                [1], [unsigned int],
    129 
    130 					       [int])])
    131 
    132 
    133 ## ----------------- ##
    134 ## Semantic Values.  ##
    135 ## ----------------- ##
    136 
    137 
    138 # b4_lhs_value([TYPE])
    139 # --------------------
    140 # Expansion of $<TYPE>$.
    141 m4_define([b4_lhs_value],
    142 [(yyval[]m4_ifval([$1], [.$1]))])
    143 
    144 
    145 # b4_rhs_value(RULE-LENGTH, NUM, [TYPE])
    146 # --------------------------------------
    147 # Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
    148 # symbols on RHS.
    149 m4_define([b4_rhs_value],
    150 [(yyvsp@{($2) - ($1)@}m4_ifval([$3], [.$3]))])
    151 
    152 
    153 
    154 ## ----------- ##
    155 ## Locations.  ##
    156 ## ----------- ##
    157 
    158 # b4_lhs_location()
    159 # -----------------
    160 # Expansion of @$.
    161 m4_define([b4_lhs_location],
    162 [(yyloc)])
    163 
    164 
    165 # b4_rhs_location(RULE-LENGTH, NUM)
    166 # ---------------------------------
    167 # Expansion of @NUM, where the current rule has RULE-LENGTH symbols
    168 # on RHS.
    169 m4_define([b4_rhs_location],
    170 [(yylsp@{($2) - ($1)@})])
    171 
    172 
    173 ## -------------- ##
    174 ## Declarations.  ##
    175 ## -------------- ##
    176 
    177 # b4_declare_scanner_communication_variables
    178 # ------------------------------------------
    179 # Declare the variables that are global, or local to YYPARSE if
    180 # pure-parser.
    181 m4_define([b4_declare_scanner_communication_variables], [[
    182 /* The lookahead symbol.  */
    183 int yychar;
    184 
    185 ]b4_pure_if([[
    186 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
    187 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
    188 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
    189     _Pragma ("GCC diagnostic push") \
    190     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
    191     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
    192 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
    193     _Pragma ("GCC diagnostic pop")
    194 #else
    195 /* Default value used for initialization, for pacifying older GCCs
    196    or non-GCC compilers.  */
    197 static YYSTYPE yyval_default;
    198 # define YY_INITIAL_VALUE(Value) = Value
    199 #endif]b4_locations_if([[
    200 static YYLTYPE yyloc_default][]b4_yyloc_default[;]])])[
    201 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    202 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    203 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
    204 #endif
    205 #ifndef YY_INITIAL_VALUE
    206 # define YY_INITIAL_VALUE(Value) /* Nothing. */
    207 #endif
    208 
    209 /* The semantic value of the lookahead symbol.  */
    210 YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);]b4_locations_if([[
    211 
    212 /* Location data for the lookahead symbol.  */
    213 YYLTYPE yylloc]b4_pure_if([ = yyloc_default], [b4_yyloc_default])[;
    214 ]])b4_pure_if([], [[
    215 
    216 /* Number of syntax errors so far.  */
    217 int yynerrs;]])])
    218 
    219 
    220 # b4_declare_parser_state_variables
    221 # ---------------------------------
    222 # Declare all the variables that are needed to maintain the parser state
    223 # between calls to yypush_parse.
    224 m4_define([b4_declare_parser_state_variables], [b4_pure_if([[
    225     /* Number of syntax errors so far.  */
    226     int yynerrs;
    227 ]])[
    228     int yystate;
    229     /* Number of tokens to shift before error messages enabled.  */
    230     int yyerrstatus;
    231 
    232     /* The stacks and their tools:
    233        `yyss': related to states.
    234        `yyvs': related to semantic values.]b4_locations_if([[
    235        `yyls': related to locations.]])[
    236 
    237        Refer to the stacks through separate pointers, to allow yyoverflow
    238        to reallocate them elsewhere.  */
    239 
    240     /* The state stack.  */
    241     yytype_int16 yyssa[YYINITDEPTH];
    242     yytype_int16 *yyss;
    243     yytype_int16 *yyssp;
    244 
    245     /* The semantic value stack.  */
    246     YYSTYPE yyvsa[YYINITDEPTH];
    247     YYSTYPE *yyvs;
    248     YYSTYPE *yyvsp;]b4_locations_if([[
    249 
    250     /* The location stack.  */
    251     YYLTYPE yylsa[YYINITDEPTH];
    252     YYLTYPE *yyls;
    253     YYLTYPE *yylsp;
    254 
    255     /* The locations where the error started and ended.  */
    256     YYLTYPE yyerror_range[3];]])[
    257 
    258     YYSIZE_T yystacksize;]b4_lac_if([[
    259 
    260     yytype_int16 yyesa@{]b4_percent_define_get([[parse.lac.es-capacity-initial]])[@};
    261     yytype_int16 *yyes;
    262     YYSIZE_T yyes_capacity;]])])
    263 
    264 
    265 # b4_declare_yyparse_push_
    266 # ------------------------
    267 # Declaration of yyparse (and dependencies) when using the push parser
    268 # (including in pull mode).
    269 m4_define([b4_declare_yyparse_push_],
    270 [[#ifndef YYPUSH_MORE_DEFINED
    271 # define YYPUSH_MORE_DEFINED
    272 enum { YYPUSH_MORE = 4 };
    273 #endif
    274 
    275 typedef struct ]b4_prefix[pstate ]b4_prefix[pstate;
    276 
    277 ]b4_pull_if([b4_c_function_decl([b4_prefix[parse]], [[int]], b4_parse_param)
    278 ])b4_c_function_decl([b4_prefix[push_parse]], [[int]],
    279   [[b4_prefix[pstate *ps]], [[ps]]]b4_pure_if([,
    280   [[[int pushed_char]], [[pushed_char]]],
    281   [[b4_api_PREFIX[STYPE const *pushed_val]], [[pushed_val]]]b4_locations_if([,
    282   [[b4_api_PREFIX[LTYPE *pushed_loc]], [[pushed_loc]]]])])m4_ifset([b4_parse_param], [,
    283   b4_parse_param]))
    284 b4_pull_if([b4_c_function_decl([b4_prefix[pull_parse]], [[int]],
    285   [[b4_prefix[pstate *ps]], [[ps]]]m4_ifset([b4_parse_param], [,
    286   b4_parse_param]))])
    287 b4_c_function_decl([b4_prefix[pstate_new]], [b4_prefix[pstate *]],
    288                     [[[void]], []])
    289 b4_c_function_decl([b4_prefix[pstate_delete]], [[void]],
    290                    [[b4_prefix[pstate *ps]], [[ps]]])dnl
    291 ])
    292 
    293 # b4_declare_yyparse_
    294 # -------------------
    295 # When not the push parser.
    296 m4_define([b4_declare_yyparse_],
    297 [[#ifdef YYPARSE_PARAM
    298 ]b4_c_function_decl(b4_prefix[parse], [int],
    299                     [[void *YYPARSE_PARAM], [YYPARSE_PARAM]])[
    300 #else /* ! YYPARSE_PARAM */
    301 ]b4_c_function_decl(b4_prefix[parse], [int], b4_parse_param)[
    302 #endif /* ! YYPARSE_PARAM */]dnl
    303 ])
    304 
    305 
    306 # b4_declare_yyparse
    307 # ------------------
    308 m4_define([b4_declare_yyparse],
    309 [b4_push_if([b4_declare_yyparse_push_],
    310             [b4_declare_yyparse_])[]dnl
    311 ])
    312 
    313 
    314 # b4_shared_declarations
    315 # ----------------------
    316 # Declaration that might either go into the header (if --defines)
    317 # or open coded in the parser body.
    318 m4_define([b4_shared_declarations],
    319 [b4_cpp_guard_open([b4_spec_defines_file])[
    320 ]b4_declare_yydebug[
    321 ]b4_percent_code_get([[requires]])[
    322 ]b4_token_enums_defines(b4_tokens)[
    323 ]b4_declare_yylstype[
    324 ]b4_declare_yyparse[
    325 ]b4_percent_code_get([[provides]])[
    326 ]b4_cpp_guard_close([b4_spec_defines_file])[]dnl
    327 ])
    328 
    329 
    330 ## -------------- ##
    331 ## Output files.  ##
    332 ## -------------- ##
    333 
    334 b4_output_begin([b4_parser_file_name])
    335 b4_copyright([Bison implementation for Yacc-like parsers in C],
    336              [1984, 1989-1990, 2000-2012])[
    337 
    338 /* C LALR(1) parser skeleton written by Richard Stallman, by
    339    simplifying the original so-called "semantic" parser.  */
    340 
    341 /* All symbols defined below should begin with yy or YY, to avoid
    342    infringing on user name space.  This should be done even for local
    343    variables, as they might otherwise be expanded by user macros.
    344    There are some unavoidable exceptions within include files to
    345    define necessary library symbols; they are noted "INFRINGES ON
    346    USER NAME SPACE" below.  */
    347 
    348 ]b4_identification
    349 b4_percent_code_get([[top]])[]dnl
    350 m4_if(b4_api_prefix, [yy], [],
    351 [[/* Substitute the type names.  */
    352 #define YYSTYPE         ]b4_api_PREFIX[STYPE]b4_locations_if([[
    353 #define YYLTYPE         ]b4_api_PREFIX[LTYPE]])])[
    354 ]m4_if(b4_prefix, [yy], [],
    355 [[/* Substitute the variable and function names.  */]b4_pull_if([[
    356 #define yyparse         ]b4_prefix[parse]])b4_push_if([[
    357 #define yypush_parse    ]b4_prefix[push_parse]b4_pull_if([[
    358 #define yypull_parse    ]b4_prefix[pull_parse]])[
    359 #define yypstate_new    ]b4_prefix[pstate_new
    360 #define yypstate_delete ]b4_prefix[pstate_delete
    361 #define yypstate        ]b4_prefix[pstate]])[
    362 #define yylex           ]b4_prefix[lex
    363 #define yyerror         ]b4_prefix[error
    364 #define yylval          ]b4_prefix[lval
    365 #define yychar          ]b4_prefix[char
    366 #define yydebug         ]b4_prefix[debug
    367 #define yynerrs         ]b4_prefix[nerrs]b4_locations_if([[
    368 #define yylloc          ]b4_prefix[lloc]])])[
    369 
    370 /* Copy the first part of user declarations.  */
    371 ]b4_user_pre_prologue[
    372 
    373 ]b4_null_define[
    374 
    375 /* Enabling verbose error messages.  */
    376 #ifdef YYERROR_VERBOSE
    377 # undef YYERROR_VERBOSE
    378 # define YYERROR_VERBOSE 1
    379 #else
    380 # define YYERROR_VERBOSE ]b4_error_verbose_flag[
    381 #endif
    382 
    383 ]m4_ifval(m4_quote(b4_spec_defines_file),
    384 [[/* In a future release of Bison, this section will be replaced
    385    by #include "@basename(]b4_spec_defines_file[@)".  */
    386 ]])dnl
    387 b4_shared_declarations[
    388 
    389 /* Copy the second part of user declarations.  */
    390 ]b4_user_post_prologue
    391 b4_percent_code_get[]dnl
    392 
    393 [#ifdef short
    394 # undef short
    395 #endif
    396 
    397 #ifdef YYTYPE_UINT8
    398 typedef YYTYPE_UINT8 yytype_uint8;
    399 #else
    400 typedef unsigned char yytype_uint8;
    401 #endif
    402 
    403 #ifdef YYTYPE_INT8
    404 typedef YYTYPE_INT8 yytype_int8;
    405 #elif ]b4_c_modern[
    406 typedef signed char yytype_int8;
    407 #else
    408 typedef short int yytype_int8;
    409 #endif
    410 
    411 #ifdef YYTYPE_UINT16
    412 typedef YYTYPE_UINT16 yytype_uint16;
    413 #else
    414 typedef unsigned short int yytype_uint16;
    415 #endif
    416 
    417 #ifdef YYTYPE_INT16
    418 typedef YYTYPE_INT16 yytype_int16;
    419 #else
    420 typedef short int yytype_int16;
    421 #endif
    422 
    423 #ifndef YYSIZE_T
    424 # ifdef __SIZE_TYPE__
    425 #  define YYSIZE_T __SIZE_TYPE__
    426 # elif defined size_t
    427 #  define YYSIZE_T size_t
    428 # elif ! defined YYSIZE_T && ]b4_c_modern[
    429 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
    430 #  define YYSIZE_T size_t
    431 # else
    432 #  define YYSIZE_T unsigned int
    433 # endif
    434 #endif
    435 
    436 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
    437 
    438 #ifndef YY_
    439 # if defined YYENABLE_NLS && YYENABLE_NLS
    440 #  if ENABLE_NLS
    441 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
    442 #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
    443 #  endif
    444 # endif
    445 # ifndef YY_
    446 #  define YY_(Msgid) Msgid
    447 # endif
    448 #endif
    449 
    450 /* Suppress unused-variable warnings by "using" E.  */
    451 #if ! defined lint || defined __GNUC__
    452 # define YYUSE(E) ((void) (E))
    453 #else
    454 # define YYUSE(E) /* empty */
    455 #endif
    456 
    457 /* Identity function, used to suppress warnings about constant conditions.  */
    458 #ifndef lint
    459 # define YYID(N) (N)
    460 #else
    461 ]b4_c_function_def([YYID], [static int], [[int yyi], [yyi]])[
    462 {
    463   return yyi;
    464 }
    465 #endif
    466 
    467 #if ]b4_lac_if([[1]], [[! defined yyoverflow || YYERROR_VERBOSE]])[
    468 
    469 /* The parser invokes alloca or malloc; define the necessary symbols.  */]dnl
    470 b4_push_if([], [b4_lac_if([], [[
    471 
    472 # ifdef YYSTACK_USE_ALLOCA
    473 #  if YYSTACK_USE_ALLOCA
    474 #   ifdef __GNUC__
    475 #    define YYSTACK_ALLOC __builtin_alloca
    476 #   elif defined __BUILTIN_VA_ARG_INCR
    477 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
    478 #   elif defined _AIX
    479 #    define YYSTACK_ALLOC __alloca
    480 #   elif defined _MSC_VER
    481 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
    482 #    define alloca _alloca
    483 #   else
    484 #    define YYSTACK_ALLOC alloca
    485 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && ]b4_c_modern[
    486 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
    487       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
    488 #     ifndef EXIT_SUCCESS
    489 #      define EXIT_SUCCESS 0
    490 #     endif
    491 #    endif
    492 #   endif
    493 #  endif
    494 # endif]])])[
    495 
    496 # ifdef YYSTACK_ALLOC
    497    /* Pacify GCC's `empty if-body' warning.  */
    498 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
    499 #  ifndef YYSTACK_ALLOC_MAXIMUM
    500     /* The OS might guarantee only one guard page at the bottom of the stack,
    501        and a page size can be as small as 4096 bytes.  So we cannot safely
    502        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
    503        to allow for a few compiler-allocated temporary stack slots.  */
    504 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
    505 #  endif
    506 # else
    507 #  define YYSTACK_ALLOC YYMALLOC
    508 #  define YYSTACK_FREE YYFREE
    509 #  ifndef YYSTACK_ALLOC_MAXIMUM
    510 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
    511 #  endif
    512 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
    513        && ! ((defined YYMALLOC || defined malloc) \
    514 	     && (defined YYFREE || defined free)))
    515 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
    516 #   ifndef EXIT_SUCCESS
    517 #    define EXIT_SUCCESS 0
    518 #   endif
    519 #  endif
    520 #  ifndef YYMALLOC
    521 #   define YYMALLOC malloc
    522 #   if ! defined malloc && ! defined EXIT_SUCCESS && ]b4_c_modern[
    523 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
    524 #   endif
    525 #  endif
    526 #  ifndef YYFREE
    527 #   define YYFREE free
    528 #   if ! defined free && ! defined EXIT_SUCCESS && ]b4_c_modern[
    529 void free (void *); /* INFRINGES ON USER NAME SPACE */
    530 #   endif
    531 #  endif
    532 # endif]b4_lac_if([[
    533 # define YYCOPY_NEEDED 1]])[
    534 #endif]b4_lac_if([], [[ /* ! defined yyoverflow || YYERROR_VERBOSE */]])[
    535 
    536 
    537 #if (! defined yyoverflow \
    538      && (! defined __cplusplus \
    539 	 || (]b4_locations_if([[defined ]b4_api_PREFIX[LTYPE_IS_TRIVIAL && ]b4_api_PREFIX[LTYPE_IS_TRIVIAL \
    540 	     && ]])[defined ]b4_api_PREFIX[STYPE_IS_TRIVIAL && ]b4_api_PREFIX[STYPE_IS_TRIVIAL)))
    541 
    542 /* A type that is properly aligned for any stack member.  */
    543 union yyalloc
    544 {
    545   yytype_int16 yyss_alloc;
    546   YYSTYPE yyvs_alloc;]b4_locations_if([
    547   YYLTYPE yyls_alloc;])[
    548 };
    549 
    550 /* The size of the maximum gap between one aligned stack and the next.  */
    551 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
    552 
    553 /* The size of an array large to enough to hold all stacks, each with
    554    N elements.  */
    555 ]b4_locations_if(
    556 [# define YYSTACK_BYTES(N) \
    557      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
    558       + 2 * YYSTACK_GAP_MAXIMUM)],
    559 [# define YYSTACK_BYTES(N) \
    560      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
    561       + YYSTACK_GAP_MAXIMUM)])[
    562 
    563 # define YYCOPY_NEEDED 1
    564 
    565 /* Relocate STACK from its old location to the new one.  The
    566    local variables YYSIZE and YYSTACKSIZE give the old and new number of
    567    elements in the stack, and YYPTR gives the new location of the
    568    stack.  Advance YYPTR to a properly aligned location for the next
    569    stack.  */
    570 # define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
    571     do									\
    572       {									\
    573 	YYSIZE_T yynewbytes;						\
    574 	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
    575 	Stack = &yyptr->Stack_alloc;					\
    576 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
    577 	yyptr += yynewbytes / sizeof (*yyptr);				\
    578       }									\
    579     while (YYID (0))
    580 
    581 #endif
    582 
    583 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
    584 /* Copy COUNT objects from SRC to DST.  The source and destination do
    585    not overlap.  */
    586 # ifndef YYCOPY
    587 #  if defined __GNUC__ && 1 < __GNUC__
    588 #   define YYCOPY(Dst, Src, Count) \
    589       __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
    590 #  else
    591 #   define YYCOPY(Dst, Src, Count)              \
    592       do                                        \
    593         {                                       \
    594           YYSIZE_T yyi;                         \
    595           for (yyi = 0; yyi < (Count); yyi++)   \
    596             (Dst)[yyi] = (Src)[yyi];            \
    597         }                                       \
    598       while (YYID (0))
    599 #  endif
    600 # endif
    601 #endif /* !YYCOPY_NEEDED */
    602 
    603 /* YYFINAL -- State number of the termination state.  */
    604 #define YYFINAL  ]b4_final_state_number[
    605 /* YYLAST -- Last index in YYTABLE.  */
    606 #define YYLAST   ]b4_last[
    607 
    608 /* YYNTOKENS -- Number of terminals.  */
    609 #define YYNTOKENS  ]b4_tokens_number[
    610 /* YYNNTS -- Number of nonterminals.  */
    611 #define YYNNTS  ]b4_nterms_number[
    612 /* YYNRULES -- Number of rules.  */
    613 #define YYNRULES  ]b4_rules_number[
    614 /* YYNRULES -- Number of states.  */
    615 #define YYNSTATES  ]b4_states_number[
    616 
    617 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
    618 #define YYUNDEFTOK  ]b4_undef_token_number[
    619 #define YYMAXUTOK   ]b4_user_token_number_max[
    620 
    621 #define YYTRANSLATE(YYX)						\
    622   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
    623 
    624 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
    625 static const ]b4_int_type_for([b4_translate])[ yytranslate[] =
    626 {
    627   ]b4_translate[
    628 };
    629 
    630 #if ]b4_api_PREFIX[DEBUG
    631 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
    632    YYRHS.  */
    633 static const ]b4_int_type_for([b4_prhs])[ yyprhs[] =
    634 {
    635   ]b4_prhs[
    636 };
    637 
    638 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
    639 static const ]b4_int_type_for([b4_rhs])[ yyrhs[] =
    640 {
    641   ]b4_rhs[
    642 };
    643 
    644 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
    645 static const ]b4_int_type_for([b4_rline])[ yyrline[] =
    646 {
    647   ]b4_rline[
    648 };
    649 #endif
    650 
    651 #if ]b4_api_PREFIX[DEBUG || YYERROR_VERBOSE || ]b4_token_table_flag[
    652 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    653    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
    654 static const char *const yytname[] =
    655 {
    656   ]b4_tname[
    657 };
    658 #endif
    659 
    660 # ifdef YYPRINT
    661 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
    662    token YYLEX-NUM.  */
    663 static const ]b4_int_type_for([b4_toknum])[ yytoknum[] =
    664 {
    665   ]b4_toknum[
    666 };
    667 # endif
    668 
    669 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
    670 static const ]b4_int_type_for([b4_r1])[ yyr1[] =
    671 {
    672   ]b4_r1[
    673 };
    674 
    675 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
    676 static const ]b4_int_type_for([b4_r2])[ yyr2[] =
    677 {
    678   ]b4_r2[
    679 };
    680 
    681 /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
    682    Performed when YYTABLE doesn't specify something else to do.  Zero
    683    means the default is an error.  */
    684 static const ]b4_int_type_for([b4_defact])[ yydefact[] =
    685 {
    686   ]b4_defact[
    687 };
    688 
    689 /* YYDEFGOTO[NTERM-NUM].  */
    690 static const ]b4_int_type_for([b4_defgoto])[ yydefgoto[] =
    691 {
    692   ]b4_defgoto[
    693 };
    694 
    695 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    696    STATE-NUM.  */
    697 #define YYPACT_NINF ]b4_pact_ninf[
    698 static const ]b4_int_type_for([b4_pact])[ yypact[] =
    699 {
    700   ]b4_pact[
    701 };
    702 
    703 /* YYPGOTO[NTERM-NUM].  */
    704 static const ]b4_int_type_for([b4_pgoto])[ yypgoto[] =
    705 {
    706   ]b4_pgoto[
    707 };
    708 
    709 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    710    positive, shift that token.  If negative, reduce the rule which
    711    number is the opposite.  If YYTABLE_NINF, syntax error.  */
    712 #define YYTABLE_NINF ]b4_table_ninf[
    713 static const ]b4_int_type_for([b4_table])[ yytable[] =
    714 {
    715   ]b4_table[
    716 };
    717 
    718 #define yypact_value_is_default(Yystate) \
    719   ]b4_table_value_equals([[pact]], [[Yystate]], [b4_pact_ninf])[
    720 
    721 #define yytable_value_is_error(Yytable_value) \
    722   ]b4_table_value_equals([[table]], [[Yytable_value]], [b4_table_ninf])[
    723 
    724 static const ]b4_int_type_for([b4_check])[ yycheck[] =
    725 {
    726   ]b4_check[
    727 };
    728 
    729 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    730    symbol of state STATE-NUM.  */
    731 static const ]b4_int_type_for([b4_stos])[ yystos[] =
    732 {
    733   ]b4_stos[
    734 };
    735 
    736 #define yyerrok		(yyerrstatus = 0)
    737 #define yyclearin	(yychar = YYEMPTY)
    738 #define YYEMPTY		(-2)
    739 #define YYEOF		0
    740 
    741 #define YYACCEPT	goto yyacceptlab
    742 #define YYABORT		goto yyabortlab
    743 #define YYERROR		goto yyerrorlab
    744 
    745 
    746 /* Like YYERROR except do call yyerror.  This remains here temporarily
    747    to ease the transition to the new meaning of YYERROR, for GCC.
    748    Once GCC version 2 has supplanted version 1, this can go.  However,
    749    YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
    750    in Bison 2.4.2's NEWS entry, where a plan to phase it out is
    751    discussed.  */
    752 
    753 #define YYFAIL		goto yyerrlab
    754 #if defined YYFAIL
    755   /* This is here to suppress warnings from the GCC cpp's
    756      -Wunused-macros.  Normally we don't worry about that warning, but
    757      some users do, and we want to make it easy for users to remove
    758      YYFAIL uses, which will produce warnings from Bison 2.5.  */
    759 #endif
    760 
    761 #define YYRECOVERING()  (!!yyerrstatus)
    762 
    763 #define YYBACKUP(Token, Value)                                  \
    764 do                                                              \
    765   if (yychar == YYEMPTY)                                        \
    766     {                                                           \
    767       yychar = (Token);                                         \
    768       yylval = (Value);                                         \
    769       YYPOPSTACK (yylen);                                       \
    770       yystate = *yyssp;                                         \]b4_lac_if([[
    771       YY_LAC_DISCARD ("YYBACKUP");                              \]])[
    772       goto yybackup;                                            \
    773     }                                                           \
    774   else                                                          \
    775     {                                                           \
    776       yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")); \
    777       YYERROR;							\
    778     }								\
    779 while (YYID (0))
    780 
    781 /* Error token number */
    782 #define YYTERROR	1
    783 #define YYERRCODE	256
    784 
    785 ]b4_locations_if([[
    786 ]b4_yylloc_default_define[
    787 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
    788 ]])[
    789 ]b4_yy_location_print_define[
    790 
    791 /* YYLEX -- calling `yylex' with the right arguments.  */
    792 #ifdef YYLEX_PARAM
    793 # define YYLEX yylex (]b4_pure_if([&yylval[]b4_locations_if([, &yylloc]), ])[YYLEX_PARAM)
    794 #else
    795 # define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[
    796 #endif
    797 
    798 /* Enable debugging if requested.  */
    799 #if ]b4_api_PREFIX[DEBUG
    800 
    801 # ifndef YYFPRINTF
    802 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
    803 #  define YYFPRINTF fprintf
    804 # endif
    805 
    806 # define YYDPRINTF(Args)			\
    807 do {						\
    808   if (yydebug)					\
    809     YYFPRINTF Args;				\
    810 } while (YYID (0))
    811 
    812 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
    813 do {									  \
    814   if (yydebug)								  \
    815     {									  \
    816       YYFPRINTF (stderr, "%s ", Title);					  \
    817       yy_symbol_print (stderr,						  \
    818 		  Type, Value]b4_locations_if([, Location])[]b4_user_args[); \
    819       YYFPRINTF (stderr, "\n");						  \
    820     }									  \
    821 } while (YYID (0))
    822 
    823 ]b4_yy_symbol_print_generate([b4_c_function_def])[
    824 
    825 /*------------------------------------------------------------------.
    826 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
    827 | TOP (included).                                                   |
    828 `------------------------------------------------------------------*/
    829 
    830 ]b4_c_function_def([yy_stack_print], [static void],
    831 		   [[yytype_int16 *yybottom], [yybottom]],
    832 		   [[yytype_int16 *yytop],    [yytop]])[
    833 {
    834   YYFPRINTF (stderr, "Stack now");
    835   for (; yybottom <= yytop; yybottom++)
    836     {
    837       int yybot = *yybottom;
    838       YYFPRINTF (stderr, " %d", yybot);
    839     }
    840   YYFPRINTF (stderr, "\n");
    841 }
    842 
    843 # define YY_STACK_PRINT(Bottom, Top)				\
    844 do {								\
    845   if (yydebug)							\
    846     yy_stack_print ((Bottom), (Top));				\
    847 } while (YYID (0))
    848 
    849 
    850 /*------------------------------------------------.
    851 | Report that the YYRULE is going to be reduced.  |
    852 `------------------------------------------------*/
    853 
    854 ]b4_c_function_def([yy_reduce_print], [static void],
    855 		   [[YYSTYPE *yyvsp], [yyvsp]],
    856     b4_locations_if([[[YYLTYPE *yylsp], [yylsp]],
    857 		   ])[[int yyrule], [yyrule]]m4_ifset([b4_parse_param], [,
    858 		   b4_parse_param]))[
    859 {
    860   int yynrhs = yyr2[yyrule];
    861   int yyi;
    862   unsigned long int yylno = yyrline[yyrule];
    863   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
    864 	     yyrule - 1, yylno);
    865   /* The symbols being reduced.  */
    866   for (yyi = 0; yyi < yynrhs; yyi++)
    867     {
    868       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
    869       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
    870 		       &]b4_rhs_value(yynrhs, yyi + 1)[
    871 		       ]b4_locations_if([, &]b4_rhs_location(yynrhs, yyi + 1))[]dnl
    872 		       b4_user_args[);
    873       YYFPRINTF (stderr, "\n");
    874     }
    875 }
    876 
    877 # define YY_REDUCE_PRINT(Rule)		\
    878 do {					\
    879   if (yydebug)				\
    880     yy_reduce_print (yyvsp, ]b4_locations_if([yylsp, ])[Rule]b4_user_args[); \
    881 } while (YYID (0))
    882 
    883 /* Nonzero means print parse trace.  It is left uninitialized so that
    884    multiple parsers can coexist.  */
    885 int yydebug;
    886 #else /* !]b4_api_PREFIX[DEBUG */
    887 # define YYDPRINTF(Args)
    888 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
    889 # define YY_STACK_PRINT(Bottom, Top)
    890 # define YY_REDUCE_PRINT(Rule)
    891 #endif /* !]b4_api_PREFIX[DEBUG */
    892 
    893 
    894 /* YYINITDEPTH -- initial size of the parser's stacks.  */
    895 #ifndef	YYINITDEPTH
    896 # define YYINITDEPTH ]b4_stack_depth_init[
    897 #endif
    898 
    899 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
    900    if the built-in stack extension method is used).
    901 
    902    Do not make this value too large; the results are undefined if
    903    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
    904    evaluated with infinite-precision integer arithmetic.  */
    905 
    906 #ifndef YYMAXDEPTH
    907 # define YYMAXDEPTH ]b4_stack_depth_max[
    908 #endif]b4_lac_if([[
    909 
    910 /* Given a state stack such that *YYBOTTOM is its bottom, such that
    911    *YYTOP is either its top or is YYTOP_EMPTY to indicate an empty
    912    stack, and such that *YYCAPACITY is the maximum number of elements it
    913    can hold without a reallocation, make sure there is enough room to
    914    store YYADD more elements.  If not, allocate a new stack using
    915    YYSTACK_ALLOC, copy the existing elements, and adjust *YYBOTTOM,
    916    *YYTOP, and *YYCAPACITY to reflect the new capacity and memory
    917    location.  If *YYBOTTOM != YYBOTTOM_NO_FREE, then free the old stack
    918    using YYSTACK_FREE.  Return 0 if successful or if no reallocation is
    919    required.  Return 1 if memory is exhausted.  */
    920 static int
    921 yy_lac_stack_realloc (YYSIZE_T *yycapacity, YYSIZE_T yyadd,
    922 #if ]b4_api_PREFIX[DEBUG
    923                       char const *yydebug_prefix,
    924                       char const *yydebug_suffix,
    925 #endif
    926                       yytype_int16 **yybottom,
    927                       yytype_int16 *yybottom_no_free,
    928                       yytype_int16 **yytop, yytype_int16 *yytop_empty)
    929 {
    930   YYSIZE_T yysize_old =
    931     *yytop == yytop_empty ? 0 : *yytop - *yybottom + 1;
    932   YYSIZE_T yysize_new = yysize_old + yyadd;
    933   if (*yycapacity < yysize_new)
    934     {
    935       YYSIZE_T yyalloc = 2 * yysize_new;
    936       yytype_int16 *yybottom_new;
    937       /* Use YYMAXDEPTH for maximum stack size given that the stack
    938          should never need to grow larger than the main state stack
    939          needs to grow without LAC.  */
    940       if (YYMAXDEPTH < yysize_new)
    941         {
    942           YYDPRINTF ((stderr, "%smax size exceeded%s", yydebug_prefix,
    943                       yydebug_suffix));
    944           return 1;
    945         }
    946       if (YYMAXDEPTH < yyalloc)
    947         yyalloc = YYMAXDEPTH;
    948       yybottom_new =
    949         (yytype_int16*) YYSTACK_ALLOC (yyalloc * sizeof *yybottom_new);
    950       if (!yybottom_new)
    951         {
    952           YYDPRINTF ((stderr, "%srealloc failed%s", yydebug_prefix,
    953                       yydebug_suffix));
    954           return 1;
    955         }
    956       if (*yytop != yytop_empty)
    957         {
    958           YYCOPY (yybottom_new, *yybottom, yysize_old);
    959           *yytop = yybottom_new + (yysize_old - 1);
    960         }
    961       if (*yybottom != yybottom_no_free)
    962         YYSTACK_FREE (*yybottom);
    963       *yybottom = yybottom_new;
    964       *yycapacity = yyalloc;]m4_if(b4_percent_define_get([[parse.lac.memory-trace]]),
    965                                    [full], [[
    966       YYDPRINTF ((stderr, "%srealloc to %lu%s", yydebug_prefix,
    967                   (unsigned long int) yyalloc, yydebug_suffix));]])[
    968     }
    969   return 0;
    970 }
    971 
    972 /* Establish the initial context for the current lookahead if no initial
    973    context is currently established.
    974 
    975    We define a context as a snapshot of the parser stacks.  We define
    976    the initial context for a lookahead as the context in which the
    977    parser initially examines that lookahead in order to select a
    978    syntactic action.  Thus, if the lookahead eventually proves
    979    syntactically unacceptable (possibly in a later context reached via a
    980    series of reductions), the initial context can be used to determine
    981    the exact set of tokens that would be syntactically acceptable in the
    982    lookahead's place.  Moreover, it is the context after which any
    983    further semantic actions would be erroneous because they would be
    984    determined by a syntactically unacceptable token.
    985 
    986    YY_LAC_ESTABLISH should be invoked when a reduction is about to be
    987    performed in an inconsistent state (which, for the purposes of LAC,
    988    includes consistent states that don't know they're consistent because
    989    their default reductions have been disabled).  Iff there is a
    990    lookahead token, it should also be invoked before reporting a syntax
    991    error.  This latter case is for the sake of the debugging output.
    992 
    993    For parse.lac=full, the implementation of YY_LAC_ESTABLISH is as
    994    follows.  If no initial context is currently established for the
    995    current lookahead, then check if that lookahead can eventually be
    996    shifted if syntactic actions continue from the current context.
    997    Report a syntax error if it cannot.  */
    998 #define YY_LAC_ESTABLISH                                         \
    999 do {                                                             \
   1000   if (!yy_lac_established)                                       \
   1001     {                                                            \
   1002       YYDPRINTF ((stderr,                                        \
   1003                   "LAC: initial context established for %s\n",   \
   1004                   yytname[yytoken]));                            \
   1005       yy_lac_established = 1;                                    \
   1006       {                                                          \
   1007         int yy_lac_status =                                      \
   1008           yy_lac (yyesa, &yyes, &yyes_capacity, yyssp, yytoken); \
   1009         if (yy_lac_status == 2)                                  \
   1010           goto yyexhaustedlab;                                   \
   1011         if (yy_lac_status == 1)                                  \
   1012           goto yyerrlab;                                         \
   1013       }                                                          \
   1014     }                                                            \
   1015 } while (YYID (0))
   1016 
   1017 /* Discard any previous initial lookahead context because of Event,
   1018    which may be a lookahead change or an invalidation of the currently
   1019    established initial context for the current lookahead.
   1020 
   1021    The most common example of a lookahead change is a shift.  An example
   1022    of both cases is syntax error recovery.  That is, a syntax error
   1023    occurs when the lookahead is syntactically erroneous for the
   1024    currently established initial context, so error recovery manipulates
   1025    the parser stacks to try to find a new initial context in which the
   1026    current lookahead is syntactically acceptable.  If it fails to find
   1027    such a context, it discards the lookahead.  */
   1028 #if ]b4_api_PREFIX[DEBUG
   1029 # define YY_LAC_DISCARD(Event)                                           \
   1030 do {                                                                     \
   1031   if (yy_lac_established)                                                \
   1032     {                                                                    \
   1033       if (yydebug)                                                       \
   1034         YYFPRINTF (stderr, "LAC: initial context discarded due to "      \
   1035                    Event "\n");                                          \
   1036       yy_lac_established = 0;                                            \
   1037     }                                                                    \
   1038 } while (YYID (0))
   1039 #else
   1040 # define YY_LAC_DISCARD(Event) yy_lac_established = 0
   1041 #endif
   1042 
   1043 /* Given the stack whose top is *YYSSP, return 0 iff YYTOKEN can
   1044    eventually (after perhaps some reductions) be shifted, return 1 if
   1045    not, or return 2 if memory is exhausted.  As preconditions and
   1046    postconditions: *YYES_CAPACITY is the allocated size of the array to
   1047    which *YYES points, and either *YYES = YYESA or *YYES points to an
   1048    array allocated with YYSTACK_ALLOC.  yy_lac may overwrite the
   1049    contents of either array, alter *YYES and *YYES_CAPACITY, and free
   1050    any old *YYES other than YYESA.  */
   1051 static int
   1052 yy_lac (yytype_int16 *yyesa, yytype_int16 **yyes,
   1053         YYSIZE_T *yyes_capacity, yytype_int16 *yyssp, int yytoken)
   1054 {
   1055   yytype_int16 *yyes_prev = yyssp;
   1056   yytype_int16 *yyesp = yyes_prev;
   1057   YYDPRINTF ((stderr, "LAC: checking lookahead %s:", yytname[yytoken]));
   1058   if (yytoken == YYUNDEFTOK)
   1059     {
   1060       YYDPRINTF ((stderr, " Always Err\n"));
   1061       return 1;
   1062     }
   1063   while (1)
   1064     {
   1065       int yyrule = yypact[*yyesp];
   1066       if (yypact_value_is_default (yyrule)
   1067           || (yyrule += yytoken) < 0 || YYLAST < yyrule
   1068           || yycheck[yyrule] != yytoken)
   1069         {
   1070           yyrule = yydefact[*yyesp];
   1071           if (yyrule == 0)
   1072             {
   1073               YYDPRINTF ((stderr, " Err\n"));
   1074               return 1;
   1075             }
   1076         }
   1077       else
   1078         {
   1079           yyrule = yytable[yyrule];
   1080           if (yytable_value_is_error (yyrule))
   1081             {
   1082               YYDPRINTF ((stderr, " Err\n"));
   1083               return 1;
   1084             }
   1085           if (0 < yyrule)
   1086             {
   1087               YYDPRINTF ((stderr, " S%d\n", yyrule));
   1088               return 0;
   1089             }
   1090           yyrule = -yyrule;
   1091         }
   1092       {
   1093         YYSIZE_T yylen = yyr2[yyrule];
   1094         YYDPRINTF ((stderr, " R%d", yyrule - 1));
   1095         if (yyesp != yyes_prev)
   1096           {
   1097             YYSIZE_T yysize = yyesp - *yyes + 1;
   1098             if (yylen < yysize)
   1099               {
   1100                 yyesp -= yylen;
   1101                 yylen = 0;
   1102               }
   1103             else
   1104               {
   1105                 yylen -= yysize;
   1106                 yyesp = yyes_prev;
   1107               }
   1108           }
   1109         if (yylen)
   1110           yyesp = yyes_prev -= yylen;
   1111       }
   1112       {
   1113         int yystate;
   1114         {
   1115           int yylhs = yyr1[yyrule] - YYNTOKENS;
   1116           yystate = yypgoto[yylhs] + *yyesp;
   1117           if (yystate < 0 || YYLAST < yystate
   1118               || yycheck[yystate] != *yyesp)
   1119             yystate = yydefgoto[yylhs];
   1120           else
   1121             yystate = yytable[yystate];
   1122         }
   1123         if (yyesp == yyes_prev)
   1124           {
   1125             yyesp = *yyes;
   1126             *yyesp = yystate;
   1127           }
   1128         else
   1129           {
   1130             if (yy_lac_stack_realloc (yyes_capacity, 1,
   1131 #if ]b4_api_PREFIX[DEBUG
   1132                                       " (", ")",
   1133 #endif
   1134                                       yyes, yyesa, &yyesp, yyes_prev))
   1135               {
   1136                 YYDPRINTF ((stderr, "\n"));
   1137                 return 2;
   1138               }
   1139             *++yyesp = yystate;
   1140           }
   1141         YYDPRINTF ((stderr, " G%d", yystate));
   1142       }
   1143     }
   1144 }]])[
   1145 
   1146 
   1147 #if YYERROR_VERBOSE
   1148 
   1149 # ifndef yystrlen
   1150 #  if defined __GLIBC__ && defined _STRING_H
   1151 #   define yystrlen strlen
   1152 #  else
   1153 /* Return the length of YYSTR.  */
   1154 ]b4_c_function_def([yystrlen], [static YYSIZE_T],
   1155    [[const char *yystr], [yystr]])[
   1156 {
   1157   YYSIZE_T yylen;
   1158   for (yylen = 0; yystr[yylen]; yylen++)
   1159     continue;
   1160   return yylen;
   1161 }
   1162 #  endif
   1163 # endif
   1164 
   1165 # ifndef yystpcpy
   1166 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
   1167 #   define yystpcpy stpcpy
   1168 #  else
   1169 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
   1170    YYDEST.  */
   1171 ]b4_c_function_def([yystpcpy], [static char *],
   1172    [[char *yydest], [yydest]], [[const char *yysrc], [yysrc]])[
   1173 {
   1174   char *yyd = yydest;
   1175   const char *yys = yysrc;
   1176 
   1177   while ((*yyd++ = *yys++) != '\0')
   1178     continue;
   1179 
   1180   return yyd - 1;
   1181 }
   1182 #  endif
   1183 # endif
   1184 
   1185 # ifndef yytnamerr
   1186 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
   1187    quotes and backslashes, so that it's suitable for yyerror.  The
   1188    heuristic is that double-quoting is unnecessary unless the string
   1189    contains an apostrophe, a comma, or backslash (other than
   1190    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
   1191    null, do not copy; instead, return the length of what the result
   1192    would have been.  */
   1193 static YYSIZE_T
   1194 yytnamerr (char *yyres, const char *yystr)
   1195 {
   1196   if (*yystr == '"')
   1197     {
   1198       YYSIZE_T yyn = 0;
   1199       char const *yyp = yystr;
   1200 
   1201       for (;;)
   1202 	switch (*++yyp)
   1203 	  {
   1204 	  case '\'':
   1205 	  case ',':
   1206 	    goto do_not_strip_quotes;
   1207 
   1208 	  case '\\':
   1209 	    if (*++yyp != '\\')
   1210 	      goto do_not_strip_quotes;
   1211 	    /* Fall through.  */
   1212 	  default:
   1213 	    if (yyres)
   1214 	      yyres[yyn] = *yyp;
   1215 	    yyn++;
   1216 	    break;
   1217 
   1218 	  case '"':
   1219 	    if (yyres)
   1220 	      yyres[yyn] = '\0';
   1221 	    return yyn;
   1222 	  }
   1223     do_not_strip_quotes: ;
   1224     }
   1225 
   1226   if (! yyres)
   1227     return yystrlen (yystr);
   1228 
   1229   return yystpcpy (yyres, yystr) - yyres;
   1230 }
   1231 # endif
   1232 
   1233 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
   1234    about the unexpected token YYTOKEN for the state stack whose top is
   1235    YYSSP.]b4_lac_if([[  In order to see if a particular token T is a
   1236    valid looakhead, invoke yy_lac (YYESA, YYES, YYES_CAPACITY, YYSSP, T).]])[
   1237 
   1238    Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
   1239    not large enough to hold the message.  In that case, also set
   1240    *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
   1241    required number of bytes is too large to store]b4_lac_if([[ or if
   1242    yy_lac returned 2]])[.  */
   1243 static int
   1244 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
   1245                 ]b4_lac_if([[yytype_int16 *yyesa, yytype_int16 **yyes,
   1246                 YYSIZE_T *yyes_capacity, ]])[yytype_int16 *yyssp, int yytoken)
   1247 {
   1248   YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
   1249   YYSIZE_T yysize = yysize0;
   1250   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
   1251   /* Internationalized format string. */
   1252   const char *yyformat = YY_NULL;
   1253   /* Arguments of yyformat. */
   1254   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
   1255   /* Number of reported tokens (one for the "unexpected", one per
   1256      "expected"). */
   1257   int yycount = 0;
   1258 
   1259   /* There are many possibilities here to consider:
   1260      - Assume YYFAIL is not used.  It's too flawed to consider.  See
   1261        <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
   1262        for details.  YYERROR is fine as it does not invoke this
   1263        function.
   1264      - If this state is a consistent state with a default action, then
   1265        the only way this function was invoked is if the default action
   1266        is an error action.  In that case, don't check for expected
   1267        tokens because there are none.
   1268      - The only way there can be no lookahead present (in yychar) is if
   1269        this state is a consistent state with a default action.  Thus,
   1270        detecting the absence of a lookahead is sufficient to determine
   1271        that there is no unexpected or expected token to report.  In that
   1272        case, just report a simple "syntax error".
   1273      - Don't assume there isn't a lookahead just because this state is a
   1274        consistent state with a default action.  There might have been a
   1275        previous inconsistent state, consistent state with a non-default
   1276        action, or user semantic action that manipulated yychar.]b4_lac_if([[
   1277        In the first two cases, it might appear that the current syntax
   1278        error should have been detected in the previous state when yy_lac
   1279        was invoked.  However, at that time, there might have been a
   1280        different syntax error that discarded a different initial context
   1281        during error recovery, leaving behind the current lookahead.]], [[
   1282      - Of course, the expected token list depends on states to have
   1283        correct lookahead information, and it depends on the parser not
   1284        to perform extra reductions after fetching a lookahead from the
   1285        scanner and before detecting a syntax error.  Thus, state merging
   1286        (from LALR or IELR) and default reductions corrupt the expected
   1287        token list.  However, the list is correct for canonical LR with
   1288        one exception: it will still contain any token that will not be
   1289        accepted due to an error action in a later state.]])[
   1290   */
   1291   if (yytoken != YYEMPTY)
   1292     {
   1293       int yyn = yypact[*yyssp];]b4_lac_if([[
   1294       YYDPRINTF ((stderr, "Constructing syntax error message\n"));]])[
   1295       yyarg[yycount++] = yytname[yytoken];
   1296       if (!yypact_value_is_default (yyn))
   1297         {]b4_lac_if([], [[
   1298           /* Start YYX at -YYN if negative to avoid negative indexes in
   1299              YYCHECK.  In other words, skip the first -YYN actions for
   1300              this state because they are default actions.  */
   1301           int yyxbegin = yyn < 0 ? -yyn : 0;
   1302           /* Stay within bounds of both yycheck and yytname.  */
   1303           int yychecklim = YYLAST - yyn + 1;
   1304           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;]])[
   1305           int yyx;]b4_lac_if([[
   1306 
   1307           for (yyx = 0; yyx < YYNTOKENS; ++yyx)
   1308             if (yyx != YYTERROR && yyx != YYUNDEFTOK)
   1309               {
   1310                 {
   1311                   int yy_lac_status = yy_lac (yyesa, yyes, yyes_capacity,
   1312                                               yyssp, yyx);
   1313                   if (yy_lac_status == 2)
   1314                     return 2;
   1315                   if (yy_lac_status == 1)
   1316                     continue;
   1317                 }]], [[
   1318 
   1319           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
   1320             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
   1321                 && !yytable_value_is_error (yytable[yyx + yyn]))
   1322               {]])[
   1323                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
   1324                   {
   1325                     yycount = 1;
   1326                     yysize = yysize0;
   1327                     break;
   1328                   }
   1329                 yyarg[yycount++] = yytname[yyx];
   1330                 {
   1331                   YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
   1332                   if (! (yysize <= yysize1
   1333                          && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
   1334                     return 2;
   1335                   yysize = yysize1;
   1336                 }
   1337               }
   1338         }]b4_lac_if([[
   1339 # if ]b4_api_PREFIX[DEBUG
   1340       else if (yydebug)
   1341         YYFPRINTF (stderr, "No expected tokens.\n");
   1342 # endif]])[
   1343     }
   1344 
   1345   switch (yycount)
   1346     {
   1347 # define YYCASE_(N, S)                      \
   1348       case N:                               \
   1349         yyformat = S;                       \
   1350       break
   1351       YYCASE_(0, YY_("syntax error"));
   1352       YYCASE_(1, YY_("syntax error, unexpected %s"));
   1353       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
   1354       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
   1355       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
   1356       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
   1357 # undef YYCASE_
   1358     }
   1359 
   1360   {
   1361     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
   1362     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
   1363       return 2;
   1364     yysize = yysize1;
   1365   }
   1366 
   1367   if (*yymsg_alloc < yysize)
   1368     {
   1369       *yymsg_alloc = 2 * yysize;
   1370       if (! (yysize <= *yymsg_alloc
   1371              && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
   1372         *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
   1373       return 1;
   1374     }
   1375 
   1376   /* Avoid sprintf, as that infringes on the user's name space.
   1377      Don't have undefined behavior even if the translation
   1378      produced a string with the wrong number of "%s"s.  */
   1379   {
   1380     char *yyp = *yymsg;
   1381     int yyi = 0;
   1382     while ((*yyp = *yyformat) != '\0')
   1383       if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
   1384         {
   1385           yyp += yytnamerr (yyp, yyarg[yyi++]);
   1386           yyformat += 2;
   1387         }
   1388       else
   1389         {
   1390           yyp++;
   1391           yyformat++;
   1392         }
   1393   }
   1394   return 0;
   1395 }
   1396 #endif /* YYERROR_VERBOSE */
   1397 
   1398 ]b4_yydestruct_generate([b4_c_function_def])[
   1399 
   1400 ]b4_pure_if([], [
   1401 
   1402 b4_declare_scanner_communication_variables])[]b4_push_if([[
   1403 
   1404 struct yypstate
   1405   {]b4_declare_parser_state_variables[
   1406     /* Used to determine if this is the first time this instance has
   1407        been used.  */
   1408     int yynew;
   1409   };]b4_pure_if([], [[
   1410 
   1411 static char yypstate_allocated = 0;]])b4_pull_if([
   1412 
   1413 b4_c_function_def([[yyparse]], [[int]], b4_parse_param)[
   1414 {
   1415   return yypull_parse (YY_NULL]m4_ifset([b4_parse_param],
   1416                                   [[, ]b4_c_args(b4_parse_param)])[);
   1417 }
   1418 
   1419 ]b4_c_function_def([[yypull_parse]], [[int]],
   1420   [[[yypstate *yyps]], [[yyps]]]m4_ifset([b4_parse_param], [,
   1421   b4_parse_param]))[
   1422 {
   1423   int yystatus;
   1424   yypstate *yyps_local;]b4_pure_if([[
   1425   int yychar;
   1426   YYSTYPE yylval;]b4_locations_if([[
   1427   static YYLTYPE yyloc_default][]b4_yyloc_default[;
   1428   YYLTYPE yylloc = yyloc_default;]])])[
   1429   if (yyps)
   1430     yyps_local = yyps;
   1431   else
   1432     {
   1433       yyps_local = yypstate_new ();
   1434       if (!yyps_local)
   1435         {]b4_pure_if([[
   1436           yyerror (]b4_yyerror_args[YY_("memory exhausted"));]], [[
   1437           if (!yypstate_allocated)
   1438             yyerror (]b4_yyerror_args[YY_("memory exhausted"));]])[
   1439           return 2;
   1440         }
   1441     }
   1442   do {
   1443     yychar = YYLEX;
   1444     yystatus =
   1445       yypush_parse (yyps_local]b4_pure_if([[, yychar, &yylval]b4_locations_if([[, &yylloc]])])m4_ifset([b4_parse_param], [, b4_c_args(b4_parse_param)])[);
   1446   } while (yystatus == YYPUSH_MORE);
   1447   if (!yyps)
   1448     yypstate_delete (yyps_local);
   1449   return yystatus;
   1450 }]])[
   1451 
   1452 /* Initialize the parser data structure.  */
   1453 ]b4_c_function_def([[yypstate_new]], [[yypstate *]])[
   1454 {
   1455   yypstate *yyps;]b4_pure_if([], [[
   1456   if (yypstate_allocated)
   1457     return YY_NULL;]])[
   1458   yyps = (yypstate *) malloc (sizeof *yyps);
   1459   if (!yyps)
   1460     return YY_NULL;
   1461   yyps->yynew = 1;]b4_pure_if([], [[
   1462   yypstate_allocated = 1;]])[
   1463   return yyps;
   1464 }
   1465 
   1466 ]b4_c_function_def([[yypstate_delete]], [[void]],
   1467                    [[[yypstate *yyps]], [[yyps]]])[
   1468 {
   1469 #ifndef yyoverflow
   1470   /* If the stack was reallocated but the parse did not complete, then the
   1471      stack still needs to be freed.  */
   1472   if (!yyps->yynew && yyps->yyss != yyps->yyssa)
   1473     YYSTACK_FREE (yyps->yyss);
   1474 #endif]b4_lac_if([[
   1475   if (!yyps->yynew && yyps->yyes != yyps->yyesa)
   1476     YYSTACK_FREE (yyps->yyes);]])[
   1477   free (yyps);]b4_pure_if([], [[
   1478   yypstate_allocated = 0;]])[
   1479 }
   1480 ]b4_pure_if([[
   1481 #define ]b4_prefix[nerrs yyps->]b4_prefix[nerrs]])[
   1482 #define yystate yyps->yystate
   1483 #define yyerrstatus yyps->yyerrstatus
   1484 #define yyssa yyps->yyssa
   1485 #define yyss yyps->yyss
   1486 #define yyssp yyps->yyssp
   1487 #define yyvsa yyps->yyvsa
   1488 #define yyvs yyps->yyvs
   1489 #define yyvsp yyps->yyvsp]b4_locations_if([[
   1490 #define yylsa yyps->yylsa
   1491 #define yyls yyps->yyls
   1492 #define yylsp yyps->yylsp
   1493 #define yyerror_range yyps->yyerror_range]])[
   1494 #define yystacksize yyps->yystacksize]b4_lac_if([[
   1495 #define yyesa yyps->yyesa
   1496 #define yyes yyps->yyes
   1497 #define yyes_capacity yyps->yyes_capacity]])[
   1498 
   1499 
   1500 /*---------------.
   1501 | yypush_parse.  |
   1502 `---------------*/
   1503 
   1504 ]b4_c_function_def([[yypush_parse]], [[int]],
   1505   [[[yypstate *yyps]], [[yyps]]]b4_pure_if([,
   1506   [[[int yypushed_char]], [[yypushed_char]]],
   1507   [[[YYSTYPE const *yypushed_val]], [[yypushed_val]]]b4_locations_if([,
   1508   [[[YYLTYPE *yypushed_loc]], [[yypushed_loc]]]])])m4_ifset([b4_parse_param], [,
   1509   b4_parse_param]))], [[
   1510 
   1511 
   1512 /*----------.
   1513 | yyparse.  |
   1514 `----------*/
   1515 
   1516 #ifdef YYPARSE_PARAM
   1517 ]b4_c_function_def([yyparse], [int],
   1518                    [[void *YYPARSE_PARAM], [YYPARSE_PARAM]])[
   1519 #else /* ! YYPARSE_PARAM */
   1520 ]b4_c_function_def([yyparse], [int], b4_parse_param)[
   1521 #endif]])[
   1522 {]b4_pure_if([b4_declare_scanner_communication_variables
   1523 ])b4_push_if([b4_pure_if([], [[
   1524   int yypushed_char = yychar;
   1525   YYSTYPE yypushed_val = yylval;]b4_locations_if([[
   1526   YYLTYPE yypushed_loc = yylloc;]])
   1527 ])],
   1528   [b4_declare_parser_state_variables
   1529 ])b4_lac_if([[
   1530   int yy_lac_established = 0;]])[
   1531   int yyn;
   1532   int yyresult;
   1533   /* Lookahead token as an internal (translated) token number.  */
   1534   int yytoken = 0;
   1535   /* The variables used to return semantic value and location from the
   1536      action routines.  */
   1537   YYSTYPE yyval;]b4_locations_if([[
   1538   YYLTYPE yyloc;]])[
   1539 
   1540 #if YYERROR_VERBOSE
   1541   /* Buffer for error messages, and its allocated size.  */
   1542   char yymsgbuf[128];
   1543   char *yymsg = yymsgbuf;
   1544   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
   1545 #endif
   1546 
   1547 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N)]b4_locations_if([, yylsp -= (N)])[)
   1548 
   1549   /* The number of symbols on the RHS of the reduced rule.
   1550      Keep to zero when no symbol should be popped.  */
   1551   int yylen = 0;]b4_push_if([[
   1552 
   1553   if (!yyps->yynew)
   1554     {
   1555       yyn = yypact[yystate];
   1556       goto yyread_pushed_token;
   1557     }]])[
   1558 
   1559   yyssp = yyss = yyssa;
   1560   yyvsp = yyvs = yyvsa;]b4_locations_if([[
   1561   yylsp = yyls = yylsa;]])[
   1562   yystacksize = YYINITDEPTH;]b4_lac_if([[
   1563 
   1564   yyes = yyesa;
   1565   yyes_capacity = sizeof yyesa / sizeof *yyes;
   1566   if (YYMAXDEPTH < yyes_capacity)
   1567     yyes_capacity = YYMAXDEPTH;]])[
   1568 
   1569   YYDPRINTF ((stderr, "Starting parse\n"));
   1570 
   1571   yystate = 0;
   1572   yyerrstatus = 0;
   1573   yynerrs = 0;
   1574   yychar = YYEMPTY; /* Cause a token to be read.  */
   1575 ]m4_ifdef([b4_initial_action], [
   1576 b4_dollar_pushdef([m4_define([b4_dollar_dollar_used])yylval], [],
   1577                   [b4_push_if([b4_pure_if([*])yypushed_loc], [yylloc])])dnl
   1578 /* User initialization code.  */
   1579 b4_user_initial_action
   1580 b4_dollar_popdef[]dnl
   1581 m4_ifdef([b4_dollar_dollar_used],[[  yyvsp[0] = yylval;
   1582 ]])])dnl
   1583 b4_locations_if([[  yylsp[0] = ]b4_push_if([b4_pure_if([*])yypushed_loc], [yylloc])[;
   1584 ]])dnl
   1585 [  goto yysetstate;
   1586 
   1587 /*------------------------------------------------------------.
   1588 | yynewstate -- Push a new state, which is found in yystate.  |
   1589 `------------------------------------------------------------*/
   1590  yynewstate:
   1591   /* In all cases, when you get here, the value and location stacks
   1592      have just been pushed.  So pushing a state here evens the stacks.  */
   1593   yyssp++;
   1594 
   1595  yysetstate:
   1596   *yyssp = yystate;
   1597 
   1598   if (yyss + yystacksize - 1 <= yyssp)
   1599     {
   1600       /* Get the current used size of the three stacks, in elements.  */
   1601       YYSIZE_T yysize = yyssp - yyss + 1;
   1602 
   1603 #ifdef yyoverflow
   1604       {
   1605 	/* Give user a chance to reallocate the stack.  Use copies of
   1606 	   these so that the &'s don't force the real ones into
   1607 	   memory.  */
   1608 	YYSTYPE *yyvs1 = yyvs;
   1609 	yytype_int16 *yyss1 = yyss;]b4_locations_if([
   1610 	YYLTYPE *yyls1 = yyls;])[
   1611 
   1612 	/* Each stack pointer address is followed by the size of the
   1613 	   data in use in that stack, in bytes.  This used to be a
   1614 	   conditional around just the two extra args, but that might
   1615 	   be undefined if yyoverflow is a macro.  */
   1616 	yyoverflow (YY_("memory exhausted"),
   1617 		    &yyss1, yysize * sizeof (*yyssp),
   1618 		    &yyvs1, yysize * sizeof (*yyvsp),]b4_locations_if([
   1619 		    &yyls1, yysize * sizeof (*yylsp),])[
   1620 		    &yystacksize);
   1621 ]b4_locations_if([
   1622 	yyls = yyls1;])[
   1623 	yyss = yyss1;
   1624 	yyvs = yyvs1;
   1625       }
   1626 #else /* no yyoverflow */
   1627 # ifndef YYSTACK_RELOCATE
   1628       goto yyexhaustedlab;
   1629 # else
   1630       /* Extend the stack our own way.  */
   1631       if (YYMAXDEPTH <= yystacksize)
   1632 	goto yyexhaustedlab;
   1633       yystacksize *= 2;
   1634       if (YYMAXDEPTH < yystacksize)
   1635 	yystacksize = YYMAXDEPTH;
   1636 
   1637       {
   1638 	yytype_int16 *yyss1 = yyss;
   1639 	union yyalloc *yyptr =
   1640 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
   1641 	if (! yyptr)
   1642 	  goto yyexhaustedlab;
   1643 	YYSTACK_RELOCATE (yyss_alloc, yyss);
   1644 	YYSTACK_RELOCATE (yyvs_alloc, yyvs);]b4_locations_if([
   1645 	YYSTACK_RELOCATE (yyls_alloc, yyls);])[
   1646 #  undef YYSTACK_RELOCATE
   1647 	if (yyss1 != yyssa)
   1648 	  YYSTACK_FREE (yyss1);
   1649       }
   1650 # endif
   1651 #endif /* no yyoverflow */
   1652 
   1653       yyssp = yyss + yysize - 1;
   1654       yyvsp = yyvs + yysize - 1;]b4_locations_if([
   1655       yylsp = yyls + yysize - 1;])[
   1656 
   1657       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
   1658 		  (unsigned long int) yystacksize));
   1659 
   1660       if (yyss + yystacksize - 1 <= yyssp)
   1661 	YYABORT;
   1662     }
   1663 
   1664   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
   1665 
   1666   if (yystate == YYFINAL)
   1667     YYACCEPT;
   1668 
   1669   goto yybackup;
   1670 
   1671 /*-----------.
   1672 | yybackup.  |
   1673 `-----------*/
   1674 yybackup:
   1675 
   1676   /* Do appropriate processing given the current state.  Read a
   1677      lookahead token if we need one and don't already have one.  */
   1678 
   1679   /* First try to decide what to do without reference to lookahead token.  */
   1680   yyn = yypact[yystate];
   1681   if (yypact_value_is_default (yyn))
   1682     goto yydefault;
   1683 
   1684   /* Not known => get a lookahead token if don't already have one.  */
   1685 
   1686   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
   1687   if (yychar == YYEMPTY)
   1688     {]b4_push_if([[
   1689       if (!yyps->yynew)
   1690         {]b4_use_push_for_pull_if([], [[
   1691           YYDPRINTF ((stderr, "Return for a new token:\n"));]])[
   1692           yyresult = YYPUSH_MORE;
   1693           goto yypushreturn;
   1694         }
   1695       yyps->yynew = 0;]b4_pure_if([], [[
   1696       /* Restoring the pushed token is only necessary for the first
   1697          yypush_parse invocation since subsequent invocations don't overwrite
   1698          it before jumping to yyread_pushed_token.  */
   1699       yychar = yypushed_char;
   1700       yylval = yypushed_val;]b4_locations_if([[
   1701       yylloc = yypushed_loc;]])])[
   1702 yyread_pushed_token:]])[
   1703       YYDPRINTF ((stderr, "Reading a token: "));]b4_push_if([b4_pure_if([[
   1704       yychar = yypushed_char;
   1705       if (yypushed_val)
   1706         yylval = *yypushed_val;]b4_locations_if([[
   1707       if (yypushed_loc)
   1708         yylloc = *yypushed_loc;]])])], [[
   1709       yychar = YYLEX;]])[
   1710     }
   1711 
   1712   if (yychar <= YYEOF)
   1713     {
   1714       yychar = yytoken = YYEOF;
   1715       YYDPRINTF ((stderr, "Now at end of input.\n"));
   1716     }
   1717   else
   1718     {
   1719       yytoken = YYTRANSLATE (yychar);
   1720       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
   1721     }
   1722 
   1723   /* If the proper action on seeing token YYTOKEN is to reduce or to
   1724      detect an error, take that action.  */
   1725   yyn += yytoken;
   1726   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)]b4_lac_if([[
   1727     {
   1728       YY_LAC_ESTABLISH;
   1729       goto yydefault;
   1730     }]], [[
   1731     goto yydefault;]])[
   1732   yyn = yytable[yyn];
   1733   if (yyn <= 0)
   1734     {
   1735       if (yytable_value_is_error (yyn))
   1736         goto yyerrlab;]b4_lac_if([[
   1737       YY_LAC_ESTABLISH;]])[
   1738       yyn = -yyn;
   1739       goto yyreduce;
   1740     }
   1741 
   1742   /* Count tokens shifted since error; after three, turn off error
   1743      status.  */
   1744   if (yyerrstatus)
   1745     yyerrstatus--;
   1746 
   1747   /* Shift the lookahead token.  */
   1748   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
   1749 
   1750   /* Discard the shifted token.  */
   1751   yychar = YYEMPTY;]b4_lac_if([[
   1752   YY_LAC_DISCARD ("shift");]])[
   1753 
   1754   yystate = yyn;
   1755   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   1756   *++yyvsp = yylval;
   1757   YY_IGNORE_MAYBE_UNINITIALIZED_END
   1758 ]b4_locations_if([  *++yylsp = yylloc;])[
   1759   goto yynewstate;
   1760 
   1761 
   1762 /*-----------------------------------------------------------.
   1763 | yydefault -- do the default action for the current state.  |
   1764 `-----------------------------------------------------------*/
   1765 yydefault:
   1766   yyn = yydefact[yystate];
   1767   if (yyn == 0)
   1768     goto yyerrlab;
   1769   goto yyreduce;
   1770 
   1771 
   1772 /*-----------------------------.
   1773 | yyreduce -- Do a reduction.  |
   1774 `-----------------------------*/
   1775 yyreduce:
   1776   /* yyn is the number of a rule to reduce with.  */
   1777   yylen = yyr2[yyn];
   1778 
   1779   /* If YYLEN is nonzero, implement the default value of the action:
   1780      `$$ = $1'.
   1781 
   1782      Otherwise, the following line sets YYVAL to garbage.
   1783      This behavior is undocumented and Bison
   1784      users should not rely upon it.  Assigning to YYVAL
   1785      unconditionally makes the parser a bit smaller, and it avoids a
   1786      GCC warning that YYVAL may be used uninitialized.  */
   1787   yyval = yyvsp[1-yylen];
   1788 
   1789 ]b4_locations_if(
   1790 [[  /* Default location.  */
   1791   YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);]])[
   1792   YY_REDUCE_PRINT (yyn);]b4_lac_if([[
   1793   {
   1794     int yychar_backup = yychar;
   1795     switch (yyn)
   1796       {
   1797         ]b4_user_actions[
   1798         default: break;
   1799       }
   1800     if (yychar_backup != yychar)
   1801       YY_LAC_DISCARD ("yychar change");
   1802   }]], [[
   1803   switch (yyn)
   1804     {
   1805       ]b4_user_actions[
   1806       default: break;
   1807     }]])[
   1808   /* User semantic actions sometimes alter yychar, and that requires
   1809      that yytoken be updated with the new translation.  We take the
   1810      approach of translating immediately before every use of yytoken.
   1811      One alternative is translating here after every semantic action,
   1812      but that translation would be missed if the semantic action invokes
   1813      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
   1814      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
   1815      incorrect destructor might then be invoked immediately.  In the
   1816      case of YYERROR or YYBACKUP, subsequent parser actions might lead
   1817      to an incorrect destructor call or verbose syntax error message
   1818      before the lookahead is translated.  */
   1819   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
   1820 
   1821   YYPOPSTACK (yylen);
   1822   yylen = 0;
   1823   YY_STACK_PRINT (yyss, yyssp);
   1824 
   1825   *++yyvsp = yyval;]b4_locations_if([
   1826   *++yylsp = yyloc;])[
   1827 
   1828   /* Now `shift' the result of the reduction.  Determine what state
   1829      that goes to, based on the state we popped back to and the rule
   1830      number reduced by.  */
   1831 
   1832   yyn = yyr1[yyn];
   1833 
   1834   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
   1835   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
   1836     yystate = yytable[yystate];
   1837   else
   1838     yystate = yydefgoto[yyn - YYNTOKENS];
   1839 
   1840   goto yynewstate;
   1841 
   1842 
   1843 /*------------------------------------.
   1844 | yyerrlab -- here on detecting error |
   1845 `------------------------------------*/
   1846 yyerrlab:
   1847   /* Make sure we have latest lookahead translation.  See comments at
   1848      user semantic actions for why this is necessary.  */
   1849   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
   1850 
   1851   /* If not already recovering from an error, report this error.  */
   1852   if (!yyerrstatus)
   1853     {
   1854       ++yynerrs;
   1855 #if ! YYERROR_VERBOSE
   1856       yyerror (]b4_yyerror_args[YY_("syntax error"));
   1857 #else
   1858 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \]b4_lac_if([[
   1859                                         yyesa, &yyes, &yyes_capacity, \]])[
   1860                                         yyssp, yytoken)
   1861       {
   1862         char const *yymsgp = YY_("syntax error");
   1863         int yysyntax_error_status;]b4_lac_if([[
   1864         if (yychar != YYEMPTY)
   1865           YY_LAC_ESTABLISH;]])[
   1866         yysyntax_error_status = YYSYNTAX_ERROR;
   1867         if (yysyntax_error_status == 0)
   1868           yymsgp = yymsg;
   1869         else if (yysyntax_error_status == 1)
   1870           {
   1871             if (yymsg != yymsgbuf)
   1872               YYSTACK_FREE (yymsg);
   1873             yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
   1874             if (!yymsg)
   1875               {
   1876                 yymsg = yymsgbuf;
   1877                 yymsg_alloc = sizeof yymsgbuf;
   1878                 yysyntax_error_status = 2;
   1879               }
   1880             else
   1881               {
   1882                 yysyntax_error_status = YYSYNTAX_ERROR;
   1883                 yymsgp = yymsg;
   1884               }
   1885           }
   1886         yyerror (]b4_yyerror_args[yymsgp);
   1887         if (yysyntax_error_status == 2)
   1888           goto yyexhaustedlab;
   1889       }
   1890 # undef YYSYNTAX_ERROR
   1891 #endif
   1892     }
   1893 
   1894 ]b4_locations_if([[  yyerror_range[1] = yylloc;]])[
   1895 
   1896   if (yyerrstatus == 3)
   1897     {
   1898       /* If just tried and failed to reuse lookahead token after an
   1899 	 error, discard it.  */
   1900 
   1901       if (yychar <= YYEOF)
   1902 	{
   1903 	  /* Return failure if at end of input.  */
   1904 	  if (yychar == YYEOF)
   1905 	    YYABORT;
   1906 	}
   1907       else
   1908 	{
   1909 	  yydestruct ("Error: discarding",
   1910 		      yytoken, &yylval]b4_locations_if([, &yylloc])[]b4_user_args[);
   1911 	  yychar = YYEMPTY;
   1912 	}
   1913     }
   1914 
   1915   /* Else will try to reuse lookahead token after shifting the error
   1916      token.  */
   1917   goto yyerrlab1;
   1918 
   1919 
   1920 /*---------------------------------------------------.
   1921 | yyerrorlab -- error raised explicitly by YYERROR.  |
   1922 `---------------------------------------------------*/
   1923 yyerrorlab:
   1924 
   1925   /* Pacify compilers like GCC when the user code never invokes
   1926      YYERROR and the label yyerrorlab therefore never appears in user
   1927      code.  */
   1928   if (/*CONSTCOND*/ 0)
   1929      goto yyerrorlab;
   1930 
   1931 ]b4_locations_if([[  yyerror_range[1] = yylsp[1-yylen];
   1932 ]])[  /* Do not reclaim the symbols of the rule which action triggered
   1933      this YYERROR.  */
   1934   YYPOPSTACK (yylen);
   1935   yylen = 0;
   1936   YY_STACK_PRINT (yyss, yyssp);
   1937   yystate = *yyssp;
   1938   goto yyerrlab1;
   1939 
   1940 
   1941 /*-------------------------------------------------------------.
   1942 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
   1943 `-------------------------------------------------------------*/
   1944 yyerrlab1:
   1945   yyerrstatus = 3;	/* Each real token shifted decrements this.  */
   1946 
   1947   for (;;)
   1948     {
   1949       yyn = yypact[yystate];
   1950       if (!yypact_value_is_default (yyn))
   1951 	{
   1952 	  yyn += YYTERROR;
   1953 	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
   1954 	    {
   1955 	      yyn = yytable[yyn];
   1956 	      if (0 < yyn)
   1957 		break;
   1958 	    }
   1959 	}
   1960 
   1961       /* Pop the current state because it cannot handle the error token.  */
   1962       if (yyssp == yyss)
   1963 	YYABORT;
   1964 
   1965 ]b4_locations_if([[      yyerror_range[1] = *yylsp;]])[
   1966       yydestruct ("Error: popping",
   1967 		  yystos[yystate], yyvsp]b4_locations_if([, yylsp])[]b4_user_args[);
   1968       YYPOPSTACK (1);
   1969       yystate = *yyssp;
   1970       YY_STACK_PRINT (yyss, yyssp);
   1971     }]b4_lac_if([[
   1972 
   1973   /* If the stack popping above didn't lose the initial context for the
   1974      current lookahead token, the shift below will for sure.  */
   1975   YY_LAC_DISCARD ("error recovery");]])[
   1976 
   1977   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   1978   *++yyvsp = yylval;
   1979   YY_IGNORE_MAYBE_UNINITIALIZED_END
   1980 ]b4_locations_if([[
   1981   yyerror_range[2] = yylloc;
   1982   /* Using YYLLOC is tempting, but would change the location of
   1983      the lookahead.  YYLOC is available though.  */
   1984   YYLLOC_DEFAULT (yyloc, yyerror_range, 2);
   1985   *++yylsp = yyloc;]])[
   1986 
   1987   /* Shift the error token.  */
   1988   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
   1989 
   1990   yystate = yyn;
   1991   goto yynewstate;
   1992 
   1993 
   1994 /*-------------------------------------.
   1995 | yyacceptlab -- YYACCEPT comes here.  |
   1996 `-------------------------------------*/
   1997 yyacceptlab:
   1998   yyresult = 0;
   1999   goto yyreturn;
   2000 
   2001 /*-----------------------------------.
   2002 | yyabortlab -- YYABORT comes here.  |
   2003 `-----------------------------------*/
   2004 yyabortlab:
   2005   yyresult = 1;
   2006   goto yyreturn;
   2007 
   2008 #if ]b4_lac_if([[1]], [[!defined yyoverflow || YYERROR_VERBOSE]])[
   2009 /*-------------------------------------------------.
   2010 | yyexhaustedlab -- memory exhaustion comes here.  |
   2011 `-------------------------------------------------*/
   2012 yyexhaustedlab:
   2013   yyerror (]b4_yyerror_args[YY_("memory exhausted"));
   2014   yyresult = 2;
   2015   /* Fall through.  */
   2016 #endif
   2017 
   2018 yyreturn:
   2019   if (yychar != YYEMPTY)
   2020     {
   2021       /* Make sure we have latest lookahead translation.  See comments at
   2022          user semantic actions for why this is necessary.  */
   2023       yytoken = YYTRANSLATE (yychar);
   2024       yydestruct ("Cleanup: discarding lookahead",
   2025                   yytoken, &yylval]b4_locations_if([, &yylloc])[]b4_user_args[);
   2026     }
   2027   /* Do not reclaim the symbols of the rule which action triggered
   2028      this YYABORT or YYACCEPT.  */
   2029   YYPOPSTACK (yylen);
   2030   YY_STACK_PRINT (yyss, yyssp);
   2031   while (yyssp != yyss)
   2032     {
   2033       yydestruct ("Cleanup: popping",
   2034 		  yystos[*yyssp], yyvsp]b4_locations_if([, yylsp])[]b4_user_args[);
   2035       YYPOPSTACK (1);
   2036     }
   2037 #ifndef yyoverflow
   2038   if (yyss != yyssa)
   2039     YYSTACK_FREE (yyss);
   2040 #endif]b4_lac_if([[
   2041   if (yyes != yyesa)
   2042     YYSTACK_FREE (yyes);]])b4_push_if([[
   2043   yyps->yynew = 1;
   2044 
   2045 yypushreturn:]])[
   2046 #if YYERROR_VERBOSE
   2047   if (yymsg != yymsgbuf)
   2048     YYSTACK_FREE (yymsg);
   2049 #endif
   2050   /* Make sure YYID is used.  */
   2051   return YYID (yyresult);
   2052 }
   2053 
   2054 
   2055 ]b4_epilogue[]dnl
   2056 b4_output_end()
   2057 
   2058 b4_defines_if(
   2059 [b4_output_begin([b4_spec_defines_file])[
   2060 ]b4_copyright([Bison interface for Yacc-like parsers in C],
   2061               [1984, 1989-1990, 2000-2012])[
   2062 
   2063 ]b4_shared_declarations[
   2064 ]b4_output_end()
   2065 ])
   2066