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., 59 Temple Place, Suite 330, 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])[
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 (yyoverflow) || YYERROR_VERBOSE
223 # define YYMALLOC malloc
226 /* The parser invokes alloca or malloc; define the necessary symbols. */
228 # ifdef YYSTACK_USE_ALLOCA
229 # if YYSTACK_USE_ALLOCA
231 # define YYSTACK_ALLOC __builtin_alloca
233 # define YYSTACK_ALLOC alloca
238 # ifdef YYSTACK_ALLOC
239 /* Pacify GCC's `empty if-body' warning. */
240 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
241 # ifndef YYSTACK_ALLOC_MAXIMUM
242 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
245 # if defined (__STDC__) || defined (__cplusplus)
246 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
247 # define YYSIZE_T size_t
249 # define YYSIZE_T unsigned long int
251 # define YYSTACK_ALLOC YYMALLOC
252 # define YYSTACK_FREE YYFREE
253 # ifndef YYSTACK_ALLOC_MAXIMUM
254 # define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
257 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
260 #if (! defined (yyoverflow) \
261 && (! defined (__cplusplus) \
262 || (]b4_location_if([[defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL \
263 && ]])[defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
265 /* A type that is properly aligned for any stack member. */
270 ]b4_location_if([ YYLTYPE yyls
;
274 /* The size of the maximum gap between one aligned stack and the next. */
275 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
277 /* The size of an array large to enough to hold all stacks, each with
280 [# define YYSTACK_BYTES(N) \
281 ((N) * (sizeof (short int) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
282 + 2 * YYSTACK_GAP_MAXIMUM)],
283 [# define YYSTACK_BYTES(N) \
284 ((N) * (sizeof (short int) + sizeof (YYSTYPE)) \
285 + YYSTACK_GAP_MAXIMUM)])[
287 /* Copy COUNT objects from FROM to TO. The source and destination do
290 # if defined (__GNUC__) && 1 < __GNUC__
291 # define YYCOPY(To, From, Count) \
292 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
294 # define YYCOPY(To, From, Count) \
298 for (yyi = 0; yyi < (Count); yyi++) \
299 (To)[yyi] = (From)[yyi]; \
305 /* Relocate STACK from its old location to the new one. The
306 local variables YYSIZE and YYSTACKSIZE give the old and new number of
307 elements in the stack, and YYPTR gives the new location of the
308 stack. Advance YYPTR to a properly aligned location for the next
310 # define YYSTACK_RELOCATE(Stack) \
313 YYSIZE_T yynewbytes; \
314 YYCOPY (&yyptr->Stack, Stack, yysize); \
315 Stack = &yyptr->Stack; \
316 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
317 yyptr += yynewbytes / sizeof (*yyptr); \
323 #if defined (__STDC__) || defined (__cplusplus)
324 typedef signed char yysigned_char
;
326 typedef short int yysigned_char
;
329 /* YYFINAL -- State number of the termination state. */
330 #define YYFINAL ]b4_final_state_number[
331 /* YYLAST -- Last index in YYTABLE. */
332 #define YYLAST ]b4_last[
334 /* YYNTOKENS -- Number of terminals. */
335 #define YYNTOKENS ]b4_tokens_number[
336 /* YYNNTS -- Number of nonterminals. */
337 #define YYNNTS ]b4_nterms_number[
338 /* YYNRULES -- Number of rules. */
339 #define YYNRULES ]b4_rules_number[
340 /* YYNRULES -- Number of states. */
341 #define YYNSTATES ]b4_states_number[
343 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
344 #define YYUNDEFTOK ]b4_undef_token_number[
345 #define YYMAXUTOK ]b4_user_token_number_max[
347 #define YYTRANSLATE(YYX) \
348 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
350 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
351 static const ]b4_int_type_for([b4_translate
])[ yytranslate
[] =
357 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
359 static const ]b4_int_type_for([b4_prhs
])[ yyprhs
[] =
364 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
365 static const ]b4_int_type_for([b4_rhs
])[ yyrhs
[] =
370 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
371 static const ]b4_int_type_for([b4_rline
])[ yyrline
[] =
377 #if YYDEBUG || YYERROR_VERBOSE
378 /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
379 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
380 static const char *const yytname
[] =
386 /* INFRINGES ON USER NAME SPACE */
388 # define _(msgid) msgid
392 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
394 static const ]b4_int_type_for([b4_toknum
])[ yytoknum
[] =
400 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
401 static const ]b4_int_type_for([b4_r1
])[ yyr1
[] =
406 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
407 static const ]b4_int_type_for([b4_r2
])[ yyr2
[] =
412 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
413 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
414 means the default is an error. */
415 static const ]b4_int_type_for([b4_defact
])[ yydefact
[] =
420 /* YYDEFGOTO[NTERM-NUM]. */
421 static const ]b4_int_type_for([b4_defgoto
])[ yydefgoto
[] =
426 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
428 #define YYPACT_NINF ]b4_pact_ninf[
429 static const ]b4_int_type_for([b4_pact
])[ yypact
[] =
434 /* YYPGOTO[NTERM-NUM]. */
435 static const ]b4_int_type_for([b4_pgoto
])[ yypgoto
[] =
440 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
441 positive, shift that token. If negative, reduce the rule which
442 number is the opposite. If zero, do what YYDEFACT says.
443 If YYTABLE_NINF, syntax error. */
444 #define YYTABLE_NINF ]b4_table_ninf[
445 static const ]b4_int_type_for([b4_table
])[ yytable
[] =
450 static const ]b4_int_type_for([b4_check
])[ yycheck
[] =
455 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
456 symbol of state STATE-NUM. */
457 static const ]b4_int_type_for([b4_stos
])[ yystos
[] =
462 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
463 # define YYSIZE_T __SIZE_TYPE__
465 #if ! defined (YYSIZE_T) && defined (size_t)
466 # define YYSIZE_T size_t
468 #if ! defined (YYSIZE_T)
469 # if defined (__STDC__) || defined (__cplusplus)
470 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
471 # define YYSIZE_T size_t
474 #if ! defined (YYSIZE_T)
475 # define YYSIZE_T unsigned int
478 #define yyerrok (yyerrstatus = 0)
479 #define yyclearin (yychar = YYEMPTY)
483 #define YYACCEPT goto yyacceptlab
484 #define YYABORT goto yyabortlab
485 #define YYERROR goto yyerrorlab
488 /* Like YYERROR except do call yyerror. This remains here temporarily
489 to ease the transition to the new meaning of YYERROR, for GCC.
490 Once GCC version 2 has supplanted version 1, this can go. */
492 #define YYFAIL goto yyerrlab
494 #define YYRECOVERING() (!!yyerrstatus)
496 #define YYBACKUP(Token, Value) \
498 if (yychar == YYEMPTY && yylen == 1) \
502 yytoken = YYTRANSLATE (yychar); \
508 yyerror (]b4_yyerror_args[_("syntax error: cannot back up")); \
515 #define YYERRCODE 256
518 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
519 If N is 0, then set CURRENT to the empty location which ends
520 the previous symbol: RHS[0] (always defined). */
522 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
523 #ifndef YYLLOC_DEFAULT
524 # define YYLLOC_DEFAULT(Current, Rhs, N) \
528 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
529 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
530 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
531 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
535 (Current).first_line = (Current).last_line = \
536 YYRHSLOC (Rhs, 0).last_line; \
537 (Current).first_column = (Current).last_column = \
538 YYRHSLOC (Rhs, 0).last_column; \
544 /* YY_LOCATION_PRINT -- Print the location on the stream.
545 This macro was not mandated originally: define only if we know
546 we won't break user code: when these are the locations we know. */
548 #ifndef YY_LOCATION_PRINT
549 # if YYLTYPE_IS_TRIVIAL
550 # define YY_LOCATION_PRINT(File, Loc) \
551 fprintf (File, "%d.%d-%d.%d", \
552 (Loc).first_line, (Loc).first_column, \
553 (Loc).last_line, (Loc).last_column)
555 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
560 /* YYLEX -- calling `yylex' with the right arguments. */
563 # define YYLEX yylex (]b4_pure_if([&yylval[]b4_location_if([, &yylloc]), ])[YYLEX_PARAM)
565 # define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[
568 /* Enable debugging if requested. */
572 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
573 # define YYFPRINTF fprintf
576 # define YYDPRINTF(Args) \
582 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
586 YYFPRINTF (stderr, "%s ", Title); \
587 yysymprint (stderr, \
588 Type, Value]b4_location_if([, Location])[); \
589 YYFPRINTF (stderr, "\n"); \
593 /*------------------------------------------------------------------.
594 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
596 `------------------------------------------------------------------*/
598 ]b4_c_function_def([yy_stack_print
], [static void],
599 [[short int *bottom
], [bottom
]],
600 [[short int *top
], [top
]])[
602 YYFPRINTF (stderr
, _("Stack now"));
603 for (/* Nothing. */; bottom
<= top
; ++bottom
)
604 YYFPRINTF (stderr
, " %d", *bottom
);
605 YYFPRINTF (stderr
, "\n");
608 # define YY_STACK_PRINT(Bottom, Top) \
611 yy_stack_print ((Bottom), (Top)); \
615 /*------------------------------------------------.
616 | Report that the YYRULE is going to be reduced. |
617 `------------------------------------------------*/
619 ]b4_c_function_def([yy_reduce_print
], [static void],
620 [[int yyrule
], [yyrule
]])[
623 unsigned int yylno
= yyrline
[yyrule
];
624 YYFPRINTF (stderr
, _("Reducing stack by rule %d (line %u), "),
626 /* Print the symbols being reduced, and their result. */
627 for (yyi
= yyprhs
[yyrule
]; 0 <= yyrhs
[yyi
]; yyi
++)
628 YYFPRINTF (stderr
, "%s ", yytname
[yyrhs
[yyi
]]);
629 YYFPRINTF (stderr
, "-> %s\n", yytname
[yyr1
[yyrule
]]);
632 # define YY_REDUCE_PRINT(Rule) \
635 yy_reduce_print (Rule); \
638 /* Nonzero means print parse trace. It is left uninitialized so that
639 multiple parsers can coexist. */
642 # define YYDPRINTF(Args)
643 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
644 # define YY_STACK_PRINT(Bottom, Top)
645 # define YY_REDUCE_PRINT(Rule)
646 #endif /* !YYDEBUG */
649 /* YYINITDEPTH -- initial size of the parser's stacks. */
651 # define YYINITDEPTH ]b4_stack_depth_init[
654 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
655 if the built-in stack extension method is used).
657 Do not make this value too large; the results are undefined if
658 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
659 evaluated with infinite-precision integer arithmetic. */
662 # define YYMAXDEPTH ]b4_stack_depth_max[
670 # if defined (__GLIBC__) && defined (_STRING_H)
671 # define yystrlen strlen
673 /* Return the length of YYSTR. */
675 # if defined (__STDC__) || defined (__cplusplus)
676 yystrlen (const char *yystr
)
682 const char *yys
= yystr
;
684 while (*yys
++ != '\0')
687 return yys
- yystr
- 1;
693 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
694 # define yystpcpy stpcpy
696 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
699 # if defined (__STDC__) || defined (__cplusplus)
700 yystpcpy (char *yydest
, const char *yysrc
)
702 yystpcpy (yydest
, yysrc
)
708 const char *yys
= yysrc
;
710 while ((*yyd
++ = *yys
++) != '\0')
718 #endif /* !YYERROR_VERBOSE */
723 ]b4_yysymprint_generate([b4_c_function_def
])[
724 #endif /* ! YYDEBUG */
725 ]b4_yydestruct_generate([b4_c_function_def
])
728 /* Prevent warnings from -Wmissing-prototypes. */
731 # if defined (__STDC__) || defined (__cplusplus)
732 int yyparse (void *YYPARSE_PARAM
);
736 #else /* ! YYPARSE_PARAM */
737 b4_c_function_decl([yyparse
], [int], b4_parse_param
)
738 #endif /* ! YYPARSE_PARAM */
741 m4_divert_push([KILL
])# ======================== M4 code.
742 # b4_declare_parser_variables
743 # ---------------------------
744 # Declare the variables that are global, or local to YYPARSE if
746 m4_define([b4_declare_parser_variables
],
747 [/* The look-ahead symbol. */
750 /* The semantic value of the look-ahead symbol. */
753 /* Number of syntax errors so far. */
754 int yynerrs
;b4_location_if([
755 /* Location data for the look-ahead symbol. */
758 m4_divert_pop([KILL
])dnl
# ====================== End of M4 code.
761 [b4_declare_parser_variables
])
769 # if defined (__STDC__) || defined (__cplusplus)
770 int yyparse (void *YYPARSE_PARAM
)
772 int yyparse (YYPARSE_PARAM
)
775 #else /* ! YYPARSE_PARAM */
776 b4_c_function_def([yyparse
], [int], b4_parse_param
)
779 ]b4_pure_if([b4_declare_parser_variables
])[
783 /* Number of tokens to shift before error messages enabled. */
785 /* Look-ahead token as an internal (translated) token number. */
788 /* Three stacks and their tools:
789 `yyss': related to states,
790 `yyvs': related to semantic values,
791 `yyls': related to locations.
793 Refer to the stacks thru separate pointers, to allow yyoverflow
794 to reallocate them elsewhere. */
796 /* The state stack. */
797 short int yyssa
[YYINITDEPTH
];
798 short int *yyss
= yyssa
;
801 /* The semantic value stack. */
802 YYSTYPE yyvsa
[YYINITDEPTH
];
803 YYSTYPE
*yyvs
= yyvsa
;
807 [[ /* The location stack. */
808 YYLTYPE yylsa
[YYINITDEPTH
];
809 YYLTYPE
*yyls
= yylsa
;
811 /* The locations where the error started and ended. */
812 YYLTYPE yyerror_range
[2];]])[
814 #define YYPOPSTACK (yyvsp--, yyssp--]b4_location_if([, yylsp--])[)
816 YYSIZE_T yystacksize
= YYINITDEPTH
;
818 /* The variables used to return semantic value and location from the
821 ]b4_location_if([ YYLTYPE yyloc
;])[
823 /* When reducing, the number of symbols on the RHS of the reduced
827 YYDPRINTF ((stderr
, "Starting parse\n"));
832 yychar
= YYEMPTY
; /* Cause a token to be read. */
834 /* Initialize stack pointers.
835 Waste one element of value and location stack
836 so that they stay on the same level as the state stack.
837 The wasted elements are never initialized. */
841 ]b4_location_if([[ yylsp
= yyls
;
842 #if YYLTYPE_IS_TRIVIAL
843 /* Initialize the default location before parsing starts. */
844 yylloc
.first_line
= yylloc
.last_line
= 1;
845 yylloc
.first_column
= yylloc
.last_column
= 0;
848 m4_ifdef([b4_initial_action
], [
849 m4_pushdef([b4_at_dollar
], [yylloc
])dnl
850 m4_pushdef([b4_dollar_dollar
], [yylval
])dnl
851 /* User initialization code. */
853 m4_popdef([b4_dollar_dollar
])dnl
854 m4_popdef([b4_at_dollar
])dnl
855 /* Line __line__ of yacc.c. */
856 b4_syncline([@oline@
], [@ofile@
])])dnl
859 ]b4_location_if([[ yylsp
[0] = yylloc
;
863 /*------------------------------------------------------------.
864 | yynewstate -- Push a new state, which is found in yystate. |
865 `------------------------------------------------------------*/
867 /* In all cases, when you get here, the value and location stacks
868 have just been pushed. so pushing a state here evens the stacks.
875 if (yyss
+ yystacksize
- 1 <= yyssp
)
877 /* Get the current used size of the three stacks, in elements. */
878 YYSIZE_T yysize
= yyssp
- yyss
+ 1;
882 /* Give user a chance to reallocate the stack. Use copies of
883 these so that the &'s don't force the real ones into
885 YYSTYPE
*yyvs1
= yyvs
;
886 short int *yyss1
= yyss
;
887 ]b4_location_if([ YYLTYPE
*yyls1
= yyls
;])[
889 /* Each stack pointer address is followed by the size of the
890 data in use in that stack, in bytes. This used to be a
891 conditional around just the two extra args, but that might
892 be undefined if yyoverflow is a macro. */
893 yyoverflow (_("parser stack overflow"),
894 &yyss1
, yysize
* sizeof (*yyssp
),
895 &yyvs1
, yysize
* sizeof (*yyvsp
),
896 ]b4_location_if([ &yyls1
, yysize
* sizeof (*yylsp
),])[
898 ]b4_location_if([ yyls
= yyls1
;])[
902 #else /* no yyoverflow */
903 # ifndef YYSTACK_RELOCATE
906 /* Extend the stack our own way. */
907 if (YYMAXDEPTH
<= yystacksize
)
910 if (YYMAXDEPTH
< yystacksize
)
911 yystacksize
= YYMAXDEPTH
;
914 short int *yyss1
= yyss
;
915 union yyalloc
*yyptr
=
916 (union yyalloc
*) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize
));
919 YYSTACK_RELOCATE (yyss
);
920 YYSTACK_RELOCATE (yyvs
);
921 ]b4_location_if([ YYSTACK_RELOCATE (yyls
);])[
922 # undef YYSTACK_RELOCATE
924 YYSTACK_FREE (yyss1
);
927 #endif /* no yyoverflow */
929 yyssp
= yyss
+ yysize
- 1;
930 yyvsp
= yyvs
+ yysize
- 1;
931 ]b4_location_if([ yylsp
= yyls
+ yysize
- 1;])[
933 YYDPRINTF ((stderr
, _("Stack size increased to %lu\n"),
934 (unsigned long int) yystacksize
));
936 if (yyss
+ yystacksize
- 1 <= yyssp
)
940 YYDPRINTF ((stderr
, _("Entering state %d\n"), yystate
));
949 /* Do appropriate processing given the current state. */
950 /* Read a look-ahead token if we need one and don't already have one. */
953 /* First try to decide what to do without reference to look-ahead token. */
955 yyn
= yypact
[yystate
];
956 if (yyn
== YYPACT_NINF
)
959 /* Not known => get a look-ahead token if don't already have one. */
961 /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
962 if (yychar
== YYEMPTY
)
964 YYDPRINTF ((stderr
, _("Reading a token: ")));
970 yychar
= yytoken
= YYEOF
;
971 YYDPRINTF ((stderr
, _("Now at end of input.\n")));
975 yytoken
= YYTRANSLATE (yychar
);
976 YY_SYMBOL_PRINT (_("Next token is"), yytoken
, &yylval
, &yylloc
);
979 /* If the proper action on seeing token YYTOKEN is to reduce or to
980 detect an error, take that action. */
982 if (yyn
< 0 || YYLAST
< yyn
|| yycheck
[yyn
] != yytoken
)
987 if (yyn
== 0 || yyn
== YYTABLE_NINF
)
996 /* Shift the look-ahead token. */
997 YY_SYMBOL_PRINT (_("Shifting"), yytoken
, &yylval
, &yylloc
);
999 /* Discard the token being shifted unless it is eof. */
1000 if (yychar
!= YYEOF
)
1004 ]b4_location_if([ *++yylsp
= yylloc
;])[
1006 /* Count tokens shifted since error; after three, turn off error
1015 /*-----------------------------------------------------------.
1016 | yydefault -- do the default action for the current state. |
1017 `-----------------------------------------------------------*/
1019 yyn
= yydefact
[yystate
];
1025 /*-----------------------------.
1026 | yyreduce -- Do a reduction. |
1027 `-----------------------------*/
1029 /* yyn is the number of a rule to reduce with. */
1032 /* If YYLEN is nonzero, implement the default value of the action:
1035 Otherwise, the following line sets YYVAL to garbage.
1036 This behavior is undocumented and Bison
1037 users should not rely upon it. Assigning to YYVAL
1038 unconditionally makes the parser a bit smaller, and it avoids a
1039 GCC warning that YYVAL may be used uninitialized. */
1040 yyval
= yyvsp
[1-yylen
];
1043 [[ /* Default location. */
1044 YYLLOC_DEFAULT (yyloc
, yylsp
- yylen
, yylen
);]])[
1045 YY_REDUCE_PRINT (yyn
);
1052 /* Line __line__ of yacc.c. */
1053 b4_syncline([@oline@
], [@ofile@
])
1057 ]b4_location_if([ yylsp
-= yylen
;])[
1059 YY_STACK_PRINT (yyss
, yyssp
);
1062 ]b4_location_if([ *++yylsp
= yyloc
;])[
1064 /* Now `shift' the result of the reduction. Determine what state
1065 that goes to, based on the state we popped back to and the rule
1066 number reduced by. */
1070 yystate
= yypgoto
[yyn
- YYNTOKENS
] + *yyssp
;
1071 if (0 <= yystate
&& yystate
<= YYLAST
&& yycheck
[yystate
] == *yyssp
)
1072 yystate
= yytable
[yystate
];
1074 yystate
= yydefgoto
[yyn
- YYNTOKENS
];
1079 /*------------------------------------.
1080 | yyerrlab -- here on detecting error |
1081 `------------------------------------*/
1083 /* If not already recovering from an error, report this error. */
1088 yyn
= yypact
[yystate
];
1090 if (YYPACT_NINF
< yyn
&& yyn
< YYLAST
)
1092 int yytype
= YYTRANSLATE (yychar
);
1093 YYSIZE_T yysize0
= yystrlen (yytname
[yytype
]);
1094 YYSIZE_T yysize
= yysize0
;
1096 int yysize_overflow
= 0;
1098 # define YYERROR_VERBOSE_ARGS_MAXIMUM 5
1099 char const *yyarg
[YYERROR_VERBOSE_ARGS_MAXIMUM
];
1103 /* This is so xgettext sees the translatable formats that are
1104 constructed on the fly. */
1105 _("syntax error, unexpected %s");
1106 _("syntax error, unexpected %s, expecting %s");
1107 _("syntax error, unexpected %s, expecting %s or %s");
1108 _("syntax error, unexpected %s, expecting %s or %s or %s");
1109 _("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1113 static char const yyunexpected
[] = "syntax error, unexpected %s";
1114 static char const yyexpecting
[] = ", expecting %s";
1115 static char const yyor
[] = " or %s";
1116 char yyformat
[sizeof yyunexpected
1117 + sizeof yyexpecting
- 1
1118 + ((YYERROR_VERBOSE_ARGS_MAXIMUM
- 2)
1119 * (sizeof yyor
- 1))];
1120 char const *yyprefix
= yyexpecting
;
1122 /* Start YYX at -YYN if negative to avoid negative indexes in
1124 int yyxbegin
= yyn
< 0 ? -yyn
: 0;
1126 /* Stay within bounds of both yycheck and yytname. */
1127 int yychecklim
= YYLAST
- yyn
;
1128 int yyxend
= yychecklim
< YYNTOKENS
? yychecklim
: YYNTOKENS
;
1131 yyarg
[0] = yytname
[yytype
];
1132 yyfmt
= yystpcpy (yyformat
, yyunexpected
);
1134 for (yyx
= yyxbegin
; yyx
< yyxend
; ++yyx
)
1135 if (yycheck
[yyx
+ yyn
] == yyx
&& yyx
!= YYTERROR
)
1137 if (yycount
== YYERROR_VERBOSE_ARGS_MAXIMUM
)
1141 yyformat
[sizeof yyunexpected
- 1] = '\0';
1144 yyarg
[yycount
++] = yytname
[yyx
];
1145 yysize1
= yysize
+ yystrlen (yytname
[yyx
]);
1146 yysize_overflow
|= yysize1
< yysize
;
1148 yyfmt
= yystpcpy (yyfmt
, yyprefix
);
1153 yysize1
= yysize
+ strlen (yyf
);
1154 yysize_overflow
|= yysize1
< yysize
;
1157 if (!yysize_overflow
&& yysize
<= YYSTACK_ALLOC_MAXIMUM
)
1158 yymsg
= (char *) YYSTACK_ALLOC (yysize
);
1161 /* Avoid sprintf, as that infringes on the user's name space.
1162 Don't have undefined behavior even if the translation
1163 produced a string with the wrong number of "%s"s. */
1166 while ((*yyp
= *yyf
))
1168 if (*yyp
== '%' && yyf
[1] == 's' && yyi
< yycount
)
1170 yyp
= yystpcpy (yyp
, yyarg
[yyi
++]);
1179 yyerror (]b4_yyerror_args
[yymsg
);
1180 YYSTACK_FREE (yymsg
);
1183 yyerror (]b4_yyerror_args
[_("syntax error; also memory exhausted"));
1186 #endif /* YYERROR_VERBOSE */
1187 yyerror (]b4_yyerror_args
[_("syntax error"));
1190 ]b4_location_if([[ yyerror_range
[0] = yylloc
;]])[
1192 if (yyerrstatus
== 3)
1194 /* If just tried and failed to reuse look-ahead token after an
1195 error, discard it. */
1197 if (yychar
<= YYEOF
)
1199 /* If at end of input, pop the error token,
1200 then the rest of the stack, then return failure. */
1201 if (yychar
== YYEOF
)
1204 ]b4_location_if([[ yyerror_range
[0] = *yylsp
;]])[
1208 yydestruct (_("Error: popping"),
1209 yystos
[*yyssp
], yyvsp
]b4_location_if([, yylsp
])[);
1214 yydestruct (_("Error: discarding"), yytoken
, &yylval
]b4_location_if([, &yylloc
])[);
1219 /* Else will try to reuse look-ahead token after shifting the error
1224 /*---------------------------------------------------.
1225 | yyerrorlab -- error raised explicitly by YYERROR. |
1226 `---------------------------------------------------*/
1229 /* Pacify compilers like GCC when the user code never invokes
1230 YYERROR and the label yyerrorlab therefore never appears in user
1235 ]b4_location_if([[ yyerror_range
[0] = yylsp
[1-yylen
];
1243 /*-------------------------------------------------------------.
1244 | yyerrlab1 -- common code for both syntax error and YYERROR. |
1245 `-------------------------------------------------------------*/
1247 yyerrstatus
= 3; /* Each real token shifted decrements this. */
1251 yyn
= yypact
[yystate
];
1252 if (yyn
!= YYPACT_NINF
)
1255 if (0 <= yyn
&& yyn
<= YYLAST
&& yycheck
[yyn
] == YYTERROR
)
1263 /* Pop the current state because it cannot handle the error token. */
1267 ]b4_location_if([[ yyerror_range
[0] = *yylsp
;]])[
1268 yydestruct (_("Error: popping"), yystos
[yystate
], yyvsp
]b4_location_if([, yylsp
])[);
1271 YY_STACK_PRINT (yyss
, yyssp
);
1279 yyerror_range
[1] = yylloc
;
1280 /* Using YYLLOC is tempting, but would change the location of
1281 the look-ahead. YYLOC is available though. */
1282 YYLLOC_DEFAULT (yyloc
, yyerror_range
- 1, 2);
1283 *++yylsp
= yyloc
;]])[
1285 /* Shift the error token. */
1286 YY_SYMBOL_PRINT (_("Shifting"), yystos
[yyn
], yyvsp
, yylsp
);
1292 /*-------------------------------------.
1293 | yyacceptlab -- YYACCEPT comes here. |
1294 `-------------------------------------*/
1299 /*-----------------------------------.
1300 | yyabortlab -- YYABORT comes here. |
1301 `-----------------------------------*/
1303 yydestruct (_("Error: discarding lookahead"),
1304 yytoken
, &yylval
]b4_location_if([, &yylloc
])[);
1310 /*----------------------------------------------.
1311 | yyoverflowlab -- parser overflow comes here. |
1312 `----------------------------------------------*/
1314 yyerror (]b4_yyerror_args
[_("parser stack overflow"));
1322 YYSTACK_FREE (yyss
);
1329 m4_if(b4_defines_flag
, 0, [],
1330 [@output @output_header_name@
1331 b4_copyright([Skeleton parser
for Yacc
-like parsing with Bison
],
1332 [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004])
1334 /* As a special exception, when this file is copied by Bison into a
1335 Bison output file, you may use that output file without restriction.
1336 This special exception was added by the Free Software Foundation
1337 in version 1.24 of Bison. */
1339 b4_token_defines(b4_tokens
)
1341 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
1342 m4_ifdef([b4_stype
],
1343 [b4_syncline([b4_stype_line
], [b4_filename
])
1344 typedef union m4_bregexp(b4_stype
, [^{], [YYSTYPE
])b4_stype YYSTYPE
;
1345 /* Line __line__ of yacc.c. */
1346 b4_syncline([@oline@
], [@ofile@
])],
1347 [typedef int YYSTYPE
;])
1348 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
1349 # define YYSTYPE_IS_DECLARED 1
1350 # define YYSTYPE_IS_TRIVIAL 1
1354 [extern YYSTYPE b4_prefix
[]lval
;])
1357 [#if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
1358 typedef struct YYLTYPE
1365 # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
1366 # define YYLTYPE_IS_DECLARED 1
1367 # define YYLTYPE_IS_TRIVIAL 1
1371 [extern YYLTYPE b4_prefix
[]lloc
;])