Annotation of win32/tools/cygwin/usr/share/bison/yacc.c, revision 1.1
1.1 ! misha 1: -*- C -*-
! 2:
! 3: # Yacc compatible skeleton for Bison
! 4:
! 5: # Copyright (C) 1984, 1989-1990, 2000-2010 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, don't let BISON_USE_PUSH_FOR_PULL modify Bison's
! 33: # behavior 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: m4_include(b4_pkgdatadir/[c.m4])
! 40:
! 41: ## ---------------- ##
! 42: ## Default values. ##
! 43: ## ---------------- ##
! 44:
! 45: # Stack parameters.
! 46: m4_define_default([b4_stack_depth_max], [10000])
! 47: m4_define_default([b4_stack_depth_init], [200])
! 48:
! 49:
! 50: ## ------------------------ ##
! 51: ## Pure/impure interfaces. ##
! 52: ## ------------------------ ##
! 53:
! 54: b4_percent_define_default([[api.pure]], [[false]])
! 55: b4_define_flag_if([pure])
! 56: m4_define([b4_pure_flag],
! 57: [b4_percent_define_flag_if([[api.pure]], [[1]], [[0]])])
! 58:
! 59: # b4_yacc_pure_if(IF-TRUE, IF-FALSE)
! 60: # ----------------------------------
! 61: # Expand IF-TRUE, if %pure-parser and %parse-param, IF-FALSE otherwise.
! 62: m4_define([b4_yacc_pure_if],
! 63: [b4_pure_if([m4_ifset([b4_parse_param],
! 64: [$1], [$2])],
! 65: [$2])])
! 66:
! 67:
! 68: # b4_yyerror_args
! 69: # ---------------
! 70: # Arguments passed to yyerror: user args plus yylloc.
! 71: m4_define([b4_yyerror_args],
! 72: [b4_yacc_pure_if([b4_locations_if([&yylloc, ])])dnl
! 73: m4_ifset([b4_parse_param], [b4_c_args(b4_parse_param), ])])
! 74:
! 75:
! 76: # b4_lex_param
! 77: # ------------
! 78: # Accumulate in b4_lex_param all the yylex arguments.
! 79: # b4_lex_param arrives quoted twice, but we want to keep only one level.
! 80: m4_define([b4_lex_param],
! 81: m4_dquote(b4_pure_if([[[[YYSTYPE *]], [[&yylval]]][]dnl
! 82: b4_locations_if([, [[YYLTYPE *], [&yylloc]]])m4_ifdef([b4_lex_param], [, ])])dnl
! 83: m4_ifdef([b4_lex_param], b4_lex_param)))
! 84:
! 85:
! 86: ## ------------ ##
! 87: ## Data Types. ##
! 88: ## ------------ ##
! 89:
! 90: # b4_int_type(MIN, MAX)
! 91: # ---------------------
! 92: # Return the smallest int type able to handle numbers ranging from
! 93: # MIN to MAX (included). Overwrite the version from c.m4, which
! 94: # uses only C89 types, so that the user can override the shorter
! 95: # types, and so that pre-C89 compilers are handled correctly.
! 96: m4_define([b4_int_type],
! 97: [m4_if(b4_ints_in($@, [0], [255]), [1], [yytype_uint8],
! 98: b4_ints_in($@, [-128], [127]), [1], [yytype_int8],
! 99:
! 100: b4_ints_in($@, [0], [65535]), [1], [yytype_uint16],
! 101: b4_ints_in($@, [-32768], [32767]), [1], [yytype_int16],
! 102:
! 103: m4_eval([0 <= $1]), [1], [unsigned int],
! 104:
! 105: [int])])
! 106:
! 107:
! 108: ## ----------------- ##
! 109: ## Semantic Values. ##
! 110: ## ----------------- ##
! 111:
! 112:
! 113: # b4_lhs_value([TYPE])
! 114: # --------------------
! 115: # Expansion of $<TYPE>$.
! 116: m4_define([b4_lhs_value],
! 117: [(yyval[]m4_ifval([$1], [.$1]))])
! 118:
! 119:
! 120: # b4_rhs_value(RULE-LENGTH, NUM, [TYPE])
! 121: # --------------------------------------
! 122: # Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
! 123: # symbols on RHS.
! 124: m4_define([b4_rhs_value],
! 125: [(yyvsp@{($2) - ($1)@}m4_ifval([$3], [.$3]))])
! 126:
! 127:
! 128:
! 129: ## ----------- ##
! 130: ## Locations. ##
! 131: ## ----------- ##
! 132:
! 133: # b4_lhs_location()
! 134: # -----------------
! 135: # Expansion of @$.
! 136: m4_define([b4_lhs_location],
! 137: [(yyloc)])
! 138:
! 139:
! 140: # b4_rhs_location(RULE-LENGTH, NUM)
! 141: # ---------------------------------
! 142: # Expansion of @NUM, where the current rule has RULE-LENGTH symbols
! 143: # on RHS.
! 144: m4_define([b4_rhs_location],
! 145: [(yylsp@{($2) - ($1)@})])
! 146:
! 147:
! 148:
! 149: ## --------------------------------------------------------- ##
! 150: ## Defining symbol actions, e.g., printers and destructors. ##
! 151: ## --------------------------------------------------------- ##
! 152:
! 153: # We do want M4 expansion after # for CPP macros.
! 154: m4_changecom()
! 155: m4_divert_push(0)dnl
! 156: @output(b4_parser_file_name@)@
! 157: b4_copyright([Skeleton implementation for Bison's Yacc-like parsers in C],
! 158: [1984, 1989-1990, 2000-2006, 2009-2010])[
! 159:
! 160: /* C LALR(1) parser skeleton written by Richard Stallman, by
! 161: simplifying the original so-called "semantic" parser. */
! 162:
! 163: /* All symbols defined below should begin with yy or YY, to avoid
! 164: infringing on user name space. This should be done even for local
! 165: variables, as they might otherwise be expanded by user macros.
! 166: There are some unavoidable exceptions within include files to
! 167: define necessary library symbols; they are noted "INFRINGES ON
! 168: USER NAME SPACE" below. */
! 169:
! 170: ]b4_identification
! 171: b4_percent_code_get([[top]])[]dnl
! 172: m4_if(b4_prefix, [yy], [],
! 173: [[/* Substitute the variable and function names. */
! 174: ]b4_pull_if([[#define yyparse ]b4_prefix[parse
! 175: ]])b4_push_if([[#define yypush_parse ]b4_prefix[push_parse
! 176: ]b4_pull_if([[#define yypull_parse ]b4_prefix[pull_parse
! 177: ]])[#define yypstate_new ]b4_prefix[pstate_new
! 178: #define yypstate_delete ]b4_prefix[pstate_delete
! 179: #define yypstate ]b4_prefix[pstate
! 180: ]])[#define yylex ]b4_prefix[lex
! 181: #define yyerror ]b4_prefix[error
! 182: #define yylval ]b4_prefix[lval
! 183: #define yychar ]b4_prefix[char
! 184: #define yydebug ]b4_prefix[debug
! 185: #define yynerrs ]b4_prefix[nerrs
! 186: ]b4_locations_if([[#define yylloc ]b4_prefix[lloc]])])[
! 187:
! 188: /* Copy the first part of user declarations. */
! 189: ]b4_user_pre_prologue[
! 190:
! 191: /* Enabling traces. */
! 192: #ifndef YYDEBUG
! 193: # define YYDEBUG ]b4_debug_flag[
! 194: #endif
! 195:
! 196: /* Enabling verbose error messages. */
! 197: #ifdef YYERROR_VERBOSE
! 198: # undef YYERROR_VERBOSE
! 199: # define YYERROR_VERBOSE 1
! 200: #else
! 201: # define YYERROR_VERBOSE ]b4_error_verbose_flag[
! 202: #endif
! 203:
! 204: /* Enabling the token table. */
! 205: #ifndef YYTOKEN_TABLE
! 206: # define YYTOKEN_TABLE ]b4_token_table[
! 207: #endif
! 208:
! 209: ]b4_percent_code_get([[requires]])[]dnl
! 210:
! 211: b4_token_enums_defines(b4_tokens)[
! 212:
! 213: #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
! 214: ]m4_ifdef([b4_stype],
! 215: [[typedef union ]b4_union_name[
! 216: {
! 217: ]b4_user_stype[
! 218: } YYSTYPE;
! 219: # define YYSTYPE_IS_TRIVIAL 1]],
! 220: [m4_if(b4_tag_seen_flag, 0,
! 221: [[typedef int YYSTYPE;
! 222: # define YYSTYPE_IS_TRIVIAL 1]])])[
! 223: # define yystype YYSTYPE /* obsolescent; will be withdrawn */
! 224: # define YYSTYPE_IS_DECLARED 1
! 225: #endif]b4_locations_if([[
! 226:
! 227: #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
! 228: typedef struct YYLTYPE
! 229: {
! 230: int first_line;
! 231: int first_column;
! 232: int last_line;
! 233: int last_column;
! 234: } YYLTYPE;
! 235: # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
! 236: # define YYLTYPE_IS_DECLARED 1
! 237: # define YYLTYPE_IS_TRIVIAL 1
! 238: #endif]])b4_push_if([[
! 239:
! 240: #ifndef YYPUSH_DECLS
! 241: # define YYPUSH_DECLS
! 242: struct yypstate;
! 243: typedef struct yypstate yypstate;
! 244: enum { YYPUSH_MORE = 4 };
! 245:
! 246: ]b4_pull_if([b4_c_function_decl([[yyparse]], [[int]], b4_parse_param)
! 247: ])b4_c_function_decl([[yypush_parse]], [[int]],
! 248: [[[yypstate *yyps]], [[yyps]]]b4_pure_if([,
! 249: [[[int yypushed_char]], [[yypushed_char]]],
! 250: [[[YYSTYPE const *yypushed_val]], [[yypushed_val]]]b4_locations_if([,
! 251: [[[YYLTYPE const *yypushed_loc]], [[yypushed_loc]]]])])m4_ifset([b4_parse_param], [,
! 252: b4_parse_param]))
! 253: b4_pull_if([b4_c_function_decl([[yypull_parse]], [[int]],
! 254: [[[yypstate *yyps]], [[yyps]]]m4_ifset([b4_parse_param], [,
! 255: b4_parse_param]))])
! 256: b4_c_function_decl([[yypstate_new]], [[yypstate *]], [[[void]], []])
! 257: b4_c_function_decl([[yypstate_delete]], [[void]],
! 258: [[[yypstate *yyps]], [[yyps]]])[
! 259: #endif]])
! 260:
! 261: b4_percent_code_get([[provides]])[]dnl
! 262:
! 263: [/* Copy the second part of user declarations. */
! 264: ]b4_user_post_prologue
! 265: b4_percent_code_get[]dnl
! 266:
! 267: [#ifdef short
! 268: # undef short
! 269: #endif
! 270:
! 271: #ifdef YYTYPE_UINT8
! 272: typedef YYTYPE_UINT8 yytype_uint8;
! 273: #else
! 274: typedef unsigned char yytype_uint8;
! 275: #endif
! 276:
! 277: #ifdef YYTYPE_INT8
! 278: typedef YYTYPE_INT8 yytype_int8;
! 279: #elif ]b4_c_modern[
! 280: typedef signed char yytype_int8;
! 281: #else
! 282: typedef short int yytype_int8;
! 283: #endif
! 284:
! 285: #ifdef YYTYPE_UINT16
! 286: typedef YYTYPE_UINT16 yytype_uint16;
! 287: #else
! 288: typedef unsigned short int yytype_uint16;
! 289: #endif
! 290:
! 291: #ifdef YYTYPE_INT16
! 292: typedef YYTYPE_INT16 yytype_int16;
! 293: #else
! 294: typedef short int yytype_int16;
! 295: #endif
! 296:
! 297: #ifndef YYSIZE_T
! 298: # ifdef __SIZE_TYPE__
! 299: # define YYSIZE_T __SIZE_TYPE__
! 300: # elif defined size_t
! 301: # define YYSIZE_T size_t
! 302: # elif ! defined YYSIZE_T && ]b4_c_modern[
! 303: # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
! 304: # define YYSIZE_T size_t
! 305: # else
! 306: # define YYSIZE_T unsigned int
! 307: # endif
! 308: #endif
! 309:
! 310: #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
! 311:
! 312: #ifndef YY_
! 313: # if defined YYENABLE_NLS && YYENABLE_NLS
! 314: # if ENABLE_NLS
! 315: # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
! 316: # define YY_(msgid) dgettext ("bison-runtime", msgid)
! 317: # endif
! 318: # endif
! 319: # ifndef YY_
! 320: # define YY_(msgid) msgid
! 321: # endif
! 322: #endif
! 323:
! 324: /* Suppress unused-variable warnings by "using" E. */
! 325: #if ! defined lint || defined __GNUC__
! 326: # define YYUSE(e) ((void) (e))
! 327: #else
! 328: # define YYUSE(e) /* empty */
! 329: #endif
! 330:
! 331: /* Identity function, used to suppress warnings about constant conditions. */
! 332: #ifndef lint
! 333: # define YYID(n) (n)
! 334: #else
! 335: ]b4_c_function_def([YYID], [static int], [[int yyi], [yyi]])[
! 336: {
! 337: return yyi;
! 338: }
! 339: #endif
! 340:
! 341: #if ! defined yyoverflow || YYERROR_VERBOSE
! 342:
! 343: ]b4_push_if([],
! 344: [[/* The parser invokes alloca or malloc; define the necessary symbols. */
! 345:
! 346: # ifdef YYSTACK_USE_ALLOCA
! 347: # if YYSTACK_USE_ALLOCA
! 348: # ifdef __GNUC__
! 349: # define YYSTACK_ALLOC __builtin_alloca
! 350: # elif defined __BUILTIN_VA_ARG_INCR
! 351: # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
! 352: # elif defined _AIX
! 353: # define YYSTACK_ALLOC __alloca
! 354: # elif defined _MSC_VER
! 355: # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
! 356: # define alloca _alloca
! 357: # else
! 358: # define YYSTACK_ALLOC alloca
! 359: # if ! defined _ALLOCA_H && ! defined _STDLIB_H && ]b4_c_modern[
! 360: # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
! 361: # ifndef _STDLIB_H
! 362: # define _STDLIB_H 1
! 363: # endif
! 364: # endif
! 365: # endif
! 366: # endif
! 367: # endif
! 368:
! 369: ]])dnl
! 370: [# ifdef YYSTACK_ALLOC
! 371: /* Pacify GCC's `empty if-body' warning. */
! 372: # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
! 373: # ifndef YYSTACK_ALLOC_MAXIMUM
! 374: /* The OS might guarantee only one guard page at the bottom of the stack,
! 375: and a page size can be as small as 4096 bytes. So we cannot safely
! 376: invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
! 377: to allow for a few compiler-allocated temporary stack slots. */
! 378: # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
! 379: # endif
! 380: # else
! 381: # define YYSTACK_ALLOC YYMALLOC
! 382: # define YYSTACK_FREE YYFREE
! 383: # ifndef YYSTACK_ALLOC_MAXIMUM
! 384: # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
! 385: # endif
! 386: # if (defined __cplusplus && ! defined _STDLIB_H \
! 387: && ! ((defined YYMALLOC || defined malloc) \
! 388: && (defined YYFREE || defined free)))
! 389: # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
! 390: # ifndef _STDLIB_H
! 391: # define _STDLIB_H 1
! 392: # endif
! 393: # endif
! 394: # ifndef YYMALLOC
! 395: # define YYMALLOC malloc
! 396: # if ! defined malloc && ! defined _STDLIB_H && ]b4_c_modern[
! 397: void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
! 398: # endif
! 399: # endif
! 400: # ifndef YYFREE
! 401: # define YYFREE free
! 402: # if ! defined free && ! defined _STDLIB_H && ]b4_c_modern[
! 403: void free (void *); /* INFRINGES ON USER NAME SPACE */
! 404: # endif
! 405: # endif
! 406: # endif
! 407: #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
! 408:
! 409:
! 410: #if (! defined yyoverflow \
! 411: && (! defined __cplusplus \
! 412: || (]b4_locations_if([[defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
! 413: && ]])[defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
! 414:
! 415: /* A type that is properly aligned for any stack member. */
! 416: union yyalloc
! 417: {
! 418: yytype_int16 yyss_alloc;
! 419: YYSTYPE yyvs_alloc;]b4_locations_if([
! 420: YYLTYPE yyls_alloc;])[
! 421: };
! 422:
! 423: /* The size of the maximum gap between one aligned stack and the next. */
! 424: # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
! 425:
! 426: /* The size of an array large to enough to hold all stacks, each with
! 427: N elements. */
! 428: ]b4_locations_if(
! 429: [# define YYSTACK_BYTES(N) \
! 430: ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
! 431: + 2 * YYSTACK_GAP_MAXIMUM)],
! 432: [# define YYSTACK_BYTES(N) \
! 433: ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
! 434: + YYSTACK_GAP_MAXIMUM)])[
! 435:
! 436: /* Copy COUNT objects from FROM to TO. The source and destination do
! 437: not overlap. */
! 438: # ifndef YYCOPY
! 439: # if defined __GNUC__ && 1 < __GNUC__
! 440: # define YYCOPY(To, From, Count) \
! 441: __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
! 442: # else
! 443: # define YYCOPY(To, From, Count) \
! 444: do \
! 445: { \
! 446: YYSIZE_T yyi; \
! 447: for (yyi = 0; yyi < (Count); yyi++) \
! 448: (To)[yyi] = (From)[yyi]; \
! 449: } \
! 450: while (YYID (0))
! 451: # endif
! 452: # endif
! 453:
! 454: /* Relocate STACK from its old location to the new one. The
! 455: local variables YYSIZE and YYSTACKSIZE give the old and new number of
! 456: elements in the stack, and YYPTR gives the new location of the
! 457: stack. Advance YYPTR to a properly aligned location for the next
! 458: stack. */
! 459: # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
! 460: do \
! 461: { \
! 462: YYSIZE_T yynewbytes; \
! 463: YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
! 464: Stack = &yyptr->Stack_alloc; \
! 465: yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
! 466: yyptr += yynewbytes / sizeof (*yyptr); \
! 467: } \
! 468: while (YYID (0))
! 469:
! 470: #endif
! 471:
! 472: /* YYFINAL -- State number of the termination state. */
! 473: #define YYFINAL ]b4_final_state_number[
! 474: /* YYLAST -- Last index in YYTABLE. */
! 475: #define YYLAST ]b4_last[
! 476:
! 477: /* YYNTOKENS -- Number of terminals. */
! 478: #define YYNTOKENS ]b4_tokens_number[
! 479: /* YYNNTS -- Number of nonterminals. */
! 480: #define YYNNTS ]b4_nterms_number[
! 481: /* YYNRULES -- Number of rules. */
! 482: #define YYNRULES ]b4_rules_number[
! 483: /* YYNRULES -- Number of states. */
! 484: #define YYNSTATES ]b4_states_number[
! 485:
! 486: /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
! 487: #define YYUNDEFTOK ]b4_undef_token_number[
! 488: #define YYMAXUTOK ]b4_user_token_number_max[
! 489:
! 490: #define YYTRANSLATE(YYX) \
! 491: ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
! 492:
! 493: /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
! 494: static const ]b4_int_type_for([b4_translate])[ yytranslate[] =
! 495: {
! 496: ]b4_translate[
! 497: };
! 498:
! 499: #if YYDEBUG
! 500: /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
! 501: YYRHS. */
! 502: static const ]b4_int_type_for([b4_prhs])[ yyprhs[] =
! 503: {
! 504: ]b4_prhs[
! 505: };
! 506:
! 507: /* YYRHS -- A `-1'-separated list of the rules' RHS. */
! 508: static const ]b4_int_type_for([b4_rhs])[ yyrhs[] =
! 509: {
! 510: ]b4_rhs[
! 511: };
! 512:
! 513: /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
! 514: static const ]b4_int_type_for([b4_rline])[ yyrline[] =
! 515: {
! 516: ]b4_rline[
! 517: };
! 518: #endif
! 519:
! 520: #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
! 521: /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
! 522: First, the terminals, then, starting at YYNTOKENS, nonterminals. */
! 523: static const char *const yytname[] =
! 524: {
! 525: ]b4_tname[
! 526: };
! 527: #endif
! 528:
! 529: # ifdef YYPRINT
! 530: /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
! 531: token YYLEX-NUM. */
! 532: static const ]b4_int_type_for([b4_toknum])[ yytoknum[] =
! 533: {
! 534: ]b4_toknum[
! 535: };
! 536: # endif
! 537:
! 538: /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
! 539: static const ]b4_int_type_for([b4_r1])[ yyr1[] =
! 540: {
! 541: ]b4_r1[
! 542: };
! 543:
! 544: /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
! 545: static const ]b4_int_type_for([b4_r2])[ yyr2[] =
! 546: {
! 547: ]b4_r2[
! 548: };
! 549:
! 550: /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
! 551: STATE-NUM when YYTABLE doesn't specify something else to do. Zero
! 552: means the default is an error. */
! 553: static const ]b4_int_type_for([b4_defact])[ yydefact[] =
! 554: {
! 555: ]b4_defact[
! 556: };
! 557:
! 558: /* YYDEFGOTO[NTERM-NUM]. */
! 559: static const ]b4_int_type_for([b4_defgoto])[ yydefgoto[] =
! 560: {
! 561: ]b4_defgoto[
! 562: };
! 563:
! 564: /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
! 565: STATE-NUM. */
! 566: #define YYPACT_NINF ]b4_pact_ninf[
! 567: static const ]b4_int_type_for([b4_pact])[ yypact[] =
! 568: {
! 569: ]b4_pact[
! 570: };
! 571:
! 572: /* YYPGOTO[NTERM-NUM]. */
! 573: static const ]b4_int_type_for([b4_pgoto])[ yypgoto[] =
! 574: {
! 575: ]b4_pgoto[
! 576: };
! 577:
! 578: /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
! 579: positive, shift that token. If negative, reduce the rule which
! 580: number is the opposite. If zero, do what YYDEFACT says.
! 581: If YYTABLE_NINF, syntax error. */
! 582: #define YYTABLE_NINF ]b4_table_ninf[
! 583: static const ]b4_int_type_for([b4_table])[ yytable[] =
! 584: {
! 585: ]b4_table[
! 586: };
! 587:
! 588: static const ]b4_int_type_for([b4_check])[ yycheck[] =
! 589: {
! 590: ]b4_check[
! 591: };
! 592:
! 593: /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
! 594: symbol of state STATE-NUM. */
! 595: static const ]b4_int_type_for([b4_stos])[ yystos[] =
! 596: {
! 597: ]b4_stos[
! 598: };
! 599:
! 600: #define yyerrok (yyerrstatus = 0)
! 601: #define yyclearin (yychar = YYEMPTY)
! 602: #define YYEMPTY (-2)
! 603: #define YYEOF 0
! 604:
! 605: #define YYACCEPT goto yyacceptlab
! 606: #define YYABORT goto yyabortlab
! 607: #define YYERROR goto yyerrorlab
! 608:
! 609:
! 610: /* Like YYERROR except do call yyerror. This remains here temporarily
! 611: to ease the transition to the new meaning of YYERROR, for GCC.
! 612: Once GCC version 2 has supplanted version 1, this can go. However,
! 613: YYFAIL appears to be in use. Nevertheless, it is formally deprecated
! 614: in Bison 2.4.2's NEWS entry, where a plan to phase it out is
! 615: discussed. */
! 616:
! 617: #define YYFAIL goto yyerrlab
! 618: #if defined YYFAIL
! 619: /* This is here to suppress warnings from the GCC cpp's
! 620: -Wunused-macros. Normally we don't worry about that warning, but
! 621: some users do, and we want to make it easy for users to remove
! 622: YYFAIL uses, which will produce warnings from Bison 2.5. */
! 623: #endif
! 624:
! 625: #define YYRECOVERING() (!!yyerrstatus)
! 626:
! 627: #define YYBACKUP(Token, Value) \
! 628: do \
! 629: if (yychar == YYEMPTY && yylen == 1) \
! 630: { \
! 631: yychar = (Token); \
! 632: yylval = (Value); \
! 633: yytoken = YYTRANSLATE (yychar); \
! 634: YYPOPSTACK (1); \
! 635: goto yybackup; \
! 636: } \
! 637: else \
! 638: { \
! 639: yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")); \
! 640: YYERROR; \
! 641: } \
! 642: while (YYID (0))
! 643:
! 644:
! 645: #define YYTERROR 1
! 646: #define YYERRCODE 256
! 647:
! 648:
! 649: /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
! 650: If N is 0, then set CURRENT to the empty location which ends
! 651: the previous symbol: RHS[0] (always defined). */
! 652:
! 653: #define YYRHSLOC(Rhs, K) ((Rhs)[K])
! 654: #ifndef YYLLOC_DEFAULT
! 655: # define YYLLOC_DEFAULT(Current, Rhs, N) \
! 656: do \
! 657: if (YYID (N)) \
! 658: { \
! 659: (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
! 660: (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
! 661: (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
! 662: (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
! 663: } \
! 664: else \
! 665: { \
! 666: (Current).first_line = (Current).last_line = \
! 667: YYRHSLOC (Rhs, 0).last_line; \
! 668: (Current).first_column = (Current).last_column = \
! 669: YYRHSLOC (Rhs, 0).last_column; \
! 670: } \
! 671: while (YYID (0))
! 672: #endif
! 673:
! 674:
! 675: /* YY_LOCATION_PRINT -- Print the location on the stream.
! 676: This macro was not mandated originally: define only if we know
! 677: we won't break user code: when these are the locations we know. */
! 678:
! 679: #ifndef YY_LOCATION_PRINT
! 680: # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
! 681: # define YY_LOCATION_PRINT(File, Loc) \
! 682: fprintf (File, "%d.%d-%d.%d", \
! 683: (Loc).first_line, (Loc).first_column, \
! 684: (Loc).last_line, (Loc).last_column)
! 685: # else
! 686: # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
! 687: # endif
! 688: #endif
! 689:
! 690:
! 691: /* YYLEX -- calling `yylex' with the right arguments. */
! 692:
! 693: #ifdef YYLEX_PARAM
! 694: # define YYLEX yylex (]b4_pure_if([&yylval[]b4_locations_if([, &yylloc]), ])[YYLEX_PARAM)
! 695: #else
! 696: # define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[
! 697: #endif
! 698:
! 699: /* Enable debugging if requested. */
! 700: #if YYDEBUG
! 701:
! 702: # ifndef YYFPRINTF
! 703: # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
! 704: # define YYFPRINTF fprintf
! 705: # endif
! 706:
! 707: # define YYDPRINTF(Args) \
! 708: do { \
! 709: if (yydebug) \
! 710: YYFPRINTF Args; \
! 711: } while (YYID (0))
! 712:
! 713: # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
! 714: do { \
! 715: if (yydebug) \
! 716: { \
! 717: YYFPRINTF (stderr, "%s ", Title); \
! 718: yy_symbol_print (stderr, \
! 719: Type, Value]b4_locations_if([, Location])[]b4_user_args[); \
! 720: YYFPRINTF (stderr, "\n"); \
! 721: } \
! 722: } while (YYID (0))
! 723:
! 724: ]b4_yy_symbol_print_generate([b4_c_function_def])[
! 725:
! 726: /*------------------------------------------------------------------.
! 727: | yy_stack_print -- Print the state stack from its BOTTOM up to its |
! 728: | TOP (included). |
! 729: `------------------------------------------------------------------*/
! 730:
! 731: ]b4_c_function_def([yy_stack_print], [static void],
! 732: [[yytype_int16 *yybottom], [yybottom]],
! 733: [[yytype_int16 *yytop], [yytop]])[
! 734: {
! 735: YYFPRINTF (stderr, "Stack now");
! 736: for (; yybottom <= yytop; yybottom++)
! 737: {
! 738: int yybot = *yybottom;
! 739: YYFPRINTF (stderr, " %d", yybot);
! 740: }
! 741: YYFPRINTF (stderr, "\n");
! 742: }
! 743:
! 744: # define YY_STACK_PRINT(Bottom, Top) \
! 745: do { \
! 746: if (yydebug) \
! 747: yy_stack_print ((Bottom), (Top)); \
! 748: } while (YYID (0))
! 749:
! 750:
! 751: /*------------------------------------------------.
! 752: | Report that the YYRULE is going to be reduced. |
! 753: `------------------------------------------------*/
! 754:
! 755: ]b4_c_function_def([yy_reduce_print], [static void],
! 756: [[YYSTYPE *yyvsp], [yyvsp]],
! 757: b4_locations_if([[[YYLTYPE *yylsp], [yylsp]],
! 758: ])[[int yyrule], [yyrule]]m4_ifset([b4_parse_param], [,
! 759: b4_parse_param]))[
! 760: {
! 761: int yynrhs = yyr2[yyrule];
! 762: int yyi;
! 763: unsigned long int yylno = yyrline[yyrule];
! 764: YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
! 765: yyrule - 1, yylno);
! 766: /* The symbols being reduced. */
! 767: for (yyi = 0; yyi < yynrhs; yyi++)
! 768: {
! 769: YYFPRINTF (stderr, " $%d = ", yyi + 1);
! 770: yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
! 771: &]b4_rhs_value(yynrhs, yyi + 1)[
! 772: ]b4_locations_if([, &]b4_rhs_location(yynrhs, yyi + 1))[]dnl
! 773: b4_user_args[);
! 774: YYFPRINTF (stderr, "\n");
! 775: }
! 776: }
! 777:
! 778: # define YY_REDUCE_PRINT(Rule) \
! 779: do { \
! 780: if (yydebug) \
! 781: yy_reduce_print (yyvsp, ]b4_locations_if([yylsp, ])[Rule]b4_user_args[); \
! 782: } while (YYID (0))
! 783:
! 784: /* Nonzero means print parse trace. It is left uninitialized so that
! 785: multiple parsers can coexist. */
! 786: int yydebug;
! 787: #else /* !YYDEBUG */
! 788: # define YYDPRINTF(Args)
! 789: # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
! 790: # define YY_STACK_PRINT(Bottom, Top)
! 791: # define YY_REDUCE_PRINT(Rule)
! 792: #endif /* !YYDEBUG */
! 793:
! 794:
! 795: /* YYINITDEPTH -- initial size of the parser's stacks. */
! 796: #ifndef YYINITDEPTH
! 797: # define YYINITDEPTH ]b4_stack_depth_init[
! 798: #endif
! 799:
! 800: /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
! 801: if the built-in stack extension method is used).
! 802:
! 803: Do not make this value too large; the results are undefined if
! 804: YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
! 805: evaluated with infinite-precision integer arithmetic. */
! 806:
! 807: #ifndef YYMAXDEPTH
! 808: # define YYMAXDEPTH ]b4_stack_depth_max[
! 809: #endif
! 810:
! 811:
! 812:
! 813: #if YYERROR_VERBOSE
! 814:
! 815: # ifndef yystrlen
! 816: # if defined __GLIBC__ && defined _STRING_H
! 817: # define yystrlen strlen
! 818: # else
! 819: /* Return the length of YYSTR. */
! 820: ]b4_c_function_def([yystrlen], [static YYSIZE_T],
! 821: [[const char *yystr], [yystr]])[
! 822: {
! 823: YYSIZE_T yylen;
! 824: for (yylen = 0; yystr[yylen]; yylen++)
! 825: continue;
! 826: return yylen;
! 827: }
! 828: # endif
! 829: # endif
! 830:
! 831: # ifndef yystpcpy
! 832: # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
! 833: # define yystpcpy stpcpy
! 834: # else
! 835: /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
! 836: YYDEST. */
! 837: ]b4_c_function_def([yystpcpy], [static char *],
! 838: [[char *yydest], [yydest]], [[const char *yysrc], [yysrc]])[
! 839: {
! 840: char *yyd = yydest;
! 841: const char *yys = yysrc;
! 842:
! 843: while ((*yyd++ = *yys++) != '\0')
! 844: continue;
! 845:
! 846: return yyd - 1;
! 847: }
! 848: # endif
! 849: # endif
! 850:
! 851: # ifndef yytnamerr
! 852: /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
! 853: quotes and backslashes, so that it's suitable for yyerror. The
! 854: heuristic is that double-quoting is unnecessary unless the string
! 855: contains an apostrophe, a comma, or backslash (other than
! 856: backslash-backslash). YYSTR is taken from yytname. If YYRES is
! 857: null, do not copy; instead, return the length of what the result
! 858: would have been. */
! 859: static YYSIZE_T
! 860: yytnamerr (char *yyres, const char *yystr)
! 861: {
! 862: if (*yystr == '"')
! 863: {
! 864: YYSIZE_T yyn = 0;
! 865: char const *yyp = yystr;
! 866:
! 867: for (;;)
! 868: switch (*++yyp)
! 869: {
! 870: case '\'':
! 871: case ',':
! 872: goto do_not_strip_quotes;
! 873:
! 874: case '\\':
! 875: if (*++yyp != '\\')
! 876: goto do_not_strip_quotes;
! 877: /* Fall through. */
! 878: default:
! 879: if (yyres)
! 880: yyres[yyn] = *yyp;
! 881: yyn++;
! 882: break;
! 883:
! 884: case '"':
! 885: if (yyres)
! 886: yyres[yyn] = '\0';
! 887: return yyn;
! 888: }
! 889: do_not_strip_quotes: ;
! 890: }
! 891:
! 892: if (! yyres)
! 893: return yystrlen (yystr);
! 894:
! 895: return yystpcpy (yyres, yystr) - yyres;
! 896: }
! 897: # endif
! 898:
! 899: /* Copy into YYRESULT an error message about the unexpected token
! 900: YYCHAR while in state YYSTATE. Return the number of bytes copied,
! 901: including the terminating null byte. If YYRESULT is null, do not
! 902: copy anything; just return the number of bytes that would be
! 903: copied. As a special case, return 0 if an ordinary "syntax error"
! 904: message will do. Return YYSIZE_MAXIMUM if overflow occurs during
! 905: size calculation. */
! 906: static YYSIZE_T
! 907: yysyntax_error (char *yyresult, int yystate, int yychar)
! 908: {
! 909: int yyn = yypact[yystate];
! 910:
! 911: if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
! 912: return 0;
! 913: else
! 914: {
! 915: int yytype = YYTRANSLATE (yychar);
! 916: YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
! 917: YYSIZE_T yysize = yysize0;
! 918: YYSIZE_T yysize1;
! 919: int yysize_overflow = 0;
! 920: enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
! 921: char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
! 922: int yyx;
! 923:
! 924: # if 0
! 925: /* This is so xgettext sees the translatable formats that are
! 926: constructed on the fly. */
! 927: YY_("syntax error, unexpected %s");
! 928: YY_("syntax error, unexpected %s, expecting %s");
! 929: YY_("syntax error, unexpected %s, expecting %s or %s");
! 930: YY_("syntax error, unexpected %s, expecting %s or %s or %s");
! 931: YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
! 932: # endif
! 933: char *yyfmt;
! 934: char const *yyf;
! 935: static char const yyunexpected[] = "syntax error, unexpected %s";
! 936: static char const yyexpecting[] = ", expecting %s";
! 937: static char const yyor[] = " or %s";
! 938: char yyformat[sizeof yyunexpected
! 939: + sizeof yyexpecting - 1
! 940: + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
! 941: * (sizeof yyor - 1))];
! 942: char const *yyprefix = yyexpecting;
! 943:
! 944: /* Start YYX at -YYN if negative to avoid negative indexes in
! 945: YYCHECK. */
! 946: int yyxbegin = yyn < 0 ? -yyn : 0;
! 947:
! 948: /* Stay within bounds of both yycheck and yytname. */
! 949: int yychecklim = YYLAST - yyn + 1;
! 950: int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
! 951: int yycount = 1;
! 952:
! 953: yyarg[0] = yytname[yytype];
! 954: yyfmt = yystpcpy (yyformat, yyunexpected);
! 955:
! 956: for (yyx = yyxbegin; yyx < yyxend; ++yyx)
! 957: if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
! 958: {
! 959: if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
! 960: {
! 961: yycount = 1;
! 962: yysize = yysize0;
! 963: yyformat[sizeof yyunexpected - 1] = '\0';
! 964: break;
! 965: }
! 966: yyarg[yycount++] = yytname[yyx];
! 967: yysize1 = yysize + yytnamerr (0, yytname[yyx]);
! 968: yysize_overflow |= (yysize1 < yysize);
! 969: yysize = yysize1;
! 970: yyfmt = yystpcpy (yyfmt, yyprefix);
! 971: yyprefix = yyor;
! 972: }
! 973:
! 974: yyf = YY_(yyformat);
! 975: yysize1 = yysize + yystrlen (yyf);
! 976: yysize_overflow |= (yysize1 < yysize);
! 977: yysize = yysize1;
! 978:
! 979: if (yysize_overflow)
! 980: return YYSIZE_MAXIMUM;
! 981:
! 982: if (yyresult)
! 983: {
! 984: /* Avoid sprintf, as that infringes on the user's name space.
! 985: Don't have undefined behavior even if the translation
! 986: produced a string with the wrong number of "%s"s. */
! 987: char *yyp = yyresult;
! 988: int yyi = 0;
! 989: while ((*yyp = *yyf) != '\0')
! 990: {
! 991: if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
! 992: {
! 993: yyp += yytnamerr (yyp, yyarg[yyi++]);
! 994: yyf += 2;
! 995: }
! 996: else
! 997: {
! 998: yyp++;
! 999: yyf++;
! 1000: }
! 1001: }
! 1002: }
! 1003: return yysize;
! 1004: }
! 1005: }
! 1006: #endif /* YYERROR_VERBOSE */
! 1007:
! 1008:
! 1009: ]b4_yydestruct_generate([b4_c_function_def])[
! 1010:
! 1011: ]b4_push_if([],
! 1012: [[/* Prevent warnings from -Wmissing-prototypes. */
! 1013: #ifdef YYPARSE_PARAM
! 1014: ]b4_c_function_decl([yyparse], [int],
! 1015: [[void *YYPARSE_PARAM], [YYPARSE_PARAM]])[
! 1016: #else /* ! YYPARSE_PARAM */
! 1017: ]b4_c_function_decl([yyparse], [int], b4_parse_param)[
! 1018: #endif /* ! YYPARSE_PARAM */]])
! 1019:
! 1020: m4_divert_push([KILL])# ======================== M4 code.
! 1021: # b4_declare_scanner_communication_variables
! 1022: # ------------------------------------------
! 1023: # Declare the variables that are global, or local to YYPARSE if
! 1024: # pure-parser.
! 1025: m4_define([b4_declare_scanner_communication_variables],
! 1026: [[/* The lookahead symbol. */
! 1027: int yychar;
! 1028:
! 1029: /* The semantic value of the lookahead symbol. */
! 1030: YYSTYPE yylval;
! 1031: ]b4_locations_if([[
! 1032: /* Location data for the lookahead symbol. */
! 1033: YYLTYPE yylloc;
! 1034: ]])b4_pure_if([], [[
! 1035: /* Number of syntax errors so far. */
! 1036: int yynerrs;
! 1037: ]])])
! 1038:
! 1039: # b4_declare_parser_state_variables
! 1040: # ---------------------------------
! 1041: # Declare all the variables that are needed to maintain the parser state
! 1042: # between calls to yypush_parse.
! 1043: m4_define([b4_declare_parser_state_variables],
! 1044: [b4_pure_if([[ /* Number of syntax errors so far. */
! 1045: int yynerrs;
! 1046: ]])[
! 1047: int yystate;
! 1048: /* Number of tokens to shift before error messages enabled. */
! 1049: int yyerrstatus;
! 1050:
! 1051: /* The stacks and their tools:
! 1052: `yyss': related to states.
! 1053: `yyvs': related to semantic values.]b4_locations_if([[
! 1054: `yyls': related to locations.]])[
! 1055:
! 1056: Refer to the stacks thru separate pointers, to allow yyoverflow
! 1057: to reallocate them elsewhere. */
! 1058:
! 1059: /* The state stack. */
! 1060: yytype_int16 yyssa[YYINITDEPTH];
! 1061: yytype_int16 *yyss;
! 1062: yytype_int16 *yyssp;
! 1063:
! 1064: /* The semantic value stack. */
! 1065: YYSTYPE yyvsa[YYINITDEPTH];
! 1066: YYSTYPE *yyvs;
! 1067: YYSTYPE *yyvsp;
! 1068: ]b4_locations_if([[
! 1069: /* The location stack. */
! 1070: YYLTYPE yylsa[YYINITDEPTH];
! 1071: YYLTYPE *yyls;
! 1072: YYLTYPE *yylsp;
! 1073:
! 1074: /* The locations where the error started and ended. */
! 1075: YYLTYPE yyerror_range[2];
! 1076: ]])[
! 1077: YYSIZE_T yystacksize;
! 1078: ]])
! 1079:
! 1080: m4_divert_pop([KILL])dnl# ====================== End of M4 code.
! 1081:
! 1082: b4_pure_if([], [b4_declare_scanner_communication_variables])
! 1083:
! 1084: b4_push_if(
! 1085: [[struct yypstate
! 1086: {
! 1087: ]b4_declare_parser_state_variables[
! 1088: /* Used to determine if this is the first time this instance has
! 1089: been used. */
! 1090: int yynew;
! 1091: };]b4_pure_if([], [[
! 1092:
! 1093: static char yypstate_allocated = 0;]])b4_pull_if([
! 1094:
! 1095: b4_c_function_def([[yyparse]], [[int]], b4_parse_param)[
! 1096: {
! 1097: return yypull_parse (0]m4_ifset([b4_parse_param],
! 1098: [[, ]b4_c_args(b4_parse_param)])[);
! 1099: }
! 1100:
! 1101: ]b4_c_function_def([[yypull_parse]], [[int]],
! 1102: [[[yypstate *yyps]], [[yyps]]]m4_ifset([b4_parse_param], [,
! 1103: b4_parse_param]))[
! 1104: {
! 1105: int yystatus;
! 1106: yypstate *yyps_local;]b4_pure_if([[
! 1107: int yychar;
! 1108: YYSTYPE yylval;]b4_locations_if([[
! 1109: YYLTYPE yylloc;]])])[
! 1110: if (yyps == 0)
! 1111: {
! 1112: yyps_local = yypstate_new ();
! 1113: if (!yyps_local)
! 1114: {]b4_pure_if([[
! 1115: yyerror (]b4_yyerror_args[YY_("memory exhausted"));]], [[
! 1116: if (!yypstate_allocated)
! 1117: yyerror (]b4_yyerror_args[YY_("memory exhausted"));]])[
! 1118: return 2;
! 1119: }
! 1120: }
! 1121: else
! 1122: yyps_local = yyps;
! 1123: do {
! 1124: yychar = YYLEX;
! 1125: yystatus =
! 1126: yypush_parse (yyps_local]b4_pure_if([[, yychar, &yylval]b4_locations_if([[, &yylloc]])])m4_ifset([b4_parse_param], [, b4_c_args(b4_parse_param)])[);
! 1127: } while (yystatus == YYPUSH_MORE);
! 1128: if (yyps == 0)
! 1129: yypstate_delete (yyps_local);
! 1130: return yystatus;
! 1131: }]])[
! 1132:
! 1133: /* Initialize the parser data structure. */
! 1134: ]b4_c_function_def([[yypstate_new]], [[yypstate *]])[
! 1135: {
! 1136: yypstate *yyps;]b4_pure_if([], [[
! 1137: if (yypstate_allocated)
! 1138: return 0;]])[
! 1139: yyps = (yypstate *) malloc (sizeof *yyps);
! 1140: if (!yyps)
! 1141: return 0;
! 1142: yyps->yynew = 1;]b4_pure_if([], [[
! 1143: yypstate_allocated = 1;]])[
! 1144: return yyps;
! 1145: }
! 1146:
! 1147: ]b4_c_function_def([[yypstate_delete]], [[void]],
! 1148: [[[yypstate *yyps]], [[yyps]]])[
! 1149: {
! 1150: #ifndef yyoverflow
! 1151: /* If the stack was reallocated but the parse did not complete, then the
! 1152: stack still needs to be freed. */
! 1153: if (!yyps->yynew && yyps->yyss != yyps->yyssa)
! 1154: YYSTACK_FREE (yyps->yyss);
! 1155: #endif
! 1156: free (yyps);]b4_pure_if([], [[
! 1157: yypstate_allocated = 0;]])[
! 1158: }
! 1159:
! 1160: ]b4_pure_if([[#define ]b4_prefix[nerrs yyps->]b4_prefix[nerrs
! 1161: ]])[#define yystate yyps->yystate
! 1162: #define yyerrstatus yyps->yyerrstatus
! 1163: #define yyssa yyps->yyssa
! 1164: #define yyss yyps->yyss
! 1165: #define yyssp yyps->yyssp
! 1166: #define yyvsa yyps->yyvsa
! 1167: #define yyvs yyps->yyvs
! 1168: #define yyvsp yyps->yyvsp
! 1169: ]b4_locations_if([[#define yylsa yyps->yylsa
! 1170: #define yyls yyps->yyls
! 1171: #define yylsp yyps->yylsp
! 1172: #define yyerror_range yyps->yyerror_range
! 1173: ]])[#define yystacksize yyps->yystacksize
! 1174: ]])[
! 1175: /*-------------------------.
! 1176: | yyparse or yypush_parse. |
! 1177: `-------------------------*/
! 1178: ]b4_push_if([
! 1179: b4_c_function_def([[yypush_parse]], [[int]],
! 1180: [[[yypstate *yyps]], [[yyps]]]b4_pure_if([,
! 1181: [[[int yypushed_char]], [[yypushed_char]]],
! 1182: [[[YYSTYPE const *yypushed_val]], [[yypushed_val]]]b4_locations_if([,
! 1183: [[[YYLTYPE const *yypushed_loc]], [[yypushed_loc]]]])])m4_ifset([b4_parse_param], [,
! 1184: b4_parse_param]))], [
! 1185: #ifdef YYPARSE_PARAM
! 1186: b4_c_function_def([yyparse], [int], [[void *YYPARSE_PARAM], [YYPARSE_PARAM]])
! 1187: #else /* ! YYPARSE_PARAM */
! 1188: b4_c_function_def([yyparse], [int], b4_parse_param)
! 1189: #endif])[
! 1190: {
! 1191: ]b4_pure_if([b4_declare_scanner_communication_variables])
! 1192: b4_push_if([b4_pure_if([], [[ int yypushed_char = yychar;
! 1193: YYSTYPE yypushed_val = yylval;
! 1194: ]b4_locations_if([[YYLTYPE yypushed_loc = yylloc;
! 1195: ]])])],
! 1196: [b4_declare_parser_state_variables])[
! 1197: int yyn;
! 1198: int yyresult;
! 1199: /* Lookahead token as an internal (translated) token number. */
! 1200: int yytoken;
! 1201: /* The variables used to return semantic value and location from the
! 1202: action routines. */
! 1203: YYSTYPE yyval;]b4_locations_if([[
! 1204: YYLTYPE yyloc;]])[
! 1205:
! 1206: #if YYERROR_VERBOSE
! 1207: /* Buffer for error messages, and its allocated size. */
! 1208: char yymsgbuf[128];
! 1209: char *yymsg = yymsgbuf;
! 1210: YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
! 1211: #endif
! 1212:
! 1213: #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)]b4_locations_if([, yylsp -= (N)])[)
! 1214:
! 1215: /* The number of symbols on the RHS of the reduced rule.
! 1216: Keep to zero when no symbol should be popped. */
! 1217: int yylen = 0;]b4_push_if([[
! 1218:
! 1219: if (!yyps->yynew)
! 1220: {
! 1221: yyn = yypact[yystate];
! 1222: goto yyread_pushed_token;
! 1223: }]])[
! 1224:
! 1225: yytoken = 0;
! 1226: yyss = yyssa;
! 1227: yyvs = yyvsa;]b4_locations_if([[
! 1228: yyls = yylsa;]])[
! 1229: yystacksize = YYINITDEPTH;
! 1230:
! 1231: YYDPRINTF ((stderr, "Starting parse\n"));
! 1232:
! 1233: yystate = 0;
! 1234: yyerrstatus = 0;
! 1235: yynerrs = 0;
! 1236: yychar = YYEMPTY; /* Cause a token to be read. */
! 1237:
! 1238: /* Initialize stack pointers.
! 1239: Waste one element of value and location stack
! 1240: so that they stay on the same level as the state stack.
! 1241: The wasted elements are never initialized. */
! 1242: yyssp = yyss;
! 1243: yyvsp = yyvs;]b4_locations_if([[
! 1244: yylsp = yyls;
! 1245:
! 1246: #if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
! 1247: /* Initialize the default location before parsing starts. */
! 1248: yylloc.first_line = yylloc.last_line = ]b4_location_initial_line[;
! 1249: yylloc.first_column = yylloc.last_column = ]b4_location_initial_column[;
! 1250: #endif]])
! 1251: m4_ifdef([b4_initial_action],[
! 1252: m4_pushdef([b4_at_dollar], [m4_define([b4_at_dollar_used])yylloc])dnl
! 1253: m4_pushdef([b4_dollar_dollar], [m4_define([b4_dollar_dollar_used])yylval])dnl
! 1254: /* User initialization code. */
! 1255: b4_user_initial_action
! 1256: m4_popdef([b4_dollar_dollar])dnl
! 1257: m4_popdef([b4_at_dollar])])dnl
! 1258: m4_ifdef([b4_dollar_dollar_used],[[ yyvsp[0] = yylval;
! 1259: ]])dnl
! 1260: m4_ifdef([b4_at_dollar_used], [[ yylsp[0] = yylloc;
! 1261: ]])[
! 1262: goto yysetstate;
! 1263:
! 1264: /*------------------------------------------------------------.
! 1265: | yynewstate -- Push a new state, which is found in yystate. |
! 1266: `------------------------------------------------------------*/
! 1267: yynewstate:
! 1268: /* In all cases, when you get here, the value and location stacks
! 1269: have just been pushed. So pushing a state here evens the stacks. */
! 1270: yyssp++;
! 1271:
! 1272: yysetstate:
! 1273: *yyssp = yystate;
! 1274:
! 1275: if (yyss + yystacksize - 1 <= yyssp)
! 1276: {
! 1277: /* Get the current used size of the three stacks, in elements. */
! 1278: YYSIZE_T yysize = yyssp - yyss + 1;
! 1279:
! 1280: #ifdef yyoverflow
! 1281: {
! 1282: /* Give user a chance to reallocate the stack. Use copies of
! 1283: these so that the &'s don't force the real ones into
! 1284: memory. */
! 1285: YYSTYPE *yyvs1 = yyvs;
! 1286: yytype_int16 *yyss1 = yyss;]b4_locations_if([
! 1287: YYLTYPE *yyls1 = yyls;])[
! 1288:
! 1289: /* Each stack pointer address is followed by the size of the
! 1290: data in use in that stack, in bytes. This used to be a
! 1291: conditional around just the two extra args, but that might
! 1292: be undefined if yyoverflow is a macro. */
! 1293: yyoverflow (YY_("memory exhausted"),
! 1294: &yyss1, yysize * sizeof (*yyssp),
! 1295: &yyvs1, yysize * sizeof (*yyvsp),]b4_locations_if([
! 1296: &yyls1, yysize * sizeof (*yylsp),])[
! 1297: &yystacksize);
! 1298: ]b4_locations_if([
! 1299: yyls = yyls1;])[
! 1300: yyss = yyss1;
! 1301: yyvs = yyvs1;
! 1302: }
! 1303: #else /* no yyoverflow */
! 1304: # ifndef YYSTACK_RELOCATE
! 1305: goto yyexhaustedlab;
! 1306: # else
! 1307: /* Extend the stack our own way. */
! 1308: if (YYMAXDEPTH <= yystacksize)
! 1309: goto yyexhaustedlab;
! 1310: yystacksize *= 2;
! 1311: if (YYMAXDEPTH < yystacksize)
! 1312: yystacksize = YYMAXDEPTH;
! 1313:
! 1314: {
! 1315: yytype_int16 *yyss1 = yyss;
! 1316: union yyalloc *yyptr =
! 1317: (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
! 1318: if (! yyptr)
! 1319: goto yyexhaustedlab;
! 1320: YYSTACK_RELOCATE (yyss_alloc, yyss);
! 1321: YYSTACK_RELOCATE (yyvs_alloc, yyvs);]b4_locations_if([
! 1322: YYSTACK_RELOCATE (yyls_alloc, yyls);])[
! 1323: # undef YYSTACK_RELOCATE
! 1324: if (yyss1 != yyssa)
! 1325: YYSTACK_FREE (yyss1);
! 1326: }
! 1327: # endif
! 1328: #endif /* no yyoverflow */
! 1329:
! 1330: yyssp = yyss + yysize - 1;
! 1331: yyvsp = yyvs + yysize - 1;]b4_locations_if([
! 1332: yylsp = yyls + yysize - 1;])[
! 1333:
! 1334: YYDPRINTF ((stderr, "Stack size increased to %lu\n",
! 1335: (unsigned long int) yystacksize));
! 1336:
! 1337: if (yyss + yystacksize - 1 <= yyssp)
! 1338: YYABORT;
! 1339: }
! 1340:
! 1341: YYDPRINTF ((stderr, "Entering state %d\n", yystate));
! 1342:
! 1343: if (yystate == YYFINAL)
! 1344: YYACCEPT;
! 1345:
! 1346: goto yybackup;
! 1347:
! 1348: /*-----------.
! 1349: | yybackup. |
! 1350: `-----------*/
! 1351: yybackup:
! 1352:
! 1353: /* Do appropriate processing given the current state. Read a
! 1354: lookahead token if we need one and don't already have one. */
! 1355:
! 1356: /* First try to decide what to do without reference to lookahead token. */
! 1357: yyn = yypact[yystate];
! 1358: if (yyn == YYPACT_NINF)
! 1359: goto yydefault;
! 1360:
! 1361: /* Not known => get a lookahead token if don't already have one. */
! 1362:
! 1363: /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
! 1364: if (yychar == YYEMPTY)
! 1365: {]b4_push_if([[
! 1366: if (!yyps->yynew)
! 1367: {]b4_use_push_for_pull_if([], [[
! 1368: YYDPRINTF ((stderr, "Return for a new token:\n"));]])[
! 1369: yyresult = YYPUSH_MORE;
! 1370: goto yypushreturn;
! 1371: }
! 1372: yyps->yynew = 0;]b4_pure_if([], [[
! 1373: /* Restoring the pushed token is only necessary for the first
! 1374: yypush_parse invocation since subsequent invocations don't overwrite
! 1375: it before jumping to yyread_pushed_token. */
! 1376: yychar = yypushed_char;
! 1377: yylval = yypushed_val;]b4_locations_if([[
! 1378: yylloc = yypushed_loc;]])])[
! 1379: yyread_pushed_token:]])[
! 1380: YYDPRINTF ((stderr, "Reading a token: "));]b4_push_if([b4_pure_if([[
! 1381: yychar = yypushed_char;
! 1382: if (yypushed_val)
! 1383: yylval = *yypushed_val;]b4_locations_if([[
! 1384: if (yypushed_loc)
! 1385: yylloc = *yypushed_loc;]])])], [[
! 1386: yychar = YYLEX;]])[
! 1387: }
! 1388:
! 1389: if (yychar <= YYEOF)
! 1390: {
! 1391: yychar = yytoken = YYEOF;
! 1392: YYDPRINTF ((stderr, "Now at end of input.\n"));
! 1393: }
! 1394: else
! 1395: {
! 1396: yytoken = YYTRANSLATE (yychar);
! 1397: YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
! 1398: }
! 1399:
! 1400: /* If the proper action on seeing token YYTOKEN is to reduce or to
! 1401: detect an error, take that action. */
! 1402: yyn += yytoken;
! 1403: if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
! 1404: goto yydefault;
! 1405: yyn = yytable[yyn];
! 1406: if (yyn <= 0)
! 1407: {
! 1408: if (yyn == 0 || yyn == YYTABLE_NINF)
! 1409: goto yyerrlab;
! 1410: yyn = -yyn;
! 1411: goto yyreduce;
! 1412: }
! 1413:
! 1414: /* Count tokens shifted since error; after three, turn off error
! 1415: status. */
! 1416: if (yyerrstatus)
! 1417: yyerrstatus--;
! 1418:
! 1419: /* Shift the lookahead token. */
! 1420: YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
! 1421:
! 1422: /* Discard the shifted token. */
! 1423: yychar = YYEMPTY;
! 1424:
! 1425: yystate = yyn;
! 1426: *++yyvsp = yylval;
! 1427: ]b4_locations_if([ *++yylsp = yylloc;])[
! 1428: goto yynewstate;
! 1429:
! 1430:
! 1431: /*-----------------------------------------------------------.
! 1432: | yydefault -- do the default action for the current state. |
! 1433: `-----------------------------------------------------------*/
! 1434: yydefault:
! 1435: yyn = yydefact[yystate];
! 1436: if (yyn == 0)
! 1437: goto yyerrlab;
! 1438: goto yyreduce;
! 1439:
! 1440:
! 1441: /*-----------------------------.
! 1442: | yyreduce -- Do a reduction. |
! 1443: `-----------------------------*/
! 1444: yyreduce:
! 1445: /* yyn is the number of a rule to reduce with. */
! 1446: yylen = yyr2[yyn];
! 1447:
! 1448: /* If YYLEN is nonzero, implement the default value of the action:
! 1449: `$$ = $1'.
! 1450:
! 1451: Otherwise, the following line sets YYVAL to garbage.
! 1452: This behavior is undocumented and Bison
! 1453: users should not rely upon it. Assigning to YYVAL
! 1454: unconditionally makes the parser a bit smaller, and it avoids a
! 1455: GCC warning that YYVAL may be used uninitialized. */
! 1456: yyval = yyvsp[1-yylen];
! 1457:
! 1458: ]b4_locations_if(
! 1459: [[ /* Default location. */
! 1460: YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);]])[
! 1461: YY_REDUCE_PRINT (yyn);
! 1462: switch (yyn)
! 1463: {
! 1464: ]b4_user_actions[
! 1465: default: break;
! 1466: }
! 1467: YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
! 1468:
! 1469: YYPOPSTACK (yylen);
! 1470: yylen = 0;
! 1471: YY_STACK_PRINT (yyss, yyssp);
! 1472:
! 1473: *++yyvsp = yyval;]b4_locations_if([
! 1474: *++yylsp = yyloc;])[
! 1475:
! 1476: /* Now `shift' the result of the reduction. Determine what state
! 1477: that goes to, based on the state we popped back to and the rule
! 1478: number reduced by. */
! 1479:
! 1480: yyn = yyr1[yyn];
! 1481:
! 1482: yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
! 1483: if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
! 1484: yystate = yytable[yystate];
! 1485: else
! 1486: yystate = yydefgoto[yyn - YYNTOKENS];
! 1487:
! 1488: goto yynewstate;
! 1489:
! 1490:
! 1491: /*------------------------------------.
! 1492: | yyerrlab -- here on detecting error |
! 1493: `------------------------------------*/
! 1494: yyerrlab:
! 1495: /* If not already recovering from an error, report this error. */
! 1496: if (!yyerrstatus)
! 1497: {
! 1498: ++yynerrs;
! 1499: #if ! YYERROR_VERBOSE
! 1500: yyerror (]b4_yyerror_args[YY_("syntax error"));
! 1501: #else
! 1502: {
! 1503: YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
! 1504: if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
! 1505: {
! 1506: YYSIZE_T yyalloc = 2 * yysize;
! 1507: if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
! 1508: yyalloc = YYSTACK_ALLOC_MAXIMUM;
! 1509: if (yymsg != yymsgbuf)
! 1510: YYSTACK_FREE (yymsg);
! 1511: yymsg = (char *) YYSTACK_ALLOC (yyalloc);
! 1512: if (yymsg)
! 1513: yymsg_alloc = yyalloc;
! 1514: else
! 1515: {
! 1516: yymsg = yymsgbuf;
! 1517: yymsg_alloc = sizeof yymsgbuf;
! 1518: }
! 1519: }
! 1520:
! 1521: if (0 < yysize && yysize <= yymsg_alloc)
! 1522: {
! 1523: (void) yysyntax_error (yymsg, yystate, yychar);
! 1524: yyerror (]b4_yyerror_args[yymsg);
! 1525: }
! 1526: else
! 1527: {
! 1528: yyerror (]b4_yyerror_args[YY_("syntax error"));
! 1529: if (yysize != 0)
! 1530: goto yyexhaustedlab;
! 1531: }
! 1532: }
! 1533: #endif
! 1534: }
! 1535:
! 1536: ]b4_locations_if([[ yyerror_range[0] = yylloc;]])[
! 1537:
! 1538: if (yyerrstatus == 3)
! 1539: {
! 1540: /* If just tried and failed to reuse lookahead token after an
! 1541: error, discard it. */
! 1542:
! 1543: if (yychar <= YYEOF)
! 1544: {
! 1545: /* Return failure if at end of input. */
! 1546: if (yychar == YYEOF)
! 1547: YYABORT;
! 1548: }
! 1549: else
! 1550: {
! 1551: yydestruct ("Error: discarding",
! 1552: yytoken, &yylval]b4_locations_if([, &yylloc])[]b4_user_args[);
! 1553: yychar = YYEMPTY;
! 1554: }
! 1555: }
! 1556:
! 1557: /* Else will try to reuse lookahead token after shifting the error
! 1558: token. */
! 1559: goto yyerrlab1;
! 1560:
! 1561:
! 1562: /*---------------------------------------------------.
! 1563: | yyerrorlab -- error raised explicitly by YYERROR. |
! 1564: `---------------------------------------------------*/
! 1565: yyerrorlab:
! 1566:
! 1567: /* Pacify compilers like GCC when the user code never invokes
! 1568: YYERROR and the label yyerrorlab therefore never appears in user
! 1569: code. */
! 1570: if (/*CONSTCOND*/ 0)
! 1571: goto yyerrorlab;
! 1572:
! 1573: ]b4_locations_if([[ yyerror_range[0] = yylsp[1-yylen];
! 1574: ]])[ /* Do not reclaim the symbols of the rule which action triggered
! 1575: this YYERROR. */
! 1576: YYPOPSTACK (yylen);
! 1577: yylen = 0;
! 1578: YY_STACK_PRINT (yyss, yyssp);
! 1579: yystate = *yyssp;
! 1580: goto yyerrlab1;
! 1581:
! 1582:
! 1583: /*-------------------------------------------------------------.
! 1584: | yyerrlab1 -- common code for both syntax error and YYERROR. |
! 1585: `-------------------------------------------------------------*/
! 1586: yyerrlab1:
! 1587: yyerrstatus = 3; /* Each real token shifted decrements this. */
! 1588:
! 1589: for (;;)
! 1590: {
! 1591: yyn = yypact[yystate];
! 1592: if (yyn != YYPACT_NINF)
! 1593: {
! 1594: yyn += YYTERROR;
! 1595: if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
! 1596: {
! 1597: yyn = yytable[yyn];
! 1598: if (0 < yyn)
! 1599: break;
! 1600: }
! 1601: }
! 1602:
! 1603: /* Pop the current state because it cannot handle the error token. */
! 1604: if (yyssp == yyss)
! 1605: YYABORT;
! 1606:
! 1607: ]b4_locations_if([[ yyerror_range[0] = *yylsp;]])[
! 1608: yydestruct ("Error: popping",
! 1609: yystos[yystate], yyvsp]b4_locations_if([, yylsp])[]b4_user_args[);
! 1610: YYPOPSTACK (1);
! 1611: yystate = *yyssp;
! 1612: YY_STACK_PRINT (yyss, yyssp);
! 1613: }
! 1614:
! 1615: *++yyvsp = yylval;
! 1616: ]b4_locations_if([[
! 1617: yyerror_range[1] = yylloc;
! 1618: /* Using YYLLOC is tempting, but would change the location of
! 1619: the lookahead. YYLOC is available though. */
! 1620: YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
! 1621: *++yylsp = yyloc;]])[
! 1622:
! 1623: /* Shift the error token. */
! 1624: YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
! 1625:
! 1626: yystate = yyn;
! 1627: goto yynewstate;
! 1628:
! 1629:
! 1630: /*-------------------------------------.
! 1631: | yyacceptlab -- YYACCEPT comes here. |
! 1632: `-------------------------------------*/
! 1633: yyacceptlab:
! 1634: yyresult = 0;
! 1635: goto yyreturn;
! 1636:
! 1637: /*-----------------------------------.
! 1638: | yyabortlab -- YYABORT comes here. |
! 1639: `-----------------------------------*/
! 1640: yyabortlab:
! 1641: yyresult = 1;
! 1642: goto yyreturn;
! 1643:
! 1644: #if !defined(yyoverflow) || YYERROR_VERBOSE
! 1645: /*-------------------------------------------------.
! 1646: | yyexhaustedlab -- memory exhaustion comes here. |
! 1647: `-------------------------------------------------*/
! 1648: yyexhaustedlab:
! 1649: yyerror (]b4_yyerror_args[YY_("memory exhausted"));
! 1650: yyresult = 2;
! 1651: /* Fall through. */
! 1652: #endif
! 1653:
! 1654: yyreturn:
! 1655: if (yychar != YYEMPTY)
! 1656: yydestruct ("Cleanup: discarding lookahead",
! 1657: yytoken, &yylval]b4_locations_if([, &yylloc])[]b4_user_args[);
! 1658: /* Do not reclaim the symbols of the rule which action triggered
! 1659: this YYABORT or YYACCEPT. */
! 1660: YYPOPSTACK (yylen);
! 1661: YY_STACK_PRINT (yyss, yyssp);
! 1662: while (yyssp != yyss)
! 1663: {
! 1664: yydestruct ("Cleanup: popping",
! 1665: yystos[*yyssp], yyvsp]b4_locations_if([, yylsp])[]b4_user_args[);
! 1666: YYPOPSTACK (1);
! 1667: }
! 1668: #ifndef yyoverflow
! 1669: if (yyss != yyssa)
! 1670: YYSTACK_FREE (yyss);
! 1671: #endif
! 1672: ]b4_push_if([[ yyps->yynew = 1;
! 1673:
! 1674: yypushreturn:
! 1675: ]])[#if YYERROR_VERBOSE
! 1676: if (yymsg != yymsgbuf)
! 1677: YYSTACK_FREE (yymsg);
! 1678: #endif
! 1679: /* Make sure YYID is used. */
! 1680: return YYID (yyresult);
! 1681: }
! 1682:
! 1683:
! 1684: ]b4_epilogue
! 1685: b4_defines_if(
! 1686: [@output(b4_spec_defines_file@)@
! 1687: b4_copyright([Skeleton interface for Bison's Yacc-like parsers in C],
! 1688: [1984, 1989-1990, 2000-2006, 2009-2010])
! 1689:
! 1690: b4_percent_code_get([[requires]])[]dnl
! 1691:
! 1692: b4_token_enums_defines(b4_tokens)
! 1693:
! 1694: [#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
! 1695: ]m4_ifdef([b4_stype],
! 1696: [[typedef union ]b4_union_name[
! 1697: {
! 1698: ]b4_user_stype[
! 1699: } YYSTYPE;
! 1700: # define YYSTYPE_IS_TRIVIAL 1]],
! 1701: [m4_if(b4_tag_seen_flag, 0,
! 1702: [[typedef int YYSTYPE;
! 1703: # define YYSTYPE_IS_TRIVIAL 1]])])[
! 1704: # define yystype YYSTYPE /* obsolescent; will be withdrawn */
! 1705: # define YYSTYPE_IS_DECLARED 1
! 1706: #endif
! 1707:
! 1708: ]b4_pure_if([], [[extern YYSTYPE ]b4_prefix[lval;]])
! 1709:
! 1710: b4_locations_if(
! 1711: [#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
! 1712: typedef struct YYLTYPE
! 1713: {
! 1714: int first_line;
! 1715: int first_column;
! 1716: int last_line;
! 1717: int last_column;
! 1718: } YYLTYPE;
! 1719: # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
! 1720: # define YYLTYPE_IS_DECLARED 1
! 1721: # define YYLTYPE_IS_TRIVIAL 1
! 1722: #endif
! 1723:
! 1724: ]b4_pure_if([], [[extern YYLTYPE ]b4_prefix[lloc;]])
! 1725: )dnl b4_locations_if
! 1726: b4_push_if([[
! 1727: #ifndef YYPUSH_DECLS
! 1728: # define YYPUSH_DECLS
! 1729: struct ]b4_prefix[pstate;
! 1730: typedef struct ]b4_prefix[pstate ]b4_prefix[pstate;
! 1731: enum { YYPUSH_MORE = 4 };
! 1732: ]b4_pull_if([b4_c_function_decl([b4_prefix[parse]], [[int]], b4_parse_param)
! 1733: ])b4_c_function_decl([b4_prefix[push_parse]], [[int]],
! 1734: [[b4_prefix[pstate *yyps]], [[yyps]]]b4_pure_if([,
! 1735: [[[int yypushed_char]], [[yypushed_char]]],
! 1736: [[[YYSTYPE const *yypushed_val]], [[yypushed_val]]]b4_locations_if([,
! 1737: [[[YYLTYPE const *yypushed_loc]], [[yypushed_loc]]]])])m4_ifset([b4_parse_param], [,
! 1738: b4_parse_param]))
! 1739: b4_pull_if([b4_c_function_decl([b4_prefix[pull_parse]], [[int]],
! 1740: [[b4_prefix[pstate *yyps]], [[yyps]]]m4_ifset([b4_parse_param], [,
! 1741: b4_parse_param]))])
! 1742: b4_c_function_decl([b4_prefix[pstate_new]], [b4_prefix[pstate *]],
! 1743: [[[void]], []])
! 1744: b4_c_function_decl([b4_prefix[pstate_delete]], [[void]],
! 1745: [[b4_prefix[pstate *yyps]], [[yyps]]])[
! 1746: #endif
! 1747: ]])
! 1748: b4_percent_code_get([[provides]])[]dnl
! 1749: ])dnl b4_defines_if
! 1750: m4_divert_pop(0)
E-mail: