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