]> git.saurik.com Git - bison.git/blob - data/yacc.c
Fix infringement on user name space reported by Janos Zoltan Szabo.
[bison.git] / data / yacc.c
1 m4_divert(-1) -*- C -*-
2
3 # Yacc compatible skeleton for Bison
4
5 # Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005
6 # Free Software Foundation, 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 2 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, write to the Free Software
20 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21 # 02110-1301 USA
22
23
24
25 ## ---------------- ##
26 ## Default values. ##
27 ## ---------------- ##
28
29 # Stack parameters.
30 m4_define_default([b4_stack_depth_max], [10000])
31 m4_define_default([b4_stack_depth_init], [200])
32
33
34 ## ------------------------ ##
35 ## Pure/impure interfaces. ##
36 ## ------------------------ ##
37
38
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],
44 [$1], [$2])],
45 [$2])])
46
47
48 # b4_yyerror_args
49 # ---------------
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), ])])
54
55
56 # b4_lex_param
57 # ------------
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)))
64
65
66
67 ## ------------ ##
68 ## Data Types. ##
69 ## ------------ ##
70
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],
79
80 b4_ints_in($@, [0], [65535]), [1], [unsigned short int],
81 b4_ints_in($@, [-32768], [32767]), [1], [short int],
82
83 m4_eval([0 <= $1]), [1], [unsigned int],
84
85 [int])])
86
87
88 ## ----------------- ##
89 ## Semantic Values. ##
90 ## ----------------- ##
91
92
93 # b4_lhs_value([TYPE])
94 # --------------------
95 # Expansion of $<TYPE>$.
96 m4_define([b4_lhs_value],
97 [(yyval[]m4_ifval([$1], [.$1]))])
98
99
100 # b4_rhs_value(RULE-LENGTH, NUM, [TYPE])
101 # --------------------------------------
102 # Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
103 # symbols on RHS.
104 m4_define([b4_rhs_value],
105 [(yyvsp@{m4_eval([$2 - $1])@}m4_ifval([$3], [.$3]))])
106
107
108
109 ## ----------- ##
110 ## Locations. ##
111 ## ----------- ##
112
113 # b4_lhs_location()
114 # -----------------
115 # Expansion of @$.
116 m4_define([b4_lhs_location],
117 [(yyloc)])
118
119
120 # b4_rhs_location(RULE-LENGTH, NUM)
121 # ---------------------------------
122 # Expansion of @NUM, where the current rule has RULE-LENGTH symbols
123 # on RHS.
124 m4_define([b4_rhs_location],
125 [(yylsp@{m4_eval([$2 - $1])@})])
126
127
128
129 ## --------------------------------------------------------- ##
130 ## Defining symbol actions, e.g., printers and destructors. ##
131 ## --------------------------------------------------------- ##
132
133 # We do want M4 expansion after # for CPP macros.
134 m4_changecom()
135 m4_divert(0)dnl
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])[
139
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. */
144
145 /* Written by Richard Stallman by simplifying the original so called
146 ``semantic'' parser. */
147
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. */
154
155 ]b4_identification
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])])[
166
167 ]b4_token_defines(b4_tokens)[
168
169 /* Copy the first part of user declarations. */
170 ]b4_pre_prologue[
171
172 /* Enabling traces. */
173 #ifndef YYDEBUG
174 # define YYDEBUG ]b4_debug[
175 #endif
176
177 /* Enabling verbose error messages. */
178 #ifdef YYERROR_VERBOSE
179 # undef YYERROR_VERBOSE
180 # define YYERROR_VERBOSE 1
181 #else
182 # define YYERROR_VERBOSE ]b4_error_verbose[
183 #endif
184
185 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
186 ]m4_ifdef([b4_stype],
187 [b4_syncline([b4_stype_line], [b4_filename])
188 typedef union m4_bregexp(b4_stype, [^{], [YYSTYPE ])b4_stype YYSTYPE;
189 /* Line __line__ of yacc.c. */
190 b4_syncline([@oline@], [@ofile@])],
191 [typedef int YYSTYPE;])[
192 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
193 # define YYSTYPE_IS_DECLARED 1
194 # define YYSTYPE_IS_TRIVIAL 1
195 #endif
196
197 ]b4_location_if([#if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
198 typedef struct YYLTYPE
199 {
200 int first_line;
201 int first_column;
202 int last_line;
203 int last_column;
204 } YYLTYPE;
205 # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
206 # define YYLTYPE_IS_DECLARED 1
207 # define YYLTYPE_IS_TRIVIAL 1
208 #endif
209 ])[
210
211 /* Copy the second part of user declarations. */
212 ]b4_post_prologue
213
214 /* Line __line__ of yacc.c. */
215 b4_syncline([@oline@], [@ofile@])[
216
217 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
218 # define YYSIZE_T __SIZE_TYPE__
219 #endif
220 #if ! defined (YYSIZE_T) && defined (size_t)
221 # define YYSIZE_T size_t
222 #endif
223 #if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
224 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
225 # define YYSIZE_T size_t
226 #endif
227 #if ! defined (YYSIZE_T)
228 # define YYSIZE_T unsigned int
229 #endif
230
231 #if ! defined (yyoverflow) || YYERROR_VERBOSE
232
233 /* The parser invokes alloca or malloc; define the necessary symbols. */
234
235 # ifdef YYSTACK_USE_ALLOCA
236 # if YYSTACK_USE_ALLOCA
237 # ifdef __GNUC__
238 # define YYSTACK_ALLOC __builtin_alloca
239 # else
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
244 # endif
245 # endif
246 # endif
247 # endif
248
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 */
258 # endif
259 # else
260 # define YYSTACK_ALLOC YYMALLOC
261 # define YYSTACK_FREE YYFREE
262 # ifndef YYSTACK_ALLOC_MAXIMUM
263 # define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
264 # endif
265 # ifndef YYMALLOC
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 */
270 # endif
271 # endif
272 # ifndef YYFREE
273 # define YYFREE free
274 # if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
275 && (defined (__STDC__) || defined (__cplusplus)))
276 void free (void *); /* INFRINGES ON USER NAME SPACE */
277 # endif
278 # endif
279 # endif
280 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
281
282
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)))
287
288 /* A type that is properly aligned for any stack member. */
289 union yyalloc
290 {
291 short int yyss;
292 YYSTYPE yyvs;
293 ]b4_location_if([ YYLTYPE yyls;
294 ])dnl
295 [};
296
297 /* The size of the maximum gap between one aligned stack and the next. */
298 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
299
300 /* The size of an array large to enough to hold all stacks, each with
301 N elements. */
302 ]b4_location_if(
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)])[
309
310 /* Copy COUNT objects from FROM to TO. The source and destination do
311 not overlap. */
312 # ifndef YYCOPY
313 # if defined (__GNUC__) && 1 < __GNUC__
314 # define YYCOPY(To, From, Count) \
315 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
316 # else
317 # define YYCOPY(To, From, Count) \
318 do \
319 { \
320 YYSIZE_T yyi; \
321 for (yyi = 0; yyi < (Count); yyi++) \
322 (To)[yyi] = (From)[yyi]; \
323 } \
324 while (0)
325 # endif
326 # endif
327
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
332 stack. */
333 # define YYSTACK_RELOCATE(Stack) \
334 do \
335 { \
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); \
341 } \
342 while (0)
343
344 #endif
345
346 #if defined (__STDC__) || defined (__cplusplus)
347 typedef signed char yysigned_char;
348 #else
349 typedef short int yysigned_char;
350 #endif
351
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[
356
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[
365
366 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
367 #define YYUNDEFTOK ]b4_undef_token_number[
368 #define YYMAXUTOK ]b4_user_token_number_max[
369
370 #define YYTRANSLATE(YYX) \
371 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
372
373 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
374 static const ]b4_int_type_for([b4_translate])[ yytranslate[] =
375 {
376 ]b4_translate[
377 };
378
379 #if YYDEBUG
380 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
381 YYRHS. */
382 static const ]b4_int_type_for([b4_prhs])[ yyprhs[] =
383 {
384 ]b4_prhs[
385 };
386
387 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
388 static const ]b4_int_type_for([b4_rhs])[ yyrhs[] =
389 {
390 ]b4_rhs[
391 };
392
393 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
394 static const ]b4_int_type_for([b4_rline])[ yyrline[] =
395 {
396 ]b4_rline[
397 };
398 #endif
399
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[] =
404 {
405 ]b4_tname[
406 };
407 #endif
408
409 /* INFRINGES ON USER NAME SPACE */
410 #ifndef _
411 # define _(msgid) msgid
412 #endif
413
414 # ifdef YYPRINT
415 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
416 token YYLEX-NUM. */
417 static const ]b4_int_type_for([b4_toknum])[ yytoknum[] =
418 {
419 ]b4_toknum[
420 };
421 # endif
422
423 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
424 static const ]b4_int_type_for([b4_r1])[ yyr1[] =
425 {
426 ]b4_r1[
427 };
428
429 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
430 static const ]b4_int_type_for([b4_r2])[ yyr2[] =
431 {
432 ]b4_r2[
433 };
434
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[] =
439 {
440 ]b4_defact[
441 };
442
443 /* YYDEFGOTO[NTERM-NUM]. */
444 static const ]b4_int_type_for([b4_defgoto])[ yydefgoto[] =
445 {
446 ]b4_defgoto[
447 };
448
449 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
450 STATE-NUM. */
451 #define YYPACT_NINF ]b4_pact_ninf[
452 static const ]b4_int_type_for([b4_pact])[ yypact[] =
453 {
454 ]b4_pact[
455 };
456
457 /* YYPGOTO[NTERM-NUM]. */
458 static const ]b4_int_type_for([b4_pgoto])[ yypgoto[] =
459 {
460 ]b4_pgoto[
461 };
462
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[] =
469 {
470 ]b4_table[
471 };
472
473 static const ]b4_int_type_for([b4_check])[ yycheck[] =
474 {
475 ]b4_check[
476 };
477
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[] =
481 {
482 ]b4_stos[
483 };
484
485 #define yyerrok (yyerrstatus = 0)
486 #define yyclearin (yychar = YYEMPTY)
487 #define YYEMPTY (-2)
488 #define YYEOF 0
489
490 #define YYACCEPT goto yyacceptlab
491 #define YYABORT goto yyabortlab
492 #define YYERROR goto yyerrorlab
493
494
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. */
498
499 #define YYFAIL goto yyerrlab
500
501 #define YYRECOVERING() (!!yyerrstatus)
502
503 #define YYBACKUP(Token, Value) \
504 do \
505 if (yychar == YYEMPTY && yylen == 1) \
506 { \
507 yychar = (Token); \
508 yylval = (Value); \
509 yytoken = YYTRANSLATE (yychar); \
510 YYPOPSTACK; \
511 goto yybackup; \
512 } \
513 else \
514 { \
515 yyerror (]b4_yyerror_args[_("syntax error: cannot back up")); \
516 YYERROR; \
517 } \
518 while (0)
519
520
521 #define YYTERROR 1
522 #define YYERRCODE 256
523
524
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). */
528
529 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
530 #ifndef YYLLOC_DEFAULT
531 # define YYLLOC_DEFAULT(Current, Rhs, N) \
532 do \
533 if (N) \
534 { \
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; \
539 } \
540 else \
541 { \
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; \
546 } \
547 while (0)
548 #endif
549
550
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. */
554
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)
561 # else
562 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
563 # endif
564 #endif
565
566
567 /* YYLEX -- calling `yylex' with the right arguments. */
568
569 #ifdef YYLEX_PARAM
570 # define YYLEX yylex (]b4_pure_if([&yylval[]b4_location_if([, &yylloc]), ])[YYLEX_PARAM)
571 #else
572 # define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[
573 #endif
574
575 /* Enable debugging if requested. */
576 #if YYDEBUG
577
578 # ifndef YYFPRINTF
579 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
580 # define YYFPRINTF fprintf
581 # endif
582
583 # define YYDPRINTF(Args) \
584 do { \
585 if (yydebug) \
586 YYFPRINTF Args; \
587 } while (0)
588
589 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
590 do { \
591 if (yydebug) \
592 { \
593 YYFPRINTF (stderr, "%s ", Title); \
594 yysymprint (stderr, \
595 Type, Value]b4_location_if([, Location])[); \
596 YYFPRINTF (stderr, "\n"); \
597 } \
598 } while (0)
599
600 /*------------------------------------------------------------------.
601 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
602 | TOP (included). |
603 `------------------------------------------------------------------*/
604
605 ]b4_c_function_def([yy_stack_print], [static void],
606 [[short int *bottom], [bottom]],
607 [[short int *top], [top]])[
608 {
609 YYFPRINTF (stderr, _("Stack now"));
610 for (/* Nothing. */; bottom <= top; ++bottom)
611 YYFPRINTF (stderr, " %d", *bottom);
612 YYFPRINTF (stderr, "\n");
613 }
614
615 # define YY_STACK_PRINT(Bottom, Top) \
616 do { \
617 if (yydebug) \
618 yy_stack_print ((Bottom), (Top)); \
619 } while (0)
620
621
622 /*------------------------------------------------.
623 | Report that the YYRULE is going to be reduced. |
624 `------------------------------------------------*/
625
626 ]b4_c_function_def([yy_reduce_print], [static void],
627 [[int yyrule], [yyrule]])[
628 {
629 int yyi;
630 unsigned int yylno = yyrline[yyrule];
631 YYFPRINTF (stderr, _("Reducing stack by rule %d (line %u), "),
632 yyrule - 1, yylno);
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]]);
637 }
638
639 # define YY_REDUCE_PRINT(Rule) \
640 do { \
641 if (yydebug) \
642 yy_reduce_print (Rule); \
643 } while (0)
644
645 /* Nonzero means print parse trace. It is left uninitialized so that
646 multiple parsers can coexist. */
647 int yydebug;
648 #else /* !YYDEBUG */
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 */
654
655
656 /* YYINITDEPTH -- initial size of the parser's stacks. */
657 #ifndef YYINITDEPTH
658 # define YYINITDEPTH ]b4_stack_depth_init[
659 #endif
660
661 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
662 if the built-in stack extension method is used).
663
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. */
667
668 #ifndef YYMAXDEPTH
669 # define YYMAXDEPTH ]b4_stack_depth_max[
670 #endif
671
672 \f
673
674 #if YYERROR_VERBOSE
675
676 # ifndef yystrlen
677 # if defined (__GLIBC__) && defined (_STRING_H)
678 # define yystrlen strlen
679 # else
680 /* Return the length of YYSTR. */
681 static YYSIZE_T
682 # if defined (__STDC__) || defined (__cplusplus)
683 yystrlen (const char *yystr)
684 # else
685 yystrlen (yystr)
686 const char *yystr;
687 # endif
688 {
689 const char *yys = yystr;
690
691 while (*yys++ != '\0')
692 continue;
693
694 return yys - yystr - 1;
695 }
696 # endif
697 # endif
698
699 # ifndef yystpcpy
700 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
701 # define yystpcpy stpcpy
702 # else
703 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
704 YYDEST. */
705 static char *
706 # if defined (__STDC__) || defined (__cplusplus)
707 yystpcpy (char *yydest, const char *yysrc)
708 # else
709 yystpcpy (yydest, yysrc)
710 char *yydest;
711 const char *yysrc;
712 # endif
713 {
714 char *yyd = yydest;
715 const char *yys = yysrc;
716
717 while ((*yyd++ = *yys++) != '\0')
718 continue;
719
720 return yyd - 1;
721 }
722 # endif
723 # endif
724
725 #endif /* !YYERROR_VERBOSE */
726
727 \f
728
729 #if YYDEBUG
730 ]b4_yysymprint_generate([b4_c_function_def])[
731 #endif /* ! YYDEBUG */
732 ]b4_yydestruct_generate([b4_c_function_def])
733 \f
734
735 /* Prevent warnings from -Wmissing-prototypes. */
736
737 #ifdef YYPARSE_PARAM
738 # if defined (__STDC__) || defined (__cplusplus)
739 int yyparse (void *YYPARSE_PARAM);
740 # else
741 int yyparse ();
742 # endif
743 #else /* ! YYPARSE_PARAM */
744 b4_c_function_decl([yyparse], [int], b4_parse_param)
745 #endif /* ! YYPARSE_PARAM */
746
747
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
752 # pure-parser.
753 m4_define([b4_declare_parser_variables],
754 [/* The look-ahead symbol. */
755 int yychar;
756
757 /* The semantic value of the look-ahead symbol. */
758 YYSTYPE yylval;
759
760 /* Number of syntax errors so far. */
761 int yynerrs;b4_location_if([
762 /* Location data for the look-ahead symbol. */
763 YYLTYPE yylloc;])
764 ])
765 m4_divert_pop([KILL])dnl# ====================== End of M4 code.
766
767 b4_pure_if([],
768 [b4_declare_parser_variables])
769
770
771 /*----------.
772 | yyparse. |
773 `----------*/
774
775 #ifdef YYPARSE_PARAM
776 # if defined (__STDC__) || defined (__cplusplus)
777 int yyparse (void *YYPARSE_PARAM)
778 # else
779 int yyparse (YYPARSE_PARAM)
780 void *YYPARSE_PARAM;
781 # endif
782 #else /* ! YYPARSE_PARAM */
783 b4_c_function_def([yyparse], [int], b4_parse_param)
784 #endif
785 {[
786 ]b4_pure_if([b4_declare_parser_variables])[
787 int yystate;
788 int yyn;
789 int yyresult;
790 /* Number of tokens to shift before error messages enabled. */
791 int yyerrstatus;
792 /* Look-ahead token as an internal (translated) token number. */
793 int yytoken = 0;
794
795 /* Three stacks and their tools:
796 `yyss': related to states,
797 `yyvs': related to semantic values,
798 `yyls': related to locations.
799
800 Refer to the stacks thru separate pointers, to allow yyoverflow
801 to reallocate them elsewhere. */
802
803 /* The state stack. */
804 short int yyssa[YYINITDEPTH];
805 short int *yyss = yyssa;
806 short int *yyssp;
807
808 /* The semantic value stack. */
809 YYSTYPE yyvsa[YYINITDEPTH];
810 YYSTYPE *yyvs = yyvsa;
811 YYSTYPE *yyvsp;
812
813 ]b4_location_if(
814 [[ /* The location stack. */
815 YYLTYPE yylsa[YYINITDEPTH];
816 YYLTYPE *yyls = yylsa;
817 YYLTYPE *yylsp;
818 /* The locations where the error started and ended. */
819 YYLTYPE yyerror_range[2];]])[
820
821 #define YYPOPSTACK (yyvsp--, yyssp--]b4_location_if([, yylsp--])[)
822
823 YYSIZE_T yystacksize = YYINITDEPTH;
824
825 /* The variables used to return semantic value and location from the
826 action routines. */
827 YYSTYPE yyval;
828 ]b4_location_if([ YYLTYPE yyloc;])[
829
830 /* When reducing, the number of symbols on the RHS of the reduced
831 rule. */
832 int yylen;
833
834 YYDPRINTF ((stderr, "Starting parse\n"));
835
836 yystate = 0;
837 yyerrstatus = 0;
838 yynerrs = 0;
839 yychar = YYEMPTY; /* Cause a token to be read. */
840
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. */
845
846 yyssp = yyss;
847 yyvsp = yyvs;
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;
853 #endif
854 ]])
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. */
859 b4_initial_action
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
864 [
865 yyvsp[0] = yylval;
866 ]b4_location_if([[ yylsp[0] = yylloc;
867 ]])
868 [ goto yysetstate;
869
870 /*------------------------------------------------------------.
871 | yynewstate -- Push a new state, which is found in yystate. |
872 `------------------------------------------------------------*/
873 yynewstate:
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.
876 */
877 yyssp++;
878
879 yysetstate:
880 *yyssp = yystate;
881
882 if (yyss + yystacksize - 1 <= yyssp)
883 {
884 /* Get the current used size of the three stacks, in elements. */
885 YYSIZE_T yysize = yyssp - yyss + 1;
886
887 #ifdef yyoverflow
888 {
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
891 memory. */
892 YYSTYPE *yyvs1 = yyvs;
893 short int *yyss1 = yyss;
894 ]b4_location_if([ YYLTYPE *yyls1 = yyls;])[
895
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),])[
904 &yystacksize);
905 ]b4_location_if([ yyls = yyls1;])[
906 yyss = yyss1;
907 yyvs = yyvs1;
908 }
909 #else /* no yyoverflow */
910 # ifndef YYSTACK_RELOCATE
911 goto yyoverflowlab;
912 # else
913 /* Extend the stack our own way. */
914 if (YYMAXDEPTH <= yystacksize)
915 goto yyoverflowlab;
916 yystacksize *= 2;
917 if (YYMAXDEPTH < yystacksize)
918 yystacksize = YYMAXDEPTH;
919
920 {
921 short int *yyss1 = yyss;
922 union yyalloc *yyptr =
923 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
924 if (! yyptr)
925 goto yyoverflowlab;
926 YYSTACK_RELOCATE (yyss);
927 YYSTACK_RELOCATE (yyvs);
928 ]b4_location_if([ YYSTACK_RELOCATE (yyls);])[
929 # undef YYSTACK_RELOCATE
930 if (yyss1 != yyssa)
931 YYSTACK_FREE (yyss1);
932 }
933 # endif
934 #endif /* no yyoverflow */
935
936 yyssp = yyss + yysize - 1;
937 yyvsp = yyvs + yysize - 1;
938 ]b4_location_if([ yylsp = yyls + yysize - 1;])[
939
940 YYDPRINTF ((stderr, _("Stack size increased to %lu\n"),
941 (unsigned long int) yystacksize));
942
943 if (yyss + yystacksize - 1 <= yyssp)
944 YYABORT;
945 }
946
947 YYDPRINTF ((stderr, _("Entering state %d\n"), yystate));
948
949 goto yybackup;
950
951 /*-----------.
952 | yybackup. |
953 `-----------*/
954 yybackup:
955
956 /* Do appropriate processing given the current state. */
957 /* Read a look-ahead token if we need one and don't already have one. */
958 /* yyresume: */
959
960 /* First try to decide what to do without reference to look-ahead token. */
961
962 yyn = yypact[yystate];
963 if (yyn == YYPACT_NINF)
964 goto yydefault;
965
966 /* Not known => get a look-ahead token if don't already have one. */
967
968 /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
969 if (yychar == YYEMPTY)
970 {
971 YYDPRINTF ((stderr, _("Reading a token: ")));
972 yychar = YYLEX;
973 }
974
975 if (yychar <= YYEOF)
976 {
977 yychar = yytoken = YYEOF;
978 YYDPRINTF ((stderr, _("Now at end of input.\n")));
979 }
980 else
981 {
982 yytoken = YYTRANSLATE (yychar);
983 YY_SYMBOL_PRINT (_("Next token is"), yytoken, &yylval, &yylloc);
984 }
985
986 /* If the proper action on seeing token YYTOKEN is to reduce or to
987 detect an error, take that action. */
988 yyn += yytoken;
989 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
990 goto yydefault;
991 yyn = yytable[yyn];
992 if (yyn <= 0)
993 {
994 if (yyn == 0 || yyn == YYTABLE_NINF)
995 goto yyerrlab;
996 yyn = -yyn;
997 goto yyreduce;
998 }
999
1000 if (yyn == YYFINAL)
1001 YYACCEPT;
1002
1003 /* Shift the look-ahead token. */
1004 YY_SYMBOL_PRINT (_("Shifting"), yytoken, &yylval, &yylloc);
1005
1006 /* Discard the token being shifted unless it is eof. */
1007 if (yychar != YYEOF)
1008 yychar = YYEMPTY;
1009
1010 *++yyvsp = yylval;
1011 ]b4_location_if([ *++yylsp = yylloc;])[
1012
1013 /* Count tokens shifted since error; after three, turn off error
1014 status. */
1015 if (yyerrstatus)
1016 yyerrstatus--;
1017
1018 yystate = yyn;
1019 goto yynewstate;
1020
1021
1022 /*-----------------------------------------------------------.
1023 | yydefault -- do the default action for the current state. |
1024 `-----------------------------------------------------------*/
1025 yydefault:
1026 yyn = yydefact[yystate];
1027 if (yyn == 0)
1028 goto yyerrlab;
1029 goto yyreduce;
1030
1031
1032 /*-----------------------------.
1033 | yyreduce -- Do a reduction. |
1034 `-----------------------------*/
1035 yyreduce:
1036 /* yyn is the number of a rule to reduce with. */
1037 yylen = yyr2[yyn];
1038
1039 /* If YYLEN is nonzero, implement the default value of the action:
1040 `$$ = $1'.
1041
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];
1048
1049 ]b4_location_if(
1050 [[ /* Default location. */
1051 YYLLOC_DEFAULT (yyloc, yylsp - yylen, yylen);]])[
1052 YY_REDUCE_PRINT (yyn);
1053 switch (yyn)
1054 ]{
1055 b4_actions
1056 default: break;
1057 }
1058
1059 /* Line __line__ of yacc.c. */
1060 b4_syncline([@oline@], [@ofile@])
1061 \f
1062 [ yyvsp -= yylen;
1063 yyssp -= yylen;
1064 ]b4_location_if([ yylsp -= yylen;])[
1065
1066 YY_STACK_PRINT (yyss, yyssp);
1067
1068 *++yyvsp = yyval;
1069 ]b4_location_if([ *++yylsp = yyloc;])[
1070
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. */
1074
1075 yyn = yyr1[yyn];
1076
1077 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
1078 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1079 yystate = yytable[yystate];
1080 else
1081 yystate = yydefgoto[yyn - YYNTOKENS];
1082
1083 goto yynewstate;
1084
1085
1086 /*------------------------------------.
1087 | yyerrlab -- here on detecting error |
1088 `------------------------------------*/
1089 yyerrlab:
1090 /* If not already recovering from an error, report this error. */
1091 if (!yyerrstatus)
1092 {
1093 ++yynerrs;
1094 #if YYERROR_VERBOSE
1095 yyn = yypact[yystate];
1096
1097 if (YYPACT_NINF < yyn && yyn < YYLAST)
1098 {
1099 int yytype = YYTRANSLATE (yychar);
1100 YYSIZE_T yysize0 = yystrlen (yytname[yytype]);
1101 YYSIZE_T yysize = yysize0;
1102 YYSIZE_T yysize1;
1103 int yysize_overflow = 0;
1104 char *yymsg = 0;
1105 # define YYERROR_VERBOSE_ARGS_MAXIMUM 5
1106 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1107 int yyx;
1108
1109 #if 0
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");
1117 #endif
1118 char *yyfmt;
1119 char const *yyf;
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;
1128
1129 /* Start YYX at -YYN if negative to avoid negative indexes in
1130 YYCHECK. */
1131 int yyxbegin = yyn < 0 ? -yyn : 0;
1132
1133 /* Stay within bounds of both yycheck and yytname. */
1134 int yychecklim = YYLAST - yyn;
1135 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1136 int yycount = 1;
1137
1138 yyarg[0] = yytname[yytype];
1139 yyfmt = yystpcpy (yyformat, yyunexpected);
1140
1141 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1142 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1143 {
1144 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1145 {
1146 yycount = 1;
1147 yysize = yysize0;
1148 yyformat[sizeof yyunexpected - 1] = '\0';
1149 break;
1150 }
1151 yyarg[yycount++] = yytname[yyx];
1152 yysize1 = yysize + yystrlen (yytname[yyx]);
1153 yysize_overflow |= yysize1 < yysize;
1154 yysize = yysize1;
1155 yyfmt = yystpcpy (yyfmt, yyprefix);
1156 yyprefix = yyor;
1157 }
1158
1159 yyf = _(yyformat);
1160 yysize1 = yysize + yystrlen (yyf);
1161 yysize_overflow |= yysize1 < yysize;
1162 yysize = yysize1;
1163
1164 if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
1165 yymsg = (char *) YYSTACK_ALLOC (yysize);
1166 if (yymsg)
1167 {
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. */
1171 char *yyp = yymsg;
1172 int yyi = 0;
1173 while ((*yyp = *yyf))
1174 {
1175 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1176 {
1177 yyp = yystpcpy (yyp, yyarg[yyi++]);
1178 yyf += 2;
1179 }
1180 else
1181 {
1182 yyp++;
1183 yyf++;
1184 }
1185 }
1186 yyerror (]b4_yyerror_args[yymsg);
1187 YYSTACK_FREE (yymsg);
1188 }
1189 else
1190 yyerror (]b4_yyerror_args[_("syntax error; also memory exhausted"));
1191 }
1192 else
1193 #endif /* YYERROR_VERBOSE */
1194 yyerror (]b4_yyerror_args[_("syntax error"));
1195 }
1196
1197 ]b4_location_if([[ yyerror_range[0] = yylloc;]])[
1198
1199 if (yyerrstatus == 3)
1200 {
1201 /* If just tried and failed to reuse look-ahead token after an
1202 error, discard it. */
1203
1204 if (yychar <= YYEOF)
1205 {
1206 /* If at end of input, pop the error token,
1207 then the rest of the stack, then return failure. */
1208 if (yychar == YYEOF)
1209 YYABORT;
1210 }
1211 else
1212 {
1213 yydestruct (_("Error: discarding"), yytoken, &yylval]b4_location_if([, &yylloc])[);
1214 yychar = YYEMPTY;
1215 }
1216 }
1217
1218 /* Else will try to reuse look-ahead token after shifting the error
1219 token. */
1220 goto yyerrlab1;
1221
1222
1223 /*---------------------------------------------------.
1224 | yyerrorlab -- error raised explicitly by YYERROR. |
1225 `---------------------------------------------------*/
1226 yyerrorlab:
1227
1228 /* Pacify compilers like GCC when the user code never invokes
1229 YYERROR and the label yyerrorlab therefore never appears in user
1230 code. */
1231 if (0)
1232 goto yyerrorlab;
1233
1234 ]b4_location_if([[ yyerror_range[0] = yylsp[1-yylen];
1235 yylsp -= yylen;
1236 ]])[yyvsp -= yylen;
1237 yyssp -= yylen;
1238 yystate = *yyssp;
1239 goto yyerrlab1;
1240
1241
1242 /*-------------------------------------------------------------.
1243 | yyerrlab1 -- common code for both syntax error and YYERROR. |
1244 `-------------------------------------------------------------*/
1245 yyerrlab1:
1246 yyerrstatus = 3; /* Each real token shifted decrements this. */
1247
1248 for (;;)
1249 {
1250 yyn = yypact[yystate];
1251 if (yyn != YYPACT_NINF)
1252 {
1253 yyn += YYTERROR;
1254 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
1255 {
1256 yyn = yytable[yyn];
1257 if (0 < yyn)
1258 break;
1259 }
1260 }
1261
1262 /* Pop the current state because it cannot handle the error token. */
1263 if (yyssp == yyss)
1264 YYABORT;
1265
1266 ]b4_location_if([[ yyerror_range[0] = *yylsp;]])[
1267 yydestruct (_("Error: popping"), yystos[yystate], yyvsp]b4_location_if([, yylsp])[);
1268 YYPOPSTACK;
1269 yystate = *yyssp;
1270 YY_STACK_PRINT (yyss, yyssp);
1271 }
1272
1273 if (yyn == YYFINAL)
1274 YYACCEPT;
1275
1276 *++yyvsp = yylval;
1277 ]b4_location_if([[
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;]])[
1283
1284 /* Shift the error token. */
1285 YY_SYMBOL_PRINT (_("Shifting"), yystos[yyn], yyvsp, yylsp);
1286
1287 yystate = yyn;
1288 goto yynewstate;
1289
1290
1291 /*-------------------------------------.
1292 | yyacceptlab -- YYACCEPT comes here. |
1293 `-------------------------------------*/
1294 yyacceptlab:
1295 yyresult = 0;
1296 goto yyreturn;
1297
1298 /*-----------------------------------.
1299 | yyabortlab -- YYABORT comes here. |
1300 `-----------------------------------*/
1301 yyabortlab:
1302 yyresult = 1;
1303 goto yyreturn;
1304
1305 #ifndef yyoverflow
1306 /*----------------------------------------------.
1307 | yyoverflowlab -- parser overflow comes here. |
1308 `----------------------------------------------*/
1309 yyoverflowlab:
1310 yyerror (]b4_yyerror_args[_("parser stack overflow"));
1311 yyresult = 2;
1312 /* Fall through. */
1313 #endif
1314
1315 yyreturn:
1316 if (yychar != YYEOF && yychar != YYEMPTY)
1317 yydestruct (_("Error: discarding lookahead"),
1318 yytoken, &yylval]b4_location_if([, &yylloc])[);
1319 if (yyssp != yyss)
1320 for (;;)
1321 {
1322 ]b4_location_if([[ yyerror_range[0] = *yylsp;]])[
1323 YYPOPSTACK;
1324 if (yyssp == yyss)
1325 break;
1326 yydestruct (_("Error: popping"),
1327 yystos[*yyssp], yyvsp]b4_location_if([, yylsp])[);
1328 }
1329 #ifndef yyoverflow
1330 if (yyss != yyssa)
1331 YYSTACK_FREE (yyss);
1332 #endif
1333 return yyresult;
1334 ]}
1335
1336
1337 b4_epilogue
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])
1342
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. */
1347
1348 b4_token_defines(b4_tokens)
1349
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
1360 #endif
1361
1362 b4_pure_if([],
1363 [extern YYSTYPE b4_prefix[]lval;])
1364
1365 b4_location_if(
1366 [#if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
1367 typedef struct YYLTYPE
1368 {
1369 int first_line;
1370 int first_column;
1371 int last_line;
1372 int last_column;
1373 } YYLTYPE;
1374 # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
1375 # define YYLTYPE_IS_DECLARED 1
1376 # define YYLTYPE_IS_TRIVIAL 1
1377 #endif
1378
1379 m4_if(b4_pure, [0],
1380 [extern YYLTYPE b4_prefix[]lloc;])
1381 ])
1382 ])