Annotation of win32/tools/yacc.c, revision 1.1

1.1     ! paf         1: m4_divert(-1)                                                       -*- C -*-
        !             2: 
        !             3: # Yacc compatible skeleton for Bison
        !             4: # Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003
        !             5: # Free Software Foundation, Inc.
        !             6: 
        !             7: # This program is free software; you can redistribute it and/or modify
        !             8: # it under the terms of the GNU General Public License as published by
        !             9: # the Free Software Foundation; either version 2 of the License, or
        !            10: # (at your option) any later version.
        !            11: 
        !            12: # This program is distributed in the hope that it will be useful,
        !            13: # but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            14: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            15: # GNU General Public License for more details.
        !            16: 
        !            17: # You should have received a copy of the GNU General Public License
        !            18: # along with this program; if not, write to the Free Software
        !            19: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
        !            20: # 02111-1307  USA
        !            21: 
        !            22: 
        !            23: 
        !            24: ## ---------------- ##
        !            25: ## Default values.  ##
        !            26: ## ---------------- ##
        !            27: 
        !            28: # Stack parameters.
        !            29: m4_define_default([b4_stack_depth_max], [10000])
        !            30: m4_define_default([b4_stack_depth_init],  [200])
        !            31: 
        !            32: 
        !            33: ## ------------------------ ##
        !            34: ## Pure/impure interfaces.  ##
        !            35: ## ------------------------ ##
        !            36: 
        !            37: 
        !            38: # b4_pure_if(IF-TRUE, IF-FALSE)
        !            39: # -----------------------------
        !            40: # Expand IF-TRUE, if %pure-parser and %parse-param, IF-FALSE otherwise.
        !            41: m4_define([b4_Pure_if],
        !            42: [b4_pure_if([m4_ifset([b4_parse_param],
        !            43:                       [$1], [$2])],
        !            44:             [$2])])
        !            45: 
        !            46: 
        !            47: # b4_yyerror_args
        !            48: # ---------------
        !            49: # Arguments passed to yyerror: user args plus yylloc.
        !            50: m4_define([b4_yyerror_args],
        !            51: [b4_Pure_if([b4_location_if([&yylloc, ])])dnl
        !            52: m4_ifset([b4_parse_param], [b4_c_args(b4_parse_param), ])])
        !            53: 
        !            54: 
        !            55: # b4_lex_param
        !            56: # ------------
        !            57: # Accumulate in b4_lex_param all the yylex arguments.
        !            58: # b4_lex_param arrives quoted twice, but we want to keep only one level.
        !            59: m4_define([b4_lex_param],
        !            60: m4_dquote(b4_pure_if([[[[YYSTYPE *]], [[&yylval]]][]dnl
        !            61: b4_location_if([, [[YYLTYPE *], [&yylloc]]])])dnl
        !            62: m4_ifdef([b4_lex_param], [, ]b4_lex_param)))
        !            63: 
        !            64: 
        !            65: 
        !            66: ## ------------ ##
        !            67: ## Data Types.  ##
        !            68: ## ------------ ##
        !            69: 
        !            70: # b4_int_type(MIN, MAX)
        !            71: # ---------------------
        !            72: # Return the smallest int type able to handle numbers ranging from
        !            73: # MIN to MAX (included).  We overwrite the version from c.m4 which relies
        !            74: # on "signed char" which is not portable to old K&R compilers.
        !            75: m4_define([b4_int_type],
        !            76: [m4_if(b4_ints_in($@,      [0],   [255]), [1], [unsigned char],
        !            77:        b4_ints_in($@,   [-128],   [127]), [1], [yysigned_char],
        !            78: 
        !            79:        b4_ints_in($@,      [0], [65535]), [1], [unsigned short],
        !            80:        b4_ints_in($@, [-32768], [32767]), [1], [short],
        !            81: 
        !            82:        m4_eval([0 <= $1]),                [1], [unsigned int],
        !            83: 
        !            84:                                               [int])])
        !            85: 
        !            86: 
        !            87: ## ----------------- ##
        !            88: ## Semantic Values.  ##
        !            89: ## ----------------- ##
        !            90: 
        !            91: 
        !            92: # b4_lhs_value([TYPE])
        !            93: # --------------------
        !            94: # Expansion of $<TYPE>$.
        !            95: m4_define([b4_lhs_value],
        !            96: [yyval[]m4_ifval([$1], [.$1])])
        !            97: 
        !            98: 
        !            99: # b4_rhs_value(RULE-LENGTH, NUM, [TYPE])
        !           100: # --------------------------------------
        !           101: # Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
        !           102: # symbols on RHS.
        !           103: m4_define([b4_rhs_value],
        !           104: [yyvsp@{m4_eval([$2 - $1])@}m4_ifval([$3], [.$3])])
        !           105: 
        !           106: 
        !           107: 
        !           108: ## ----------- ##
        !           109: ## Locations.  ##
        !           110: ## ----------- ##
        !           111: 
        !           112: # b4_lhs_location()
        !           113: # -----------------
        !           114: # Expansion of @$.
        !           115: m4_define([b4_lhs_location],
        !           116: [yyloc])
        !           117: 
        !           118: 
        !           119: # b4_rhs_location(RULE-LENGTH, NUM)
        !           120: # ---------------------------------
        !           121: # Expansion of @NUM, where the current rule has RULE-LENGTH symbols
        !           122: # on RHS.
        !           123: m4_define([b4_rhs_location],
        !           124: [yylsp@{m4_eval([$2 - $1])@}])
        !           125: 
        !           126: 
        !           127: 
        !           128: ## --------------------------------------------------------- ##
        !           129: ## Defining symbol actions, e.g., printers and destructors.  ##
        !           130: ## --------------------------------------------------------- ##
        !           131: 
        !           132: # We do want M4 expansion after # for CPP macros.
        !           133: m4_changecom()
        !           134: m4_divert(0)dnl
        !           135: @output @output_parser_name@
        !           136: b4_copyright([Skeleton parser for Yacc-like parsing with Bison],
        !           137:              [1984, 1989, 1990, 2000, 2001, 2002, 2003])[
        !           138: 
        !           139: /* As a special exception, when this file is copied by Bison into a
        !           140:    Bison output file, you may use that output file without restriction.
        !           141:    This special exception was added by the Free Software Foundation
        !           142:    in version 1.24 of Bison.  */
        !           143: 
        !           144: /* Written by Richard Stallman by simplifying the original so called
        !           145:    ``semantic'' parser.  */
        !           146: 
        !           147: /* All symbols defined below should begin with yy or YY, to avoid
        !           148:    infringing on user name space.  This should be done even for local
        !           149:    variables, as they might otherwise be expanded by user macros.
        !           150:    There are some unavoidable exceptions within include files to
        !           151:    define necessary library symbols; they are noted "INFRINGES ON
        !           152:    USER NAME SPACE" below.  */
        !           153: 
        !           154: ]b4_identification
        !           155: m4_if(b4_prefix[], [yy], [],
        !           156: [/* If NAME_PREFIX is specified substitute the variables and functions
        !           157:    names.  */
        !           158: #define yyparse b4_prefix[]parse
        !           159: #define yylex   b4_prefix[]lex
        !           160: #define yyerror b4_prefix[]error
        !           161: #define yylval  b4_prefix[]lval
        !           162: #define yychar  b4_prefix[]char
        !           163: #define yydebug b4_prefix[]debug
        !           164: #define yynerrs b4_prefix[]nerrs
        !           165: b4_location_if([#define yylloc b4_prefix[]lloc])])[
        !           166: 
        !           167: ]b4_token_defines(b4_tokens)[
        !           168: 
        !           169: /* Copy the first part of user declarations.  */
        !           170: ]b4_pre_prologue[
        !           171: 
        !           172: /* Enabling traces.  */
        !           173: #ifndef YYDEBUG
        !           174: # define YYDEBUG ]b4_debug[
        !           175: #endif
        !           176: 
        !           177: /* Enabling verbose error messages.  */
        !           178: #ifdef YYERROR_VERBOSE
        !           179: # undef YYERROR_VERBOSE
        !           180: # define YYERROR_VERBOSE 1
        !           181: #else
        !           182: # define YYERROR_VERBOSE ]b4_error_verbose[
        !           183: #endif
        !           184: 
        !           185: #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
        !           186: ]m4_ifdef([b4_stype],
        !           187: [b4_syncline([b4_stype_line], [b4_filename])
        !           188: typedef union m4_bregexp(b4_stype, [^{], [YYSTYPE ])b4_stype YYSTYPE;
        !           189: /* Line __line__ of yacc.c.  */
        !           190: b4_syncline([@oline@], [@ofile@])],
        !           191: [typedef int YYSTYPE;])[
        !           192: # define yystype YYSTYPE /* obsolescent; will be withdrawn */
        !           193: # define YYSTYPE_IS_DECLARED 1
        !           194: # define YYSTYPE_IS_TRIVIAL 1
        !           195: #endif
        !           196: 
        !           197: ]b4_location_if([#if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
        !           198: typedef struct YYLTYPE
        !           199: {
        !           200:   int first_line;
        !           201:   int first_column;
        !           202:   int last_line;
        !           203:   int last_column;
        !           204: } YYLTYPE;
        !           205: # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
        !           206: # define YYLTYPE_IS_DECLARED 1
        !           207: # define YYLTYPE_IS_TRIVIAL 1
        !           208: #endif
        !           209: ])[
        !           210: 
        !           211: /* Copy the second part of user declarations.  */
        !           212: ]b4_post_prologue
        !           213: 
        !           214: /* Line __line__ of yacc.c.  */
        !           215: b4_syncline([@oline@], [@ofile@])[
        !           216: 
        !           217: #if ! defined (yyoverflow) || YYERROR_VERBOSE
        !           218: 
        !           219: /* The parser invokes alloca or malloc; define the necessary symbols.  */
        !           220: 
        !           221: # if YYSTACK_USE_ALLOCA
        !           222: #  define YYSTACK_ALLOC alloca
        !           223: # else
        !           224: #  ifndef YYSTACK_USE_ALLOCA
        !           225: #   if defined (alloca) || defined (_ALLOCA_H)
        !           226: #    define YYSTACK_ALLOC alloca
        !           227: #   else
        !           228: #    ifdef __GNUC__
        !           229: #     define YYSTACK_ALLOC __builtin_alloca
        !           230: #    endif
        !           231: #   endif
        !           232: #  endif
        !           233: # endif
        !           234: 
        !           235: # ifdef YYSTACK_ALLOC
        !           236:    /* Pacify GCC's `empty if-body' warning. */
        !           237: #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
        !           238: # else
        !           239: #  if defined (__STDC__) || defined (__cplusplus)
        !           240: #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
        !           241: #   define YYSIZE_T size_t
        !           242: #  endif
        !           243: #  define YYSTACK_ALLOC malloc
        !           244: #  define YYSTACK_FREE free
        !           245: # endif
        !           246: #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
        !           247: 
        !           248: 
        !           249: #if (! defined (yyoverflow) \
        !           250:      && (! defined (__cplusplus) \
        !           251:         || (]b4_location_if([YYLTYPE_IS_TRIVIAL && ])[YYSTYPE_IS_TRIVIAL)))
        !           252: 
        !           253: /* A type that is properly aligned for any stack member.  */
        !           254: union yyalloc
        !           255: {
        !           256:   short yyss;
        !           257:   YYSTYPE yyvs;
        !           258:   ]b4_location_if([  YYLTYPE yyls;
        !           259: ])dnl
        !           260: [};
        !           261: 
        !           262: /* The size of the maximum gap between one aligned stack and the next.  */
        !           263: # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
        !           264: 
        !           265: /* The size of an array large to enough to hold all stacks, each with
        !           266:    N elements.  */
        !           267: ]b4_location_if(
        !           268: [# define YYSTACK_BYTES(N) \
        !           269:      ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE))     \
        !           270:       + 2 * YYSTACK_GAP_MAXIMUM)],
        !           271: [# define YYSTACK_BYTES(N) \
        !           272:      ((N) * (sizeof (short) + sizeof (YYSTYPE))                                \
        !           273:       + YYSTACK_GAP_MAXIMUM)])[
        !           274: 
        !           275: /* Copy COUNT objects from FROM to TO.  The source and destination do
        !           276:    not overlap.  */
        !           277: # ifndef YYCOPY
        !           278: #  if 1 < __GNUC__
        !           279: #   define YYCOPY(To, From, Count) \
        !           280:       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
        !           281: #  else
        !           282: #   define YYCOPY(To, From, Count)             \
        !           283:       do                                       \
        !           284:        {                                       \
        !           285:          register YYSIZE_T yyi;                \
        !           286:          for (yyi = 0; yyi < (Count); yyi++)   \
        !           287:            (To)[yyi] = (From)[yyi];            \
        !           288:        }                                       \
        !           289:       while (0)
        !           290: #  endif
        !           291: # endif
        !           292: 
        !           293: /* Relocate STACK from its old location to the new one.  The
        !           294:    local variables YYSIZE and YYSTACKSIZE give the old and new number of
        !           295:    elements in the stack, and YYPTR gives the new location of the
        !           296:    stack.  Advance YYPTR to a properly aligned location for the next
        !           297:    stack.  */
        !           298: # define YYSTACK_RELOCATE(Stack)                                       \
        !           299:     do                                                                 \
        !           300:       {                                                                        \
        !           301:        YYSIZE_T yynewbytes;                                            \
        !           302:        YYCOPY (&yyptr->Stack, Stack, yysize);                          \
        !           303:        Stack = &yyptr->Stack;                                          \
        !           304:        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
        !           305:        yyptr += yynewbytes / sizeof (*yyptr);                          \
        !           306:       }                                                                        \
        !           307:     while (0)
        !           308: 
        !           309: #endif
        !           310: 
        !           311: #if defined (__STDC__) || defined (__cplusplus)
        !           312:    typedef signed char yysigned_char;
        !           313: #else
        !           314:    typedef short yysigned_char;
        !           315: #endif
        !           316: 
        !           317: /* YYFINAL -- State number of the termination state. */
        !           318: #define YYFINAL  ]b4_final_state_number[
        !           319: /* YYLAST -- Last index in YYTABLE.  */
        !           320: #define YYLAST   ]b4_last[
        !           321: 
        !           322: /* YYNTOKENS -- Number of terminals. */
        !           323: #define YYNTOKENS  ]b4_tokens_number[
        !           324: /* YYNNTS -- Number of nonterminals. */
        !           325: #define YYNNTS  ]b4_nterms_number[
        !           326: /* YYNRULES -- Number of rules. */
        !           327: #define YYNRULES  ]b4_rules_number[
        !           328: /* YYNRULES -- Number of states. */
        !           329: #define YYNSTATES  ]b4_states_number[
        !           330: 
        !           331: /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
        !           332: #define YYUNDEFTOK  ]b4_undef_token_number[
        !           333: #define YYMAXUTOK   ]b4_user_token_number_max[
        !           334: 
        !           335: #define YYTRANSLATE(YYX)                                               \
        !           336:   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
        !           337: 
        !           338: /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
        !           339: static const ]b4_int_type_for([b4_translate])[ yytranslate[] =
        !           340: {
        !           341:   ]b4_translate[
        !           342: };
        !           343: 
        !           344: #if YYDEBUG
        !           345: /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
        !           346:    YYRHS.  */
        !           347: static const ]b4_int_type_for([b4_prhs])[ yyprhs[] =
        !           348: {
        !           349:   ]b4_prhs[
        !           350: };
        !           351: 
        !           352: /* YYRHS -- A `-1'-separated list of the rules' RHS. */
        !           353: static const ]b4_int_type_for([b4_rhs])[ yyrhs[] =
        !           354: {
        !           355:   ]b4_rhs[
        !           356: };
        !           357: 
        !           358: /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
        !           359: static const ]b4_int_type_for([b4_rline])[ yyrline[] =
        !           360: {
        !           361:   ]b4_rline[
        !           362: };
        !           363: #endif
        !           364: 
        !           365: #if YYDEBUG || YYERROR_VERBOSE
        !           366: /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
        !           367:    First, the terminals, then, starting at YYNTOKENS, nonterminals. */
        !           368: static const char *const yytname[] =
        !           369: {
        !           370:   ]b4_tname[
        !           371: };
        !           372: #endif
        !           373: 
        !           374: # ifdef YYPRINT
        !           375: /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
        !           376:    token YYLEX-NUM.  */
        !           377: static const ]b4_int_type_for([b4_toknum])[ yytoknum[] =
        !           378: {
        !           379:   ]b4_toknum[
        !           380: };
        !           381: # endif
        !           382: 
        !           383: /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
        !           384: static const ]b4_int_type_for([b4_r1])[ yyr1[] =
        !           385: {
        !           386:   ]b4_r1[
        !           387: };
        !           388: 
        !           389: /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
        !           390: static const ]b4_int_type_for([b4_r2])[ yyr2[] =
        !           391: {
        !           392:   ]b4_r2[
        !           393: };
        !           394: 
        !           395: /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
        !           396:    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
        !           397:    means the default is an error.  */
        !           398: static const ]b4_int_type_for([b4_defact])[ yydefact[] =
        !           399: {
        !           400:   ]b4_defact[
        !           401: };
        !           402: 
        !           403: /* YYDEFGOTO[NTERM-NUM]. */
        !           404: static const ]b4_int_type_for([b4_defgoto])[ yydefgoto[] =
        !           405: {
        !           406:   ]b4_defgoto[
        !           407: };
        !           408: 
        !           409: /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
        !           410:    STATE-NUM.  */
        !           411: #define YYPACT_NINF ]b4_pact_ninf[
        !           412: static const ]b4_int_type_for([b4_pact])[ yypact[] =
        !           413: {
        !           414:   ]b4_pact[
        !           415: };
        !           416: 
        !           417: /* YYPGOTO[NTERM-NUM].  */
        !           418: static const ]b4_int_type_for([b4_pgoto])[ yypgoto[] =
        !           419: {
        !           420:   ]b4_pgoto[
        !           421: };
        !           422: 
        !           423: /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
        !           424:    positive, shift that token.  If negative, reduce the rule which
        !           425:    number is the opposite.  If zero, do what YYDEFACT says.
        !           426:    If YYTABLE_NINF, syntax error.  */
        !           427: #define YYTABLE_NINF ]b4_table_ninf[
        !           428: static const ]b4_int_type_for([b4_table])[ yytable[] =
        !           429: {
        !           430:   ]b4_table[
        !           431: };
        !           432: 
        !           433: static const ]b4_int_type_for([b4_check])[ yycheck[] =
        !           434: {
        !           435:   ]b4_check[
        !           436: };
        !           437: 
        !           438: /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
        !           439:    symbol of state STATE-NUM.  */
        !           440: static const ]b4_int_type_for([b4_stos])[ yystos[] =
        !           441: {
        !           442:   ]b4_stos[
        !           443: };
        !           444: 
        !           445: #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
        !           446: # define YYSIZE_T __SIZE_TYPE__
        !           447: #endif
        !           448: #if ! defined (YYSIZE_T) && defined (size_t)
        !           449: # define YYSIZE_T size_t
        !           450: #endif
        !           451: #if ! defined (YYSIZE_T)
        !           452: # if defined (__STDC__) || defined (__cplusplus)
        !           453: #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
        !           454: #  define YYSIZE_T size_t
        !           455: # endif
        !           456: #endif
        !           457: #if ! defined (YYSIZE_T)
        !           458: # define YYSIZE_T unsigned int
        !           459: #endif
        !           460: 
        !           461: #define yyerrok                (yyerrstatus = 0)
        !           462: #define yyclearin      (yychar = YYEMPTY)
        !           463: #define YYEMPTY                (-2)
        !           464: #define YYEOF          0
        !           465: 
        !           466: #define YYACCEPT       goto yyacceptlab
        !           467: #define YYABORT                goto yyabortlab
        !           468: #define YYERROR                ]b4_location_if([do                             \
        !           469:                          {                             \
        !           470:                            yylerrsp = yylsp;           \
        !           471:                            *++yylerrsp = yyloc;        \
        !           472:                            goto yyerrlab1;             \
        !           473:                          }                             \
        !           474:                        while (0)],
        !           475:                        [goto yyerrlab1])[
        !           476: 
        !           477: 
        !           478: /* Like YYERROR except do call yyerror.  This remains here temporarily
        !           479:    to ease the transition to the new meaning of YYERROR, for GCC.
        !           480:    Once GCC version 2 has supplanted version 1, this can go.  */
        !           481: 
        !           482: #define YYFAIL         goto yyerrlab
        !           483: 
        !           484: #define YYRECOVERING()  (!!yyerrstatus)
        !           485: 
        !           486: #define YYBACKUP(Token, Value)                                 \
        !           487: do                                                             \
        !           488:   if (yychar == YYEMPTY && yylen == 1)                         \
        !           489:     {                                                          \
        !           490:       yychar = (Token);                                                \
        !           491:       yylval = (Value);                                                \
        !           492:       yytoken = YYTRANSLATE (yychar);                          \
        !           493:       YYPOPSTACK;                                              \
        !           494:       goto yybackup;                                           \
        !           495:     }                                                          \
        !           496:   else                                                         \
        !           497:     {                                                          \
        !           498:       yyerror (]b4_yyerror_args["syntax error: cannot back up");\
        !           499:       YYERROR;                                                 \
        !           500:     }                                                          \
        !           501: while (0)
        !           502: 
        !           503: #define YYTERROR       1
        !           504: #define YYERRCODE      256
        !           505: 
        !           506: /* YYLLOC_DEFAULT -- Compute the default location (before the actions
        !           507:    are run).  */
        !           508: 
        !           509: #ifndef YYLLOC_DEFAULT
        !           510: # define YYLLOC_DEFAULT(Current, Rhs, N)         \
        !           511:   Current.first_line   = Rhs[1].first_line;      \
        !           512:   Current.first_column = Rhs[1].first_column;    \
        !           513:   Current.last_line    = Rhs[N].last_line;       \
        !           514:   Current.last_column  = Rhs[N].last_column;
        !           515: #endif
        !           516: 
        !           517: /* YYLEX -- calling `yylex' with the right arguments.  */
        !           518: 
        !           519: #ifdef YYLEX_PARAM
        !           520: # define YYLEX yylex (]b4_pure_if([&yylval[]b4_location_if([, &yylloc]), ])[YYLEX_PARAM)
        !           521: #else
        !           522: # define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[
        !           523: #endif
        !           524: 
        !           525: /* Enable debugging if requested.  */
        !           526: #if YYDEBUG
        !           527: 
        !           528: # ifndef YYFPRINTF
        !           529: #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
        !           530: #  define YYFPRINTF fprintf
        !           531: # endif
        !           532: 
        !           533: # define YYDPRINTF(Args)                       \
        !           534: do {                                           \
        !           535:   if (yydebug)                                 \
        !           536:     YYFPRINTF Args;                            \
        !           537: } while (0)
        !           538: 
        !           539: # define YYDSYMPRINT(Args)                     \
        !           540: do {                                           \
        !           541:   if (yydebug)                                 \
        !           542:     yysymprint Args;                           \
        !           543: } while (0)
        !           544: 
        !           545: # define YYDSYMPRINTF(Title, Token, Value, Location)           \
        !           546: do {                                                           \
        !           547:   if (yydebug)                                                 \
        !           548:     {                                                          \
        !           549:       YYFPRINTF (stderr, "%s ", Title);                                \
        !           550:       yysymprint (stderr,                                      \
        !           551:                   Token, Value]b4_location_if([, Location])[); \
        !           552:       YYFPRINTF (stderr, "\n");                                        \
        !           553:     }                                                          \
        !           554: } while (0)
        !           555: 
        !           556: /*------------------------------------------------------------------.
        !           557: | yy_stack_print -- Print the state stack from its BOTTOM up to its |
        !           558: | TOP (cinluded).                                                   |
        !           559: `------------------------------------------------------------------*/
        !           560: 
        !           561: ]b4_c_function_def([yy_stack_print], [static void],
        !           562:                    [[short *bottom], [bottom]],
        !           563:                    [[short *top],    [top]])[
        !           564: {
        !           565:   YYFPRINTF (stderr, "Stack now");
        !           566:   for (/* Nothing. */; bottom <= top; ++bottom)
        !           567:     YYFPRINTF (stderr, " %d", *bottom);
        !           568:   YYFPRINTF (stderr, "\n");
        !           569: }
        !           570: 
        !           571: # define YY_STACK_PRINT(Bottom, Top)                           \
        !           572: do {                                                           \
        !           573:   if (yydebug)                                                 \
        !           574:     yy_stack_print ((Bottom), (Top));                          \
        !           575: } while (0)
        !           576: 
        !           577: 
        !           578: /*------------------------------------------------.
        !           579: | Report that the YYRULE is going to be reduced.  |
        !           580: `------------------------------------------------*/
        !           581: 
        !           582: ]b4_c_function_def([yy_reduce_print], [static void],
        !           583:                    [[int yyrule], [yyrule]])[
        !           584: {
        !           585:   int yyi;
        !           586:   unsigned int yylno = yyrline[yyrule];
        !           587:   YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
        !           588:              yyrule - 1, yylno);
        !           589:   /* Print the symbols being reduced, and their result.  */
        !           590:   for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
        !           591:     YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
        !           592:   YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
        !           593: }
        !           594: 
        !           595: # define YY_REDUCE_PRINT(Rule)         \
        !           596: do {                                   \
        !           597:   if (yydebug)                         \
        !           598:     yy_reduce_print (Rule);            \
        !           599: } while (0)
        !           600: 
        !           601: /* Nonzero means print parse trace.  It is left uninitialized so that
        !           602:    multiple parsers can coexist.  */
        !           603: int yydebug;
        !           604: #else /* !YYDEBUG */
        !           605: # define YYDPRINTF(Args)
        !           606: # define YYDSYMPRINT(Args)
        !           607: # define YYDSYMPRINTF(Title, Token, Value, Location)
        !           608: # define YY_STACK_PRINT(Bottom, Top)
        !           609: # define YY_REDUCE_PRINT(Rule)
        !           610: #endif /* !YYDEBUG */
        !           611: 
        !           612: 
        !           613: /* YYINITDEPTH -- initial size of the parser's stacks.  */
        !           614: #ifndef        YYINITDEPTH
        !           615: # define YYINITDEPTH ]b4_stack_depth_init[
        !           616: #endif
        !           617: 
        !           618: /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
        !           619:    if the built-in stack extension method is used).
        !           620: 
        !           621:    Do not make this value too large; the results are undefined if
        !           622:    SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
        !           623:    evaluated with infinite-precision integer arithmetic.  */
        !           624: 
        !           625: #if YYMAXDEPTH == 0
        !           626: # undef YYMAXDEPTH
        !           627: #endif
        !           628: 
        !           629: #ifndef YYMAXDEPTH
        !           630: # define YYMAXDEPTH ]b4_stack_depth_max[
        !           631: #endif
        !           632: 
        !           633: 
        !           634: 
        !           635: #if YYERROR_VERBOSE
        !           636: 
        !           637: # ifndef yystrlen
        !           638: #  if defined (__GLIBC__) && defined (_STRING_H)
        !           639: #   define yystrlen strlen
        !           640: #  else
        !           641: /* Return the length of YYSTR.  */
        !           642: static YYSIZE_T
        !           643: #   if defined (__STDC__) || defined (__cplusplus)
        !           644: yystrlen (const char *yystr)
        !           645: #   else
        !           646: yystrlen (yystr)
        !           647:      const char *yystr;
        !           648: #   endif
        !           649: {
        !           650:   register const char *yys = yystr;
        !           651: 
        !           652:   while (*yys++ != '\0')
        !           653:     continue;
        !           654: 
        !           655:   return yys - yystr - 1;
        !           656: }
        !           657: #  endif
        !           658: # endif
        !           659: 
        !           660: # ifndef yystpcpy
        !           661: #  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
        !           662: #   define yystpcpy stpcpy
        !           663: #  else
        !           664: /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
        !           665:    YYDEST.  */
        !           666: static char *
        !           667: #   if defined (__STDC__) || defined (__cplusplus)
        !           668: yystpcpy (char *yydest, const char *yysrc)
        !           669: #   else
        !           670: yystpcpy (yydest, yysrc)
        !           671:      char *yydest;
        !           672:      const char *yysrc;
        !           673: #   endif
        !           674: {
        !           675:   register char *yyd = yydest;
        !           676:   register const char *yys = yysrc;
        !           677: 
        !           678:   while ((*yyd++ = *yys++) != '\0')
        !           679:     continue;
        !           680: 
        !           681:   return yyd - 1;
        !           682: }
        !           683: #  endif
        !           684: # endif
        !           685: 
        !           686: #endif /* !YYERROR_VERBOSE */
        !           687: 
        !           688: 
        !           689: 
        !           690: #if YYDEBUG
        !           691: ]b4_yysymprint_generate([b4_c_function_def])[
        !           692: #endif /* ! YYDEBUG */
        !           693: ]b4_yydestruct_generate([b4_c_function_def])
        !           694: 
        !           695: 
        !           696: /* Prevent warnings from -Wmissing-prototypes.  */
        !           697: 
        !           698: #ifdef YYPARSE_PARAM
        !           699: # if defined (__STDC__) || defined (__cplusplus)
        !           700: int yyparse (void *YYPARSE_PARAM);
        !           701: # else
        !           702: int yyparse ();
        !           703: # endif
        !           704: #else /* ! YYPARSE_PARAM */
        !           705: b4_c_function_decl([yyparse], [int], b4_parse_param)
        !           706: #endif /* ! YYPARSE_PARAM */
        !           707: 
        !           708: 
        !           709: m4_divert_push([KILL])# ======================== M4 code.
        !           710: # b4_declare_parser_variables
        !           711: # ---------------------------
        !           712: # Declare the variables that are global, or local to YYPARSE if
        !           713: # pure-parser.
        !           714: m4_define([b4_declare_parser_variables],
        !           715: [/* The lookahead symbol.  */
        !           716: int yychar;
        !           717: 
        !           718: /* The semantic value of the lookahead symbol.  */
        !           719: YYSTYPE yylval;
        !           720: 
        !           721: /* Number of syntax errors so far.  */
        !           722: int yynerrs;b4_location_if([
        !           723: /* Location data for the lookahead symbol.  */
        !           724: YYLTYPE yylloc;])
        !           725: ])
        !           726: m4_divert_pop([KILL])dnl# ====================== End of M4 code.
        !           727: 
        !           728: b4_pure_if([],
        !           729:            [b4_declare_parser_variables])
        !           730: 
        !           731: 
        !           732: /*----------.
        !           733: | yyparse.  |
        !           734: `----------*/
        !           735: 
        !           736: #ifdef YYPARSE_PARAM
        !           737: # if defined (__STDC__) || defined (__cplusplus)
        !           738: int yyparse (void *YYPARSE_PARAM)
        !           739: # else
        !           740: int yyparse (YYPARSE_PARAM)
        !           741:   void *YYPARSE_PARAM;
        !           742: # endif
        !           743: #else /* ! YYPARSE_PARAM */
        !           744: b4_c_function_def([yyparse], [int], b4_parse_param)
        !           745: #endif
        !           746: {[
        !           747:   ]b4_pure_if([b4_declare_parser_variables])[
        !           748:   register int yystate;
        !           749:   register int yyn;
        !           750:   int yyresult;
        !           751:   /* Number of tokens to shift before error messages enabled.  */
        !           752:   int yyerrstatus;
        !           753:   /* Lookahead token as an internal (translated) token number.  */
        !           754:   int yytoken = 0;
        !           755: 
        !           756:   /* Three stacks and their tools:
        !           757:      `yyss': related to states,
        !           758:      `yyvs': related to semantic values,
        !           759:      `yyls': related to locations.
        !           760: 
        !           761:      Refer to the stacks thru separate pointers, to allow yyoverflow
        !           762:      to reallocate them elsewhere.  */
        !           763: 
        !           764:   /* The state stack.  */
        !           765:   short        yyssa[YYINITDEPTH];
        !           766:   short *yyss = yyssa;
        !           767:   register short *yyssp;
        !           768: 
        !           769:   /* The semantic value stack.  */
        !           770:   YYSTYPE yyvsa[YYINITDEPTH];
        !           771:   YYSTYPE *yyvs = yyvsa;
        !           772:   register YYSTYPE *yyvsp;
        !           773: 
        !           774: ]b4_location_if(
        !           775: [[  /* The location stack.  */
        !           776:   YYLTYPE yylsa[YYINITDEPTH];
        !           777:   YYLTYPE *yyls = yylsa;
        !           778:   YYLTYPE *yylsp;
        !           779:   YYLTYPE *yylerrsp;]])[
        !           780: 
        !           781: #define YYPOPSTACK   (yyvsp--, yyssp--]b4_location_if([, yylsp--])[)
        !           782: 
        !           783:   YYSIZE_T yystacksize = YYINITDEPTH;
        !           784: 
        !           785:   /* The variables used to return semantic value and location from the
        !           786:      action routines.  */
        !           787:   YYSTYPE yyval;
        !           788: ]b4_location_if([  YYLTYPE yyloc;])[
        !           789: 
        !           790:   /* When reducing, the number of symbols on the RHS of the reduced
        !           791:      rule.  */
        !           792:   int yylen;
        !           793: 
        !           794:   YYDPRINTF ((stderr, "Starting parse\n"));
        !           795: 
        !           796:   yystate = 0;
        !           797:   yyerrstatus = 0;
        !           798:   yynerrs = 0;
        !           799:   yychar = YYEMPTY;            /* Cause a token to be read.  */
        !           800: 
        !           801:   /* Initialize stack pointers.
        !           802:      Waste one element of value and location stack
        !           803:      so that they stay on the same level as the state stack.
        !           804:      The wasted elements are never initialized.  */
        !           805: 
        !           806:   yyssp = yyss;
        !           807:   yyvsp = yyvs;
        !           808: ]b4_location_if([  yylsp = yyls;])[
        !           809:   goto yysetstate;
        !           810: 
        !           811: /*------------------------------------------------------------.
        !           812: | yynewstate -- Push a new state, which is found in yystate.  |
        !           813: `------------------------------------------------------------*/
        !           814:  yynewstate:
        !           815:   /* In all cases, when you get here, the value and location stacks
        !           816:      have just been pushed. so pushing a state here evens the stacks.
        !           817:      */
        !           818:   yyssp++;
        !           819: 
        !           820:  yysetstate:
        !           821:   *yyssp = yystate;
        !           822: 
        !           823:   if (yyss + yystacksize - 1 <= yyssp)
        !           824:     {
        !           825:       /* Get the current used size of the three stacks, in elements.  */
        !           826:       YYSIZE_T yysize = yyssp - yyss + 1;
        !           827: 
        !           828: #ifdef yyoverflow
        !           829:       {
        !           830:        /* Give user a chance to reallocate the stack. Use copies of
        !           831:           these so that the &'s don't force the real ones into
        !           832:           memory.  */
        !           833:        YYSTYPE *yyvs1 = yyvs;
        !           834:        short *yyss1 = yyss;
        !           835: ]b4_location_if([      YYLTYPE *yyls1 = yyls;])[
        !           836: 
        !           837:        /* Each stack pointer address is followed by the size of the
        !           838:           data in use in that stack, in bytes.  This used to be a
        !           839:           conditional around just the two extra args, but that might
        !           840:           be undefined if yyoverflow is a macro.  */
        !           841:        yyoverflow ("parser stack overflow",
        !           842:                    &yyss1, yysize * sizeof (*yyssp),
        !           843:                    &yyvs1, yysize * sizeof (*yyvsp),
        !           844: ]b4_location_if([                  &yyls1, yysize * sizeof (*yylsp),])[
        !           845:                    &yystacksize);
        !           846: ]b4_location_if([      yyls = yyls1;])[
        !           847:        yyss = yyss1;
        !           848:        yyvs = yyvs1;
        !           849:       }
        !           850: #else /* no yyoverflow */
        !           851: # ifndef YYSTACK_RELOCATE
        !           852:       goto yyoverflowlab;
        !           853: # else
        !           854:       /* Extend the stack our own way.  */
        !           855:       if (YYMAXDEPTH <= yystacksize)
        !           856:        goto yyoverflowlab;
        !           857:       yystacksize *= 2;
        !           858:       if (YYMAXDEPTH < yystacksize)
        !           859:        yystacksize = YYMAXDEPTH;
        !           860: 
        !           861:       {
        !           862:        short *yyss1 = yyss;
        !           863:        union yyalloc *yyptr =
        !           864:          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
        !           865:        if (! yyptr)
        !           866:          goto yyoverflowlab;
        !           867:        YYSTACK_RELOCATE (yyss);
        !           868:        YYSTACK_RELOCATE (yyvs);
        !           869: ]b4_location_if([      YYSTACK_RELOCATE (yyls);])[
        !           870: #  undef YYSTACK_RELOCATE
        !           871:        if (yyss1 != yyssa)
        !           872:          YYSTACK_FREE (yyss1);
        !           873:       }
        !           874: # endif
        !           875: #endif /* no yyoverflow */
        !           876: 
        !           877:       yyssp = yyss + yysize - 1;
        !           878:       yyvsp = yyvs + yysize - 1;
        !           879: ]b4_location_if([      yylsp = yyls + yysize - 1;])[
        !           880: 
        !           881:       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
        !           882:                  (unsigned long int) yystacksize));
        !           883: 
        !           884:       if (yyss + yystacksize - 1 <= yyssp)
        !           885:        YYABORT;
        !           886:     }
        !           887: 
        !           888:   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
        !           889: 
        !           890:   goto yybackup;
        !           891: 
        !           892: /*-----------.
        !           893: | yybackup.  |
        !           894: `-----------*/
        !           895: yybackup:
        !           896: 
        !           897: /* Do appropriate processing given the current state.  */
        !           898: /* Read a lookahead token if we need one and don't already have one.  */
        !           899: /* yyresume: */
        !           900: 
        !           901:   /* First try to decide what to do without reference to lookahead token.  */
        !           902: 
        !           903:   yyn = yypact[yystate];
        !           904:   if (yyn == YYPACT_NINF)
        !           905:     goto yydefault;
        !           906: 
        !           907:   /* Not known => get a lookahead token if don't already have one.  */
        !           908: 
        !           909:   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
        !           910:   if (yychar == YYEMPTY)
        !           911:     {
        !           912:       YYDPRINTF ((stderr, "Reading a token: "));
        !           913:       yychar = YYLEX;
        !           914:     }
        !           915: 
        !           916:   if (yychar <= YYEOF)
        !           917:     {
        !           918:       yychar = yytoken = YYEOF;
        !           919:       YYDPRINTF ((stderr, "Now at end of input.\n"));
        !           920:     }
        !           921:   else
        !           922:     {
        !           923:       yytoken = YYTRANSLATE (yychar);
        !           924:       YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
        !           925:     }
        !           926: 
        !           927:   /* If the proper action on seeing token YYTOKEN is to reduce or to
        !           928:      detect an error, take that action.  */
        !           929:   yyn += yytoken;
        !           930:   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
        !           931:     goto yydefault;
        !           932:   yyn = yytable[yyn];
        !           933:   if (yyn <= 0)
        !           934:     {
        !           935:       if (yyn == 0 || yyn == YYTABLE_NINF)
        !           936:        goto yyerrlab;
        !           937:       yyn = -yyn;
        !           938:       goto yyreduce;
        !           939:     }
        !           940: 
        !           941:   if (yyn == YYFINAL)
        !           942:     YYACCEPT;
        !           943: 
        !           944:   /* Shift the lookahead token.  */
        !           945:   YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
        !           946: 
        !           947:   /* Discard the token being shifted unless it is eof.  */
        !           948:   if (yychar != YYEOF)
        !           949:     yychar = YYEMPTY;
        !           950: 
        !           951:   *++yyvsp = yylval;
        !           952: ]b4_location_if([  *++yylsp = yylloc;])[
        !           953: 
        !           954:   /* Count tokens shifted since error; after three, turn off error
        !           955:      status.  */
        !           956:   if (yyerrstatus)
        !           957:     yyerrstatus--;
        !           958: 
        !           959:   yystate = yyn;
        !           960:   goto yynewstate;
        !           961: 
        !           962: 
        !           963: /*-----------------------------------------------------------.
        !           964: | yydefault -- do the default action for the current state.  |
        !           965: `-----------------------------------------------------------*/
        !           966: yydefault:
        !           967:   yyn = yydefact[yystate];
        !           968:   if (yyn == 0)
        !           969:     goto yyerrlab;
        !           970:   goto yyreduce;
        !           971: 
        !           972: 
        !           973: /*-----------------------------.
        !           974: | yyreduce -- Do a reduction.  |
        !           975: `-----------------------------*/
        !           976: yyreduce:
        !           977:   /* yyn is the number of a rule to reduce with.  */
        !           978:   yylen = yyr2[yyn];
        !           979: 
        !           980:   /* If YYLEN is nonzero, implement the default value of the action:
        !           981:      `$$ = $1'.
        !           982: 
        !           983:      Otherwise, the following line sets YYVAL to garbage.
        !           984:      This behavior is undocumented and Bison
        !           985:      users should not rely upon it.  Assigning to YYVAL
        !           986:      unconditionally makes the parser a bit smaller, and it avoids a
        !           987:      GCC warning that YYVAL may be used uninitialized.  */
        !           988:   yyval = yyvsp[1-yylen];
        !           989: 
        !           990: ]b4_location_if(
        !           991: [  /* Default location. */
        !           992:   YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);])[
        !           993:   YY_REDUCE_PRINT (yyn);
        !           994:   switch (yyn)
        !           995:     ]{
        !           996:       b4_actions
        !           997:     }
        !           998: 
        !           999: /* Line __line__ of yacc.c.  */
        !          1000: b4_syncline([@oline@], [@ofile@])
        !          1001: 
        !          1002: [  yyvsp -= yylen;
        !          1003:   yyssp -= yylen;
        !          1004: ]b4_location_if([  yylsp -= yylen;])[
        !          1005: 
        !          1006:   YY_STACK_PRINT (yyss, yyssp);
        !          1007: 
        !          1008:   *++yyvsp = yyval;
        !          1009: ]b4_location_if([  *++yylsp = yyloc;])[
        !          1010: 
        !          1011:   /* Now `shift' the result of the reduction.  Determine what state
        !          1012:      that goes to, based on the state we popped back to and the rule
        !          1013:      number reduced by.  */
        !          1014: 
        !          1015:   yyn = yyr1[yyn];
        !          1016: 
        !          1017:   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
        !          1018:   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
        !          1019:     yystate = yytable[yystate];
        !          1020:   else
        !          1021:     yystate = yydefgoto[yyn - YYNTOKENS];
        !          1022: 
        !          1023:   goto yynewstate;
        !          1024: 
        !          1025: 
        !          1026: /*------------------------------------.
        !          1027: | yyerrlab -- here on detecting error |
        !          1028: `------------------------------------*/
        !          1029: yyerrlab:
        !          1030:   /* If not already recovering from an error, report this error.  */
        !          1031:   if (!yyerrstatus)
        !          1032:     {
        !          1033:       ++yynerrs;
        !          1034: #if YYERROR_VERBOSE
        !          1035:       yyn = yypact[yystate];
        !          1036: 
        !          1037:       if (YYPACT_NINF < yyn && yyn < YYLAST)
        !          1038:        {
        !          1039:          YYSIZE_T yysize = 0;
        !          1040:          int yytype = YYTRANSLATE (yychar);
        !          1041:          const char* yyprefix;
        !          1042:          char *yymsg;
        !          1043:          int yyx;
        !          1044: 
        !          1045:          /* Start YYX at -YYN if negative to avoid negative indexes in
        !          1046:             YYCHECK.  */
        !          1047:          int yyxbegin = yyn < 0 ? -yyn : 0;
        !          1048: 
        !          1049:          /* Stay within bounds of both yycheck and yytname.  */
        !          1050:          int yychecklim = YYLAST - yyn;
        !          1051:          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
        !          1052:          int yycount = 0;
        !          1053: 
        !          1054:          yyprefix = ", expecting ";
        !          1055:          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
        !          1056:            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
        !          1057:              {
        !          1058:                yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
        !          1059:                yycount += 1;
        !          1060:                if (yycount == 5)
        !          1061:                  {
        !          1062:                    yysize = 0;
        !          1063:                    break;
        !          1064:                  }
        !          1065:              }
        !          1066:          yysize += (sizeof ("syntax error, unexpected ")
        !          1067:                     + yystrlen (yytname[yytype]));
        !          1068:          yymsg = (char *) YYSTACK_ALLOC (yysize);
        !          1069:          if (yymsg != 0)
        !          1070:            {
        !          1071:              char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
        !          1072:              yyp = yystpcpy (yyp, yytname[yytype]);
        !          1073: 
        !          1074:              if (yycount < 5)
        !          1075:                {
        !          1076:                  yyprefix = ", expecting ";
        !          1077:                  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
        !          1078:                    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
        !          1079:                      {
        !          1080:                        yyp = yystpcpy (yyp, yyprefix);
        !          1081:                        yyp = yystpcpy (yyp, yytname[yyx]);
        !          1082:                        yyprefix = " or ";
        !          1083:                      }
        !          1084:                }
        !          1085:              yyerror (]b4_yyerror_args[yymsg);
        !          1086:              YYSTACK_FREE (yymsg);
        !          1087:            }
        !          1088:          else
        !          1089:            yyerror (]b4_yyerror_args["syntax error; also virtual memory exhausted");
        !          1090:        }
        !          1091:       else
        !          1092: #endif /* YYERROR_VERBOSE */
        !          1093:        yyerror (]b4_yyerror_args["syntax error");
        !          1094:     }
        !          1095: 
        !          1096: ]b4_location_if([  yylerrsp = yylsp;])[
        !          1097: 
        !          1098:   if (yyerrstatus == 3)
        !          1099:     {
        !          1100:       /* If just tried and failed to reuse lookahead token after an
        !          1101:         error, discard it.  */
        !          1102: 
        !          1103:       /* Return failure if at end of input.  */
        !          1104:       if (yychar == YYEOF)
        !          1105:         {
        !          1106:          /* Pop the error token.  */
        !          1107:           YYPOPSTACK;
        !          1108:          /* Pop the rest of the stack.  */
        !          1109:          while (yyss < yyssp)
        !          1110:            {
        !          1111:              YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
        !          1112:              yydestruct (yystos[*yyssp], yyvsp]b4_location_if([, yylsp])[);
        !          1113:              YYPOPSTACK;
        !          1114:            }
        !          1115:          YYABORT;
        !          1116:         }
        !          1117: 
        !          1118:       YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
        !          1119:       yydestruct (yytoken, &yylval]b4_location_if([, &yylloc])[);
        !          1120:       yychar = YYEMPTY;
        !          1121: ]b4_location_if([      *++yylerrsp = yylloc;])[
        !          1122:     }
        !          1123: 
        !          1124:   /* Else will try to reuse lookahead token after shifting the error
        !          1125:      token.  */
        !          1126:   goto yyerrlab1;
        !          1127: 
        !          1128: 
        !          1129: /*----------------------------------------------------.
        !          1130: | yyerrlab1 -- error raised explicitly by an action.  |
        !          1131: `----------------------------------------------------*/
        !          1132: yyerrlab1:
        !          1133:   yyerrstatus = 3;     /* Each real token shifted decrements this.  */
        !          1134: 
        !          1135:   for (;;)
        !          1136:     {
        !          1137:       yyn = yypact[yystate];
        !          1138:       if (yyn != YYPACT_NINF)
        !          1139:        {
        !          1140:          yyn += YYTERROR;
        !          1141:          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
        !          1142:            {
        !          1143:              yyn = yytable[yyn];
        !          1144:              if (0 < yyn)
        !          1145:                break;
        !          1146:            }
        !          1147:        }
        !          1148: 
        !          1149:       /* Pop the current state because it cannot handle the error token.  */
        !          1150:       if (yyssp == yyss)
        !          1151:        YYABORT;
        !          1152: 
        !          1153:       YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
        !          1154:       yydestruct (yystos[yystate], yyvsp]b4_location_if([, yylsp])[);
        !          1155:       yyvsp--;
        !          1156:       yystate = *--yyssp;
        !          1157: ]b4_location_if([      yylsp--;])[
        !          1158:       YY_STACK_PRINT (yyss, yyssp);
        !          1159:     }
        !          1160: 
        !          1161:   if (yyn == YYFINAL)
        !          1162:     YYACCEPT;
        !          1163: 
        !          1164:   YYDPRINTF ((stderr, "Shifting error token, "));
        !          1165: 
        !          1166:   *++yyvsp = yylval;
        !          1167: ]b4_location_if([  YYLLOC_DEFAULT (yyloc, yylsp, (yylerrsp - yylsp));
        !          1168:   *++yylsp = yyloc;])[
        !          1169: 
        !          1170:   yystate = yyn;
        !          1171:   goto yynewstate;
        !          1172: 
        !          1173: 
        !          1174: /*-------------------------------------.
        !          1175: | yyacceptlab -- YYACCEPT comes here.  |
        !          1176: `-------------------------------------*/
        !          1177: yyacceptlab:
        !          1178:   yyresult = 0;
        !          1179:   goto yyreturn;
        !          1180: 
        !          1181: /*-----------------------------------.
        !          1182: | yyabortlab -- YYABORT comes here.  |
        !          1183: `-----------------------------------*/
        !          1184: yyabortlab:
        !          1185:   yyresult = 1;
        !          1186:   goto yyreturn;
        !          1187: 
        !          1188: #ifndef yyoverflow
        !          1189: /*----------------------------------------------.
        !          1190: | yyoverflowlab -- parser overflow comes here.  |
        !          1191: `----------------------------------------------*/
        !          1192: yyoverflowlab:
        !          1193:   yyerror (]b4_yyerror_args["parser stack overflow");
        !          1194:   yyresult = 2;
        !          1195:   /* Fall through.  */
        !          1196: #endif
        !          1197: 
        !          1198: yyreturn:
        !          1199: #ifndef yyoverflow
        !          1200:   if (yyss != yyssa)
        !          1201:     YYSTACK_FREE (yyss);
        !          1202: #endif
        !          1203:   return yyresult;
        !          1204: ]}
        !          1205: 
        !          1206: 
        !          1207: b4_epilogue
        !          1208: m4_if(b4_defines_flag, 0, [],
        !          1209: [@output @output_header_name@
        !          1210: b4_copyright([Skeleton parser for Yacc-like parsing with Bison],
        !          1211:              [1984, 1989, 1990, 2000, 2001, 2002, 2003])
        !          1212: 
        !          1213: /* As a special exception, when this file is copied by Bison into a
        !          1214:    Bison output file, you may use that output file without restriction.
        !          1215:    This special exception was added by the Free Software Foundation
        !          1216:    in version 1.24 of Bison.  */
        !          1217: 
        !          1218: b4_token_defines(b4_tokens)
        !          1219: 
        !          1220: #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
        !          1221: m4_ifdef([b4_stype],
        !          1222: [b4_syncline([b4_stype_line], [b4_filename])
        !          1223: typedef union m4_bregexp(b4_stype, [^{], [YYSTYPE ])b4_stype YYSTYPE;
        !          1224: /* Line __line__ of yacc.c.  */
        !          1225: b4_syncline([@oline@], [@ofile@])],
        !          1226: [typedef int YYSTYPE;])
        !          1227: # define yystype YYSTYPE /* obsolescent; will be withdrawn */
        !          1228: # define YYSTYPE_IS_DECLARED 1
        !          1229: # define YYSTYPE_IS_TRIVIAL 1
        !          1230: #endif
        !          1231: 
        !          1232: b4_pure_if([],
        !          1233: [extern YYSTYPE b4_prefix[]lval;])
        !          1234: 
        !          1235: b4_location_if(
        !          1236: [#if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
        !          1237: typedef struct YYLTYPE
        !          1238: {
        !          1239:   int first_line;
        !          1240:   int first_column;
        !          1241:   int last_line;
        !          1242:   int last_column;
        !          1243: } YYLTYPE;
        !          1244: # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
        !          1245: # define YYLTYPE_IS_DECLARED 1
        !          1246: # define YYLTYPE_IS_TRIVIAL 1
        !          1247: #endif
        !          1248: 
        !          1249: m4_if(b4_pure, [0],
        !          1250: [extern YYLTYPE b4_prefix[]lloc;])
        !          1251: ])
        !          1252: ])

E-mail: