1 m4_divert(-1) -*- C
-*-
3 # Yacc compatible skeleton for Bison
5 # Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005
6 # Free Software Foundation, Inc.
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 2 of the License, or
11 # (at your option) any later version.
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.
18 # You should have received a copy of the GNU General Public License
19 # along with this program; if not, write to the Free Software
20 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
25 ## ---------------- ##
27 ## ---------------- ##
30 m4_define_default([b4_stack_depth_max
], [10000])
31 m4_define_default([b4_stack_depth_init
], [200])
34 ## ------------------------ ##
35 ## Pure/impure interfaces. ##
36 ## ------------------------ ##
39 # b4_pure_if(IF-TRUE, IF-FALSE)
40 # -----------------------------
41 # Expand IF-TRUE, if %pure-parser and %parse-param, IF-FALSE otherwise.
42 m4_define([b4_Pure_if
],
43 [b4_pure_if([m4_ifset([b4_parse_param
],
50 # Arguments passed to yyerror: user args plus yylloc.
51 m4_define([b4_yyerror_args
],
52 [b4_Pure_if([b4_location_if([&yylloc
, ])])dnl
53 m4_ifset([b4_parse_param
], [b4_c_args(b4_parse_param
), ])])
58 # Accumulate in b4_lex_param all the yylex arguments.
59 # b4_lex_param arrives quoted twice, but we want to keep only one level.
60 m4_define([b4_lex_param
],
61 m4_dquote(b4_pure_if([[[[YYSTYPE
*]], [[&yylval
]]][]dnl
62 b4_location_if([, [[YYLTYPE
*], [&yylloc
]]])m4_ifdef([b4_lex_param
], [, ])])dnl
63 m4_ifdef([b4_lex_param
], b4_lex_param
)))
71 # b4_int_type(MIN, MAX)
72 # ---------------------
73 # Return the smallest int type able to handle numbers ranging from
74 # MIN to MAX (included). We overwrite the version from c.m4 which relies
75 # on "signed char" which is not portable to old K&R compilers.
76 m4_define([b4_int_type
],
77 [m4_if(b4_ints_in($@
, [0], [255]), [1], [unsigned char],
78 b4_ints_in($@
, [-128], [127]), [1], [yysigned_char
],
80 b4_ints_in($@
, [0], [65535]), [1], [unsigned short int],
81 b4_ints_in($@
, [-32768], [32767]), [1], [short int],
83 m4_eval([0 <= $
1]), [1], [unsigned int],
88 ## ----------------- ##
89 ## Semantic Values. ##
90 ## ----------------- ##
93 # b4_lhs_value([TYPE])
94 # --------------------
95 # Expansion of $<TYPE>$.
96 m4_define([b4_lhs_value
],
97 [(yyval
[]m4_ifval([$
1], [.$
1]))])
100 # b4_rhs_value(RULE-LENGTH, NUM, [TYPE])
101 # --------------------------------------
102 # Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
104 m4_define([b4_rhs_value
],
105 [(yyvsp@
{m4_eval([$
2 - $
1])@
}m4_ifval([$
3], [.$
3]))])
116 m4_define([b4_lhs_location
],
120 # b4_rhs_location(RULE-LENGTH, NUM)
121 # ---------------------------------
122 # Expansion of @NUM, where the current rule has RULE-LENGTH symbols
124 m4_define([b4_rhs_location
],
125 [(yylsp@
{m4_eval([$
2 - $
1])@
})])
129 ## --------------------------------------------------------- ##
130 ## Defining symbol actions, e.g., printers and destructors. ##
131 ## --------------------------------------------------------- ##
133 # We do want M4 expansion after # for CPP macros.
136 @output @output_parser_name@
137 b4_copyright([Skeleton parser
for Yacc
-like parsing with Bison
],
138 [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005])[
140 /* As a special exception, when this file is copied by Bison into a
141 Bison output file, you may use that output file without restriction.
142 This special exception was added by the Free Software Foundation
143 in version 1.24 of Bison. */
145 /* Written by Richard Stallman by simplifying the original so called
146 ``semantic'' parser. */
148 /* All symbols defined below should begin with yy or YY, to avoid
149 infringing on user name space. This should be done even for local
150 variables, as they might otherwise be expanded by user macros.
151 There are some unavoidable exceptions within include files to
152 define necessary library symbols; they are noted "INFRINGES ON
153 USER NAME SPACE" below. */
156 m4_if(b4_prefix
[], [yy
], [],
157 [/* Substitute the variable and function 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])])[
167 ]b4_token_defines(b4_tokens
)[
169 /* Copy the first part of user declarations. */
172 /* Enabling traces. */
174 # define YYDEBUG ]b4_debug[
177 /* Enabling verbose error messages. */
178 #ifdef YYERROR_VERBOSE
179 # undef YYERROR_VERBOSE
180 # define YYERROR_VERBOSE 1
182 # define YYERROR_VERBOSE ]b4_error_verbose[
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
197 ]b4_location_if([#if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
198 typedef struct YYLTYPE
205 # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
206 # define YYLTYPE_IS_DECLARED 1
207 # define YYLTYPE_IS_TRIVIAL 1
211 /* Copy the second part of user declarations. */
214 /* Line __line__ of yacc.c. */
215 b4_syncline([@oline@
], [@ofile@
])[
217 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
218 # define YYSIZE_T __SIZE_TYPE__
220 #if ! defined (YYSIZE_T) && defined (size_t)
221 # define YYSIZE_T size_t
223 #if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
224 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
225 # define YYSIZE_T size_t
227 #if ! defined (YYSIZE_T)
228 # define YYSIZE_T unsigned int
231 #if ! defined (yyoverflow) || YYERROR_VERBOSE
233 /* The parser invokes alloca or malloc; define the necessary symbols. */
235 # ifdef YYSTACK_USE_ALLOCA
236 # if YYSTACK_USE_ALLOCA
238 # define YYSTACK_ALLOC __builtin_alloca
240 # define YYSTACK_ALLOC alloca
241 # if defined (__STDC__) || defined (__cplusplus)
242 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
243 # define YYINCLUDED_STDLIB_H
249 # ifdef YYSTACK_ALLOC
250 /* Pacify GCC's `empty if-body' warning. */
251 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
252 # ifndef YYSTACK_ALLOC_MAXIMUM
253 /* The OS might guarantee only one guard page at the bottom of the stack,
254 and a page size can be as small as 4096 bytes. So we cannot safely
255 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
256 to allow for a few compiler-allocated temporary stack slots. */
257 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
260 # define YYSTACK_ALLOC YYMALLOC
261 # define YYSTACK_FREE YYFREE
262 # ifndef YYSTACK_ALLOC_MAXIMUM
263 # define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
266 # define YYMALLOC malloc
267 # if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
268 && (defined (__STDC__) || defined (__cplusplus)))
269 void *malloc (YYSIZE_T
); /* INFRINGES ON USER NAME SPACE */
274 # if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
275 && (defined (__STDC__) || defined (__cplusplus)))
276 void free (void *); /* INFRINGES ON USER NAME SPACE */
280 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
283 #if (! defined (yyoverflow) \
284 && (! defined (__cplusplus) \
285 || (]b4_location_if([[defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL \
286 && ]])[defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
288 /* A type that is properly aligned for any stack member. */
293 ]b4_location_if([ YYLTYPE yyls
;
297 /* The size of the maximum gap between one aligned stack and the next. */
298 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
300 /* The size of an array large to enough to hold all stacks, each with
303 [# define YYSTACK_BYTES(N) \
304 ((N) * (sizeof (short int) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
305 + 2 * YYSTACK_GAP_MAXIMUM)],
306 [# define YYSTACK_BYTES(N) \
307 ((N) * (sizeof (short int) + sizeof (YYSTYPE)) \
308 + YYSTACK_GAP_MAXIMUM)])[
310 /* Copy COUNT objects from FROM to TO. The source and destination do
313 # if defined (__GNUC__) && 1 < __GNUC__
314 # define YYCOPY(To, From, Count) \
315 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
317 # define YYCOPY(To, From, Count) \
321 for (yyi = 0; yyi < (Count); yyi++) \
322 (To)[yyi] = (From)[yyi]; \
328 /* Relocate STACK from its old location to the new one. The
329 local variables YYSIZE and YYSTACKSIZE give the old and new number of
330 elements in the stack, and YYPTR gives the new location of the
331 stack. Advance YYPTR to a properly aligned location for the next
333 # define YYSTACK_RELOCATE(Stack) \
336 YYSIZE_T yynewbytes; \
337 YYCOPY (&yyptr->Stack, Stack, yysize); \
338 Stack = &yyptr->Stack; \
339 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
340 yyptr += yynewbytes / sizeof (*yyptr); \
346 #if defined (__STDC__) || defined (__cplusplus)
347 typedef signed char yysigned_char
;
349 typedef short int yysigned_char
;
352 /* YYFINAL -- State number of the termination state. */
353 #define YYFINAL ]b4_final_state_number[
354 /* YYLAST -- Last index in YYTABLE. */
355 #define YYLAST ]b4_last[
357 /* YYNTOKENS -- Number of terminals. */
358 #define YYNTOKENS ]b4_tokens_number[
359 /* YYNNTS -- Number of nonterminals. */
360 #define YYNNTS ]b4_nterms_number[
361 /* YYNRULES -- Number of rules. */
362 #define YYNRULES ]b4_rules_number[
363 /* YYNRULES -- Number of states. */
364 #define YYNSTATES ]b4_states_number[
366 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
367 #define YYUNDEFTOK ]b4_undef_token_number[
368 #define YYMAXUTOK ]b4_user_token_number_max[
370 #define YYTRANSLATE(YYX) \
371 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
373 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
374 static const ]b4_int_type_for([b4_translate
])[ yytranslate
[] =
380 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
382 static const ]b4_int_type_for([b4_prhs
])[ yyprhs
[] =
387 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
388 static const ]b4_int_type_for([b4_rhs
])[ yyrhs
[] =
393 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
394 static const ]b4_int_type_for([b4_rline
])[ yyrline
[] =
400 #if YYDEBUG || YYERROR_VERBOSE
401 /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
402 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
403 static const char *const yytname
[] =
409 /* INFRINGES ON USER NAME SPACE */
411 # define _(msgid) msgid
415 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
417 static const ]b4_int_type_for([b4_toknum
])[ yytoknum
[] =
423 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
424 static const ]b4_int_type_for([b4_r1
])[ yyr1
[] =
429 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
430 static const ]b4_int_type_for([b4_r2
])[ yyr2
[] =
435 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
436 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
437 means the default is an error. */
438 static const ]b4_int_type_for([b4_defact
])[ yydefact
[] =
443 /* YYDEFGOTO[NTERM-NUM]. */
444 static const ]b4_int_type_for([b4_defgoto
])[ yydefgoto
[] =
449 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
451 #define YYPACT_NINF ]b4_pact_ninf[
452 static const ]b4_int_type_for([b4_pact
])[ yypact
[] =
457 /* YYPGOTO[NTERM-NUM]. */
458 static const ]b4_int_type_for([b4_pgoto
])[ yypgoto
[] =
463 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
464 positive, shift that token. If negative, reduce the rule which
465 number is the opposite. If zero, do what YYDEFACT says.
466 If YYTABLE_NINF, syntax error. */
467 #define YYTABLE_NINF ]b4_table_ninf[
468 static const ]b4_int_type_for([b4_table
])[ yytable
[] =
473 static const ]b4_int_type_for([b4_check
])[ yycheck
[] =
478 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
479 symbol of state STATE-NUM. */
480 static const ]b4_int_type_for([b4_stos
])[ yystos
[] =
485 #define yyerrok (yyerrstatus = 0)
486 #define yyclearin (yychar = YYEMPTY)
490 #define YYACCEPT goto yyacceptlab
491 #define YYABORT goto yyabortlab
492 #define YYERROR goto yyerrorlab
495 /* Like YYERROR except do call yyerror. This remains here temporarily
496 to ease the transition to the new meaning of YYERROR, for GCC.
497 Once GCC version 2 has supplanted version 1, this can go. */
499 #define YYFAIL goto yyerrlab
501 #define YYRECOVERING() (!!yyerrstatus)
503 #define YYBACKUP(Token, Value) \
505 if (yychar == YYEMPTY && yylen == 1) \
509 yytoken = YYTRANSLATE (yychar); \
515 yyerror (]b4_yyerror_args[_("syntax error: cannot back up")); \
522 #define YYERRCODE 256
525 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
526 If N is 0, then set CURRENT to the empty location which ends
527 the previous symbol: RHS[0] (always defined). */
529 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
530 #ifndef YYLLOC_DEFAULT
531 # define YYLLOC_DEFAULT(Current, Rhs, N) \
535 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
536 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
537 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
538 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
542 (Current).first_line = (Current).last_line = \
543 YYRHSLOC (Rhs, 0).last_line; \
544 (Current).first_column = (Current).last_column = \
545 YYRHSLOC (Rhs, 0).last_column; \
551 /* YY_LOCATION_PRINT -- Print the location on the stream.
552 This macro was not mandated originally: define only if we know
553 we won't break user code: when these are the locations we know. */
555 #ifndef YY_LOCATION_PRINT
556 # if YYLTYPE_IS_TRIVIAL
557 # define YY_LOCATION_PRINT(File, Loc) \
558 fprintf (File, "%d.%d-%d.%d", \
559 (Loc).first_line, (Loc).first_column, \
560 (Loc).last_line, (Loc).last_column)
562 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
567 /* YYLEX -- calling `yylex' with the right arguments. */
570 # define YYLEX yylex (]b4_pure_if([&yylval[]b4_location_if([, &yylloc]), ])[YYLEX_PARAM)
572 # define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[
575 /* Enable debugging if requested. */
579 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
580 # define YYFPRINTF fprintf
583 # define YYDPRINTF(Args) \
589 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
593 YYFPRINTF (stderr, "%s ", Title); \
594 yysymprint (stderr, \
595 Type, Value]b4_location_if([, Location])[); \
596 YYFPRINTF (stderr, "\n"); \
600 /*------------------------------------------------------------------.
601 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
603 `------------------------------------------------------------------*/
605 ]b4_c_function_def([yy_stack_print
], [static void],
606 [[short int *bottom
], [bottom
]],
607 [[short int *top
], [top
]])[
609 YYFPRINTF (stderr
, _("Stack now"));
610 for (/* Nothing. */; bottom
<= top
; ++bottom
)
611 YYFPRINTF (stderr
, " %d", *bottom
);
612 YYFPRINTF (stderr
, "\n");
615 # define YY_STACK_PRINT(Bottom, Top) \
618 yy_stack_print ((Bottom), (Top)); \
622 /*------------------------------------------------.
623 | Report that the YYRULE is going to be reduced. |
624 `------------------------------------------------*/
626 ]b4_c_function_def([yy_reduce_print
], [static void],
627 [[int yyrule
], [yyrule
]])[
630 unsigned int yylno
= yyrline
[yyrule
];
631 YYFPRINTF (stderr
, _("Reducing stack by rule %d (line %u), "),
633 /* Print the symbols being reduced, and their result. */
634 for (yyi
= yyprhs
[yyrule
]; 0 <= yyrhs
[yyi
]; yyi
++)
635 YYFPRINTF (stderr
, "%s ", yytname
[yyrhs
[yyi
]]);
636 YYFPRINTF (stderr
, "-> %s\n", yytname
[yyr1
[yyrule
]]);
639 # define YY_REDUCE_PRINT(Rule) \
642 yy_reduce_print (Rule); \
645 /* Nonzero means print parse trace. It is left uninitialized so that
646 multiple parsers can coexist. */
649 # define YYDPRINTF(Args)
650 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
651 # define YY_STACK_PRINT(Bottom, Top)
652 # define YY_REDUCE_PRINT(Rule)
653 #endif /* !YYDEBUG */
656 /* YYINITDEPTH -- initial size of the parser's stacks. */
658 # define YYINITDEPTH ]b4_stack_depth_init[
661 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
662 if the built-in stack extension method is used).
664 Do not make this value too large; the results are undefined if
665 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
666 evaluated with infinite-precision integer arithmetic. */
669 # define YYMAXDEPTH ]b4_stack_depth_max[
677 # if defined (__GLIBC__) && defined (_STRING_H)
678 # define yystrlen strlen
680 /* Return the length of YYSTR. */
682 # if defined (__STDC__) || defined (__cplusplus)
683 yystrlen (const char *yystr
)
689 const char *yys
= yystr
;
691 while (*yys
++ != '\0')
694 return yys
- yystr
- 1;
700 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
701 # define yystpcpy stpcpy
703 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
706 # if defined (__STDC__) || defined (__cplusplus)
707 yystpcpy (char *yydest
, const char *yysrc
)
709 yystpcpy (yydest
, yysrc
)
715 const char *yys
= yysrc
;
717 while ((*yyd
++ = *yys
++) != '\0')
725 #endif /* !YYERROR_VERBOSE */
730 ]b4_yysymprint_generate([b4_c_function_def
])[
731 #endif /* ! YYDEBUG */
732 ]b4_yydestruct_generate([b4_c_function_def
])
735 /* Prevent warnings from -Wmissing-prototypes. */
738 # if defined (__STDC__) || defined (__cplusplus)
739 int yyparse (void *YYPARSE_PARAM
);
743 #else /* ! YYPARSE_PARAM */
744 b4_c_function_decl([yyparse
], [int], b4_parse_param
)
745 #endif /* ! YYPARSE_PARAM */
748 m4_divert_push([KILL
])# ======================== M4 code.
749 # b4_declare_parser_variables
750 # ---------------------------
751 # Declare the variables that are global, or local to YYPARSE if
753 m4_define([b4_declare_parser_variables
],
754 [/* The look-ahead symbol. */
757 /* The semantic value of the look-ahead symbol. */
760 /* Number of syntax errors so far. */
761 int yynerrs
;b4_location_if([
762 /* Location data for the look-ahead symbol. */
765 m4_divert_pop([KILL
])dnl
# ====================== End of M4 code.
768 [b4_declare_parser_variables
])
776 # if defined (__STDC__) || defined (__cplusplus)
777 int yyparse (void *YYPARSE_PARAM
)
779 int yyparse (YYPARSE_PARAM
)
782 #else /* ! YYPARSE_PARAM */
783 b4_c_function_def([yyparse
], [int], b4_parse_param
)
786 ]b4_pure_if([b4_declare_parser_variables
])[
790 /* Number of tokens to shift before error messages enabled. */
792 /* Look-ahead token as an internal (translated) token number. */
795 /* Three stacks and their tools:
796 `yyss': related to states,
797 `yyvs': related to semantic values,
798 `yyls': related to locations.
800 Refer to the stacks thru separate pointers, to allow yyoverflow
801 to reallocate them elsewhere. */
803 /* The state stack. */
804 short int yyssa
[YYINITDEPTH
];
805 short int *yyss
= yyssa
;
808 /* The semantic value stack. */
809 YYSTYPE yyvsa
[YYINITDEPTH
];
810 YYSTYPE
*yyvs
= yyvsa
;
814 [[ /* The location stack. */
815 YYLTYPE yylsa
[YYINITDEPTH
];
816 YYLTYPE
*yyls
= yylsa
;
818 /* The locations where the error started and ended. */
819 YYLTYPE yyerror_range
[2];]])[
821 #define YYPOPSTACK (yyvsp--, yyssp--]b4_location_if([, yylsp--])[)
823 YYSIZE_T yystacksize
= YYINITDEPTH
;
825 /* The variables used to return semantic value and location from the
828 ]b4_location_if([ YYLTYPE yyloc
;])[
830 /* When reducing, the number of symbols on the RHS of the reduced
834 YYDPRINTF ((stderr
, "Starting parse\n"));
839 yychar
= YYEMPTY
; /* Cause a token to be read. */
841 /* Initialize stack pointers.
842 Waste one element of value and location stack
843 so that they stay on the same level as the state stack.
844 The wasted elements are never initialized. */
848 ]b4_location_if([[ yylsp
= yyls
;
849 #if YYLTYPE_IS_TRIVIAL
850 /* Initialize the default location before parsing starts. */
851 yylloc
.first_line
= yylloc
.last_line
= 1;
852 yylloc
.first_column
= yylloc
.last_column
= 0;
855 m4_ifdef([b4_initial_action
], [
856 m4_pushdef([b4_at_dollar
], [yylloc
])dnl
857 m4_pushdef([b4_dollar_dollar
], [yylval
])dnl
858 /* User initialization code. */
860 m4_popdef([b4_dollar_dollar
])dnl
861 m4_popdef([b4_at_dollar
])dnl
862 /* Line __line__ of yacc.c. */
863 b4_syncline([@oline@
], [@ofile@
])])dnl
866 ]b4_location_if([[ yylsp
[0] = yylloc
;
870 /*------------------------------------------------------------.
871 | yynewstate -- Push a new state, which is found in yystate. |
872 `------------------------------------------------------------*/
874 /* In all cases, when you get here, the value and location stacks
875 have just been pushed. so pushing a state here evens the stacks.
882 if (yyss
+ yystacksize
- 1 <= yyssp
)
884 /* Get the current used size of the three stacks, in elements. */
885 YYSIZE_T yysize
= yyssp
- yyss
+ 1;
889 /* Give user a chance to reallocate the stack. Use copies of
890 these so that the &'s don't force the real ones into
892 YYSTYPE
*yyvs1
= yyvs
;
893 short int *yyss1
= yyss
;
894 ]b4_location_if([ YYLTYPE
*yyls1
= yyls
;])[
896 /* Each stack pointer address is followed by the size of the
897 data in use in that stack, in bytes. This used to be a
898 conditional around just the two extra args, but that might
899 be undefined if yyoverflow is a macro. */
900 yyoverflow (_("parser stack overflow"),
901 &yyss1
, yysize
* sizeof (*yyssp
),
902 &yyvs1
, yysize
* sizeof (*yyvsp
),
903 ]b4_location_if([ &yyls1
, yysize
* sizeof (*yylsp
),])[
905 ]b4_location_if([ yyls
= yyls1
;])[
909 #else /* no yyoverflow */
910 # ifndef YYSTACK_RELOCATE
913 /* Extend the stack our own way. */
914 if (YYMAXDEPTH
<= yystacksize
)
917 if (YYMAXDEPTH
< yystacksize
)
918 yystacksize
= YYMAXDEPTH
;
921 short int *yyss1
= yyss
;
922 union yyalloc
*yyptr
=
923 (union yyalloc
*) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize
));
926 YYSTACK_RELOCATE (yyss
);
927 YYSTACK_RELOCATE (yyvs
);
928 ]b4_location_if([ YYSTACK_RELOCATE (yyls
);])[
929 # undef YYSTACK_RELOCATE
931 YYSTACK_FREE (yyss1
);
934 #endif /* no yyoverflow */
936 yyssp
= yyss
+ yysize
- 1;
937 yyvsp
= yyvs
+ yysize
- 1;
938 ]b4_location_if([ yylsp
= yyls
+ yysize
- 1;])[
940 YYDPRINTF ((stderr
, _("Stack size increased to %lu\n"),
941 (unsigned long int) yystacksize
));
943 if (yyss
+ yystacksize
- 1 <= yyssp
)
947 YYDPRINTF ((stderr
, _("Entering state %d\n"), yystate
));
956 /* Do appropriate processing given the current state. */
957 /* Read a look-ahead token if we need one and don't already have one. */
960 /* First try to decide what to do without reference to look-ahead token. */
962 yyn
= yypact
[yystate
];
963 if (yyn
== YYPACT_NINF
)
966 /* Not known => get a look-ahead token if don't already have one. */
968 /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
969 if (yychar
== YYEMPTY
)
971 YYDPRINTF ((stderr
, _("Reading a token: ")));
977 yychar
= yytoken
= YYEOF
;
978 YYDPRINTF ((stderr
, _("Now at end of input.\n")));
982 yytoken
= YYTRANSLATE (yychar
);
983 YY_SYMBOL_PRINT (_("Next token is"), yytoken
, &yylval
, &yylloc
);
986 /* If the proper action on seeing token YYTOKEN is to reduce or to
987 detect an error, take that action. */
989 if (yyn
< 0 || YYLAST
< yyn
|| yycheck
[yyn
] != yytoken
)
994 if (yyn
== 0 || yyn
== YYTABLE_NINF
)
1003 /* Shift the look-ahead token. */
1004 YY_SYMBOL_PRINT (_("Shifting"), yytoken
, &yylval
, &yylloc
);
1006 /* Discard the token being shifted unless it is eof. */
1007 if (yychar
!= YYEOF
)
1011 ]b4_location_if([ *++yylsp
= yylloc
;])[
1013 /* Count tokens shifted since error; after three, turn off error
1022 /*-----------------------------------------------------------.
1023 | yydefault -- do the default action for the current state. |
1024 `-----------------------------------------------------------*/
1026 yyn
= yydefact
[yystate
];
1032 /*-----------------------------.
1033 | yyreduce -- Do a reduction. |
1034 `-----------------------------*/
1036 /* yyn is the number of a rule to reduce with. */
1039 /* If YYLEN is nonzero, implement the default value of the action:
1042 Otherwise, the following line sets YYVAL to garbage.
1043 This behavior is undocumented and Bison
1044 users should not rely upon it. Assigning to YYVAL
1045 unconditionally makes the parser a bit smaller, and it avoids a
1046 GCC warning that YYVAL may be used uninitialized. */
1047 yyval
= yyvsp
[1-yylen
];
1050 [[ /* Default location. */
1051 YYLLOC_DEFAULT (yyloc
, yylsp
- yylen
, yylen
);]])[
1052 YY_REDUCE_PRINT (yyn
);
1059 /* Line __line__ of yacc.c. */
1060 b4_syncline([@oline@
], [@ofile@
])
1064 ]b4_location_if([ yylsp
-= yylen
;])[
1066 YY_STACK_PRINT (yyss
, yyssp
);
1069 ]b4_location_if([ *++yylsp
= yyloc
;])[
1071 /* Now `shift' the result of the reduction. Determine what state
1072 that goes to, based on the state we popped back to and the rule
1073 number reduced by. */
1077 yystate
= yypgoto
[yyn
- YYNTOKENS
] + *yyssp
;
1078 if (0 <= yystate
&& yystate
<= YYLAST
&& yycheck
[yystate
] == *yyssp
)
1079 yystate
= yytable
[yystate
];
1081 yystate
= yydefgoto
[yyn
- YYNTOKENS
];
1086 /*------------------------------------.
1087 | yyerrlab -- here on detecting error |
1088 `------------------------------------*/
1090 /* If not already recovering from an error, report this error. */
1095 yyn
= yypact
[yystate
];
1097 if (YYPACT_NINF
< yyn
&& yyn
< YYLAST
)
1099 int yytype
= YYTRANSLATE (yychar
);
1100 YYSIZE_T yysize0
= yystrlen (yytname
[yytype
]);
1101 YYSIZE_T yysize
= yysize0
;
1103 int yysize_overflow
= 0;
1105 # define YYERROR_VERBOSE_ARGS_MAXIMUM 5
1106 char const *yyarg
[YYERROR_VERBOSE_ARGS_MAXIMUM
];
1110 /* This is so xgettext sees the translatable formats that are
1111 constructed on the fly. */
1112 _("syntax error, unexpected %s");
1113 _("syntax error, unexpected %s, expecting %s");
1114 _("syntax error, unexpected %s, expecting %s or %s");
1115 _("syntax error, unexpected %s, expecting %s or %s or %s");
1116 _("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1120 static char const yyunexpected
[] = "syntax error, unexpected %s";
1121 static char const yyexpecting
[] = ", expecting %s";
1122 static char const yyor
[] = " or %s";
1123 char yyformat
[sizeof yyunexpected
1124 + sizeof yyexpecting
- 1
1125 + ((YYERROR_VERBOSE_ARGS_MAXIMUM
- 2)
1126 * (sizeof yyor
- 1))];
1127 char const *yyprefix
= yyexpecting
;
1129 /* Start YYX at -YYN if negative to avoid negative indexes in
1131 int yyxbegin
= yyn
< 0 ? -yyn
: 0;
1133 /* Stay within bounds of both yycheck and yytname. */
1134 int yychecklim
= YYLAST
- yyn
;
1135 int yyxend
= yychecklim
< YYNTOKENS
? yychecklim
: YYNTOKENS
;
1138 yyarg
[0] = yytname
[yytype
];
1139 yyfmt
= yystpcpy (yyformat
, yyunexpected
);
1141 for (yyx
= yyxbegin
; yyx
< yyxend
; ++yyx
)
1142 if (yycheck
[yyx
+ yyn
] == yyx
&& yyx
!= YYTERROR
)
1144 if (yycount
== YYERROR_VERBOSE_ARGS_MAXIMUM
)
1148 yyformat
[sizeof yyunexpected
- 1] = '\0';
1151 yyarg
[yycount
++] = yytname
[yyx
];
1152 yysize1
= yysize
+ yystrlen (yytname
[yyx
]);
1153 yysize_overflow
|= yysize1
< yysize
;
1155 yyfmt
= yystpcpy (yyfmt
, yyprefix
);
1160 yysize1
= yysize
+ yystrlen (yyf
);
1161 yysize_overflow
|= yysize1
< yysize
;
1164 if (!yysize_overflow
&& yysize
<= YYSTACK_ALLOC_MAXIMUM
)
1165 yymsg
= (char *) YYSTACK_ALLOC (yysize
);
1168 /* Avoid sprintf, as that infringes on the user's name space.
1169 Don't have undefined behavior even if the translation
1170 produced a string with the wrong number of "%s"s. */
1173 while ((*yyp
= *yyf
))
1175 if (*yyp
== '%' && yyf
[1] == 's' && yyi
< yycount
)
1177 yyp
= yystpcpy (yyp
, yyarg
[yyi
++]);
1186 yyerror (]b4_yyerror_args
[yymsg
);
1187 YYSTACK_FREE (yymsg
);
1190 yyerror (]b4_yyerror_args
[_("syntax error; also memory exhausted"));
1193 #endif /* YYERROR_VERBOSE */
1194 yyerror (]b4_yyerror_args
[_("syntax error"));
1197 ]b4_location_if([[ yyerror_range
[0] = yylloc
;]])[
1199 if (yyerrstatus
== 3)
1201 /* If just tried and failed to reuse look-ahead token after an
1202 error, discard it. */
1204 if (yychar
<= YYEOF
)
1206 /* If at end of input, pop the error token,
1207 then the rest of the stack, then return failure. */
1208 if (yychar
== YYEOF
)
1213 yydestruct (_("Error: discarding"), yytoken
, &yylval
]b4_location_if([, &yylloc
])[);
1218 /* Else will try to reuse look-ahead token after shifting the error
1223 /*---------------------------------------------------.
1224 | yyerrorlab -- error raised explicitly by YYERROR. |
1225 `---------------------------------------------------*/
1228 /* Pacify compilers like GCC when the user code never invokes
1229 YYERROR and the label yyerrorlab therefore never appears in user
1234 ]b4_location_if([[ yyerror_range
[0] = yylsp
[1-yylen
];
1242 /*-------------------------------------------------------------.
1243 | yyerrlab1 -- common code for both syntax error and YYERROR. |
1244 `-------------------------------------------------------------*/
1246 yyerrstatus
= 3; /* Each real token shifted decrements this. */
1250 yyn
= yypact
[yystate
];
1251 if (yyn
!= YYPACT_NINF
)
1254 if (0 <= yyn
&& yyn
<= YYLAST
&& yycheck
[yyn
] == YYTERROR
)
1262 /* Pop the current state because it cannot handle the error token. */
1266 ]b4_location_if([[ yyerror_range
[0] = *yylsp
;]])[
1267 yydestruct (_("Error: popping"), yystos
[yystate
], yyvsp
]b4_location_if([, yylsp
])[);
1270 YY_STACK_PRINT (yyss
, yyssp
);
1278 yyerror_range
[1] = yylloc
;
1279 /* Using YYLLOC is tempting, but would change the location of
1280 the look-ahead. YYLOC is available though. */
1281 YYLLOC_DEFAULT (yyloc
, yyerror_range
- 1, 2);
1282 *++yylsp
= yyloc
;]])[
1284 /* Shift the error token. */
1285 YY_SYMBOL_PRINT (_("Shifting"), yystos
[yyn
], yyvsp
, yylsp
);
1291 /*-------------------------------------.
1292 | yyacceptlab -- YYACCEPT comes here. |
1293 `-------------------------------------*/
1298 /*-----------------------------------.
1299 | yyabortlab -- YYABORT comes here. |
1300 `-----------------------------------*/
1306 /*----------------------------------------------.
1307 | yyoverflowlab -- parser overflow comes here. |
1308 `----------------------------------------------*/
1310 yyerror (]b4_yyerror_args
[_("parser stack overflow"));
1316 if (yychar
!= YYEOF
&& yychar
!= YYEMPTY
)
1317 yydestruct (_("Error: discarding lookahead"),
1318 yytoken
, &yylval
]b4_location_if([, &yylloc
])[);
1322 ]b4_location_if([[ yyerror_range
[0] = *yylsp
;]])[
1326 yydestruct (_("Error: popping"),
1327 yystos
[*yyssp
], yyvsp
]b4_location_if([, yylsp
])[);
1331 YYSTACK_FREE (yyss
);
1338 m4_if(b4_defines_flag
, 0, [],
1339 [@output @output_header_name@
1340 b4_copyright([Skeleton parser
for Yacc
-like parsing with Bison
],
1341 [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005])
1343 /* As a special exception, when this file is copied by Bison into a
1344 Bison output file, you may use that output file without restriction.
1345 This special exception was added by the Free Software Foundation
1346 in version 1.24 of Bison. */
1348 b4_token_defines(b4_tokens
)
1350 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
1351 m4_ifdef([b4_stype
],
1352 [b4_syncline([b4_stype_line
], [b4_filename
])
1353 typedef union m4_bregexp(b4_stype
, [^{], [YYSTYPE
])b4_stype YYSTYPE
;
1354 /* Line __line__ of yacc.c. */
1355 b4_syncline([@oline@
], [@ofile@
])],
1356 [typedef int YYSTYPE
;])
1357 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
1358 # define YYSTYPE_IS_DECLARED 1
1359 # define YYSTYPE_IS_TRIVIAL 1
1363 [extern YYSTYPE b4_prefix
[]lval
;])
1366 [#if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
1367 typedef struct YYLTYPE
1374 # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
1375 # define YYLTYPE_IS_DECLARED 1
1376 # define YYLTYPE_IS_TRIVIAL 1
1380 [extern YYLTYPE b4_prefix
[]lloc
;])