]> git.saurik.com Git - bison.git/blob - data/yacc.c
* src/getargs.h, src/getargs.c (trace_e, trace_args, trace_types):
[bison.git] / data / yacc.c
1 m4_divert(-1) -*- C -*-
2 m4_include([c.m4])
3
4 # Yacc compatible skeleton for Bison
5 # Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002
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., 59 Temple Place, Suite 330, Boston, MA
21 # 02111-1307 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 # Location type.
34 m4_define_default([b4_location_type], [yyltype])
35
36
37 ## ------------------------ ##
38 ## Pure/impure interfaces. ##
39 ## ------------------------ ##
40
41
42 # b4_pure_if(IF-TRUE, IF-FALSE)
43 # -----------------------------
44 # Expand IF-TRUE, if %pure-parser and %parse-param, IF-FALSE otherwise.
45 m4_define([b4_Pure_if],
46 [b4_pure_if([m4_ifset([b4_parse_param],
47 [$1], [$2])],
48 [$2])])
49
50
51 # b4_yyerror_args
52 # ---------------
53 # Arguments passed to yyerror: user args plus yylloc.
54 m4_define([b4_yyerror_args],
55 [b4_Pure_if([b4_location_if([&yylloc, ])])dnl
56 m4_ifset([b4_parse_param], [b4_c_args(b4_parse_param), ])])
57
58
59 # b4_lex_param
60 # ------------
61 # Accumule in b4_lex_param all the yylex arguments.
62 # b4_lex_param arrives quoted twice, but we want to keep only one level.
63 m4_define([b4_lex_param],
64 m4_dquote(b4_pure_if([[[[YYSTYPE *]], [[&yylval]]][]dnl
65 b4_location_if([, [[YYLTYPE *], [&yylloc]]])])dnl
66 m4_ifdef([b4_lex_param], [, ]b4_lex_param)))
67
68
69
70 ## ------------ ##
71 ## Data Types. ##
72 ## ------------ ##
73
74 # b4_int_type(MIN, MAX)
75 # ---------------------
76 # Return the smallest int type able to handle numbers ranging from
77 # MIN to MAX (included). We overwrite the version from c.m4 which relies
78 # on "signed char" which is not portable to old K&R compilers.
79 m4_define([b4_int_type],
80 [m4_if(b4_ints_in($@, [0], [255]), [1], [unsigned char],
81 b4_ints_in($@, [-128], [127]), [1], [yysigned_char],
82
83 b4_ints_in($@, [0], [65535]), [1], [unsigned short],
84 b4_ints_in($@, [-32768], [32767]), [1], [short],
85
86 m4_eval([0 <= $1]), [1], [unsigned int],
87
88 [int])])
89
90
91 ## ----------------- ##
92 ## Semantic Values. ##
93 ## ----------------- ##
94
95
96 # b4_lhs_value([TYPE])
97 # --------------------
98 # Expansion of $<TYPE>$.
99 m4_define([b4_lhs_value],
100 [yyval[]m4_ifval([$1], [.$1])])
101
102
103 # b4_rhs_value(RULE-LENGTH, NUM, [TYPE])
104 # --------------------------------------
105 # Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
106 # symbols on RHS.
107 m4_define([b4_rhs_value],
108 [yyvsp@{m4_eval([$2 - $1])@}m4_ifval([$3], [.$3])])
109
110
111
112 ## ----------- ##
113 ## Locations. ##
114 ## ----------- ##
115
116 # b4_lhs_location()
117 # -----------------
118 # Expansion of @$.
119 m4_define([b4_lhs_location],
120 [yyloc])
121
122
123 # b4_rhs_location(RULE-LENGTH, NUM)
124 # ---------------------------------
125 # Expansion of @NUM, where the current rule has RULE-LENGTH symbols
126 # on RHS.
127 m4_define([b4_rhs_location],
128 [yylsp@{m4_eval([$2 - $1])@}])
129
130
131
132 ## --------------------------------------------------------- ##
133 ## Defining symbol actions, e.g., printers and destructors. ##
134 ## --------------------------------------------------------- ##
135
136 # We do want M4 expansion after # for CPP macros.
137 m4_changecom()
138 m4_divert(0)dnl
139 @output @output_parser_name@
140 b4_copyright([Skeleton parser for Yacc-like parsing with Bison],
141 [1984, 1989, 1990, 2000, 2001, 2002])[
142
143 /* As a special exception, when this file is copied by Bison into a
144 Bison output file, you may use that output file without restriction.
145 This special exception was added by the Free Software Foundation
146 in version 1.24 of Bison. */
147
148 /* Written by Richard Stallman by simplifying the original so called
149 ``semantic'' parser. */
150
151 /* All symbols defined below should begin with yy or YY, to avoid
152 infringing on user name space. This should be done even for local
153 variables, as they might otherwise be expanded by user macros.
154 There are some unavoidable exceptions within include files to
155 define necessary library symbols; they are noted "INFRINGES ON
156 USER NAME SPACE" below. */
157
158 ]b4_identification
159 m4_if(b4_prefix[], [yy], [],
160 [/* If NAME_PREFIX is specified substitute the variables and functions
161 names. */
162 #define yyparse b4_prefix[]parse
163 #define yylex b4_prefix[]lex
164 #define yyerror b4_prefix[]error
165 #define yylval b4_prefix[]lval
166 #define yychar b4_prefix[]char
167 #define yydebug b4_prefix[]debug
168 #define yynerrs b4_prefix[]nerrs
169 b4_location_if([#define yylloc b4_prefix[]lloc])])[
170
171 ]b4_token_defines(b4_tokens)[
172
173 /* Copy the first part of user declarations. */
174 ]b4_pre_prologue[
175
176 /* Enabling traces. */
177 #ifndef YYDEBUG
178 # define YYDEBUG ]b4_debug[
179 #endif
180
181 /* Enabling verbose error messages. */
182 #ifdef YYERROR_VERBOSE
183 # undef YYERROR_VERBOSE
184 # define YYERROR_VERBOSE 1
185 #else
186 # define YYERROR_VERBOSE ]b4_error_verbose[
187 #endif
188
189 #ifndef YYSTYPE
190 ]m4_ifdef([b4_stype],
191 [b4_syncline([b4_stype_line], [b4_filename])
192 typedef union b4_stype yystype;
193 /* Line __line__ of __file__. */
194 b4_syncline([@oline@], [@ofile@])],
195 [typedef int yystype;])[
196 # define YYSTYPE yystype
197 # define YYSTYPE_IS_TRIVIAL 1
198 #endif
199
200 #ifndef YYLTYPE
201 typedef struct yyltype
202 {
203 int first_line;
204 int first_column;
205 int last_line;
206 int last_column;
207 } yyltype;
208 # define YYLTYPE ]b4_location_type[
209 # define YYLTYPE_IS_TRIVIAL 1
210 #endif
211
212 /* Copy the second part of user declarations. */
213 ]b4_post_prologue
214
215 /* Line __line__ of __file__. */
216 b4_syncline([@oline@], [@ofile@])[
217
218 #if ! defined (yyoverflow) || YYERROR_VERBOSE
219
220 /* The parser invokes alloca or malloc; define the necessary symbols. */
221
222 # if YYSTACK_USE_ALLOCA
223 # define YYSTACK_ALLOC alloca
224 # else
225 # ifndef YYSTACK_USE_ALLOCA
226 # if defined (alloca) || defined (_ALLOCA_H)
227 # define YYSTACK_ALLOC alloca
228 # else
229 # ifdef __GNUC__
230 # define YYSTACK_ALLOC __builtin_alloca
231 # endif
232 # endif
233 # endif
234 # endif
235
236 # ifdef YYSTACK_ALLOC
237 /* Pacify GCC's `empty if-body' warning. */
238 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
239 # else
240 # if defined (__STDC__) || defined (__cplusplus)
241 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
242 # define YYSIZE_T size_t
243 # endif
244 # define YYSTACK_ALLOC malloc
245 # define YYSTACK_FREE free
246 # endif
247 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
248
249
250 #if (! defined (yyoverflow) \
251 && (! defined (__cplusplus) \
252 || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
253
254 /* A type that is properly aligned for any stack member. */
255 union yyalloc
256 {
257 short yyss;
258 YYSTYPE yyvs;
259 ]b4_location_if([ YYLTYPE yyls;
260 ])dnl
261 [};
262
263 /* The size of the maximum gap between one aligned stack and the next. */
264 # define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
265
266 /* The size of an array large to enough to hold all stacks, each with
267 N elements. */
268 ]b4_location_if(
269 [# define YYSTACK_BYTES(N) \
270 ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
271 + 2 * YYSTACK_GAP_MAX)],
272 [# define YYSTACK_BYTES(N) \
273 ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
274 + YYSTACK_GAP_MAX)])[
275
276 /* Copy COUNT objects from FROM to TO. The source and destination do
277 not overlap. */
278 # ifndef YYCOPY
279 # if 1 < __GNUC__
280 # define YYCOPY(To, From, Count) \
281 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
282 # else
283 # define YYCOPY(To, From, Count) \
284 do \
285 { \
286 register YYSIZE_T yyi; \
287 for (yyi = 0; yyi < (Count); yyi++) \
288 (To)[yyi] = (From)[yyi]; \
289 } \
290 while (0)
291 # endif
292 # endif
293
294 /* Relocate STACK from its old location to the new one. The
295 local variables YYSIZE and YYSTACKSIZE give the old and new number of
296 elements in the stack, and YYPTR gives the new location of the
297 stack. Advance YYPTR to a properly aligned location for the next
298 stack. */
299 # define YYSTACK_RELOCATE(Stack) \
300 do \
301 { \
302 YYSIZE_T yynewbytes; \
303 YYCOPY (&yyptr->Stack, Stack, yysize); \
304 Stack = &yyptr->Stack; \
305 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \
306 yyptr += yynewbytes / sizeof (*yyptr); \
307 } \
308 while (0)
309
310 #endif
311
312 #if defined (__STDC__) || defined (__cplusplus)
313 typedef signed char yysigned_char;
314 #else
315 typedef short yysigned_char;
316 #endif
317
318 /* YYFINAL -- State number of the termination state. */
319 #define YYFINAL ]b4_final_state_number[
320 /* YYLAST -- Last index in YYTABLE. */
321 #define YYLAST ]b4_last[
322
323 /* YYNTOKENS -- Number of terminals. */
324 #define YYNTOKENS ]b4_tokens_number[
325 /* YYNNTS -- Number of nonterminals. */
326 #define YYNNTS ]b4_nterms_number[
327 /* YYNRULES -- Number of rules. */
328 #define YYNRULES ]b4_rules_number[
329 /* YYNRULES -- Number of states. */
330 #define YYNSTATES ]b4_states_number[
331
332 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
333 #define YYUNDEFTOK ]b4_undef_token_number[
334 #define YYMAXUTOK ]b4_user_token_number_max[
335
336 #define YYTRANSLATE(YYX) \
337 ((YYX <= 0) ? YYEOF : \
338 (unsigned)(YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
339
340 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
341 static const ]b4_int_type_for([b4_translate])[ yytranslate[] =
342 {
343 ]b4_translate[
344 };
345
346 #if YYDEBUG
347 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
348 YYRHS. */
349 static const ]b4_int_type_for([b4_prhs])[ yyprhs[] =
350 {
351 ]b4_prhs[
352 };
353
354 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
355 static const ]b4_int_type_for([b4_rhs])[ yyrhs[] =
356 {
357 ]b4_rhs[
358 };
359
360 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
361 static const ]b4_int_type_for([b4_rline])[ yyrline[] =
362 {
363 ]b4_rline[
364 };
365 #endif
366
367 #if YYDEBUG || YYERROR_VERBOSE
368 /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
369 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
370 static const char *const yytname[] =
371 {
372 ]b4_tname[
373 };
374 #endif
375
376 # ifdef YYPRINT
377 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
378 token YYLEX-NUM. */
379 static const ]b4_int_type_for([b4_toknum])[ yytoknum[] =
380 {
381 ]b4_toknum[
382 };
383 # endif
384
385 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
386 static const ]b4_int_type_for([b4_r1])[ yyr1[] =
387 {
388 ]b4_r1[
389 };
390
391 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
392 static const ]b4_int_type_for([b4_r2])[ yyr2[] =
393 {
394 ]b4_r2[
395 };
396
397 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
398 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
399 means the default is an error. */
400 static const ]b4_int_type_for([b4_defact])[ yydefact[] =
401 {
402 ]b4_defact[
403 };
404
405 /* YYDEFGOTO[NTERM-NUM]. */
406 static const ]b4_int_type_for([b4_defgoto])[ yydefgoto[] =
407 {
408 ]b4_defgoto[
409 };
410
411 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
412 STATE-NUM. */
413 #define YYPACT_NINF ]b4_pact_ninf[
414 static const ]b4_int_type_for([b4_pact])[ yypact[] =
415 {
416 ]b4_pact[
417 };
418
419 /* YYPGOTO[NTERM-NUM]. */
420 static const ]b4_int_type_for([b4_pgoto])[ yypgoto[] =
421 {
422 ]b4_pgoto[
423 };
424
425 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
426 positive, shift that token. If negative, reduce the rule which
427 number is the opposite. If zero, do what YYDEFACT says.
428 If YYTABLE_NINF, syntax error. */
429 #define YYTABLE_NINF ]b4_table_ninf[
430 static const ]b4_int_type_for([b4_table])[ yytable[] =
431 {
432 ]b4_table[
433 };
434
435 static const ]b4_int_type_for([b4_check])[ yycheck[] =
436 {
437 ]b4_check[
438 };
439
440 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
441 symbol of state STATE-NUM. */
442 static const ]b4_int_type_for([b4_stos])[ yystos[] =
443 {
444 ]b4_stos[
445 };
446
447 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
448 # define YYSIZE_T __SIZE_TYPE__
449 #endif
450 #if ! defined (YYSIZE_T) && defined (size_t)
451 # define YYSIZE_T size_t
452 #endif
453 #if ! defined (YYSIZE_T)
454 # if defined (__STDC__) || defined (__cplusplus)
455 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
456 # define YYSIZE_T size_t
457 # endif
458 #endif
459 #if ! defined (YYSIZE_T)
460 # define YYSIZE_T unsigned int
461 #endif
462
463 #define yyerrok (yyerrstatus = 0)
464 #define yyclearin (yytoken = YYEMPTY)
465 #define YYEMPTY -2
466 #define YYEOF 0
467
468 #define YYACCEPT goto yyacceptlab
469 #define YYABORT goto yyabortlab
470 #define YYERROR goto yyerrlab1
471
472 /* Like YYERROR except do call yyerror. This remains here temporarily
473 to ease the transition to the new meaning of YYERROR, for GCC.
474 Once GCC version 2 has supplanted version 1, this can go. */
475
476 #define YYFAIL goto yyerrlab
477
478 #define YYRECOVERING() (!!yyerrstatus)
479
480 #define YYBACKUP(Token, Value) \
481 do \
482 if (yytoken == YYEMPTY && yylen == 1) \
483 { \
484 yychar = (Token); \
485 yylval = (Value); \
486 yytoken = YYTRANSLATE (yychar); \
487 YYPOPSTACK; \
488 goto yybackup; \
489 } \
490 else \
491 { \
492 yyerror (]b4_yyerror_args["syntax error: cannot back up");\
493 YYERROR; \
494 } \
495 while (0)
496
497 #define YYTERROR 1
498 #define YYERRCODE 256
499
500 /* YYLLOC_DEFAULT -- Compute the default location (before the actions
501 are run). */
502
503 #ifndef YYLLOC_DEFAULT
504 # define YYLLOC_DEFAULT(Current, Rhs, N) \
505 Current.first_line = Rhs[1].first_line; \
506 Current.first_column = Rhs[1].first_column; \
507 Current.last_line = Rhs[N].last_line; \
508 Current.last_column = Rhs[N].last_column;
509 #endif
510
511 /* YYLEX -- calling `yylex' with the right arguments. */
512
513 #ifdef YYLEX_PARAM
514 # define YYLEX yylex (]b4_pure_if([&yylval[]b4_location_if([, &yylloc]), ])[YYLEX_PARAM)
515 #else
516 # define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[
517 #endif
518
519 /* Enable debugging if requested. */
520 #if YYDEBUG
521
522 # ifndef YYFPRINTF
523 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
524 # define YYFPRINTF fprintf
525 # endif
526
527 # define YYDPRINTF(Args) \
528 do { \
529 if (yydebug) \
530 YYFPRINTF Args; \
531 } while (0)
532
533 # define YYDSYMPRINT(Args) \
534 do { \
535 if (yydebug) \
536 yysymprint Args; \
537 } while (0)
538
539 # define YYDSYMPRINTF(Title, Token, Value, Location) \
540 do { \
541 if (yydebug) \
542 { \
543 YYFPRINTF (stderr, "%s ", Title); \
544 yysymprint (stderr, \
545 Token, Value]b4_location_if([, Location])[); \
546 YYFPRINTF (stderr, "\n"); \
547 } \
548 } while (0)
549
550 /* Nonzero means print parse trace. It is left uninitialized so that
551 multiple parsers can coexist. */
552 int yydebug;
553 #else /* !YYDEBUG */
554 # define YYDPRINTF(Args)
555 # define YYDSYMPRINT(Args)
556 # define YYDSYMPRINTF(Title, Token, Value, Location)
557 #endif /* !YYDEBUG */
558
559 /* YYINITDEPTH -- initial size of the parser's stacks. */
560 #ifndef YYINITDEPTH
561 # define YYINITDEPTH ]b4_stack_depth_init[
562 #endif
563
564 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
565 if the built-in stack extension method is used).
566
567 Do not make this value too large; the results are undefined if
568 SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
569 evaluated with infinite-precision integer arithmetic. */
570
571 #if YYMAXDEPTH == 0
572 # undef YYMAXDEPTH
573 #endif
574
575 #ifndef YYMAXDEPTH
576 # define YYMAXDEPTH ]b4_stack_depth_max[
577 #endif
578
579 \f
580
581 #if YYERROR_VERBOSE
582
583 # ifndef yystrlen
584 # if defined (__GLIBC__) && defined (_STRING_H)
585 # define yystrlen strlen
586 # else
587 /* Return the length of YYSTR. */
588 static YYSIZE_T
589 # if defined (__STDC__) || defined (__cplusplus)
590 yystrlen (const char *yystr)
591 # else
592 yystrlen (yystr)
593 const char *yystr;
594 # endif
595 {
596 register const char *yys = yystr;
597
598 while (*yys++ != '\0')
599 continue;
600
601 return yys - yystr - 1;
602 }
603 # endif
604 # endif
605
606 # ifndef yystpcpy
607 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
608 # define yystpcpy stpcpy
609 # else
610 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
611 YYDEST. */
612 static char *
613 # if defined (__STDC__) || defined (__cplusplus)
614 yystpcpy (char *yydest, const char *yysrc)
615 # else
616 yystpcpy (yydest, yysrc)
617 char *yydest;
618 const char *yysrc;
619 # endif
620 {
621 register char *yyd = yydest;
622 register const char *yys = yysrc;
623
624 while ((*yyd++ = *yys++) != '\0')
625 continue;
626
627 return yyd - 1;
628 }
629 # endif
630 # endif
631
632 #endif /* !YYERROR_VERBOSE */
633
634 \f
635
636 #if YYDEBUG
637 ]b4_yysymprint_generate([b4_c_function_def])[
638 #endif /* ! YYDEBUG */
639 ]b4_yydestruct_generate([b4_c_function_def])
640 \f
641
642 /* Prevent warnings from -Wmissing-prototypes. */
643
644 #ifdef YYPARSE_PARAM
645 # if defined (__STDC__) || defined (__cplusplus)
646 int yyparse (void *YYPARSE_PARAM);
647 # else
648 int yyparse ();
649 # endif
650 #else /* ! YYPARSE_PARAM */
651 b4_c_function_decl([yyparse], [int], b4_parse_param)
652 #endif /* ! YYPARSE_PARAM */
653
654
655 m4_divert_push([KILL])# ======================== M4 code.
656 # b4_declare_parser_variables
657 # ---------------------------
658 # Declare the variables that are global, or local to YYPARSE if
659 # pure-parser.
660 m4_define([b4_declare_parser_variables],
661 [/* The lookahead symbol. */
662 int yychar;
663
664 /* The semantic value of the lookahead symbol. */
665 YYSTYPE yylval;
666
667 /* Number of syntax errors so far. */
668 int yynerrs;b4_location_if([
669 /* Location data for the lookahead symbol. */
670 YYLTYPE yylloc;])
671 ])
672 m4_divert_pop([KILL])dnl# ====================== End of M4 code.
673
674 b4_pure_if([],
675 [b4_declare_parser_variables])
676
677
678 /*----------.
679 | yyparse. |
680 `----------*/
681
682 #ifdef YYPARSE_PARAM
683 # if defined (__STDC__) || defined (__cplusplus)
684 int yyparse (void *YYPARSE_PARAM)
685 # else
686 int yyparse (YYPARSE_PARAM)
687 void *YYPARSE_PARAM;
688 # endif
689 #else /* ! YYPARSE_PARAM */
690 b4_c_function_def([yyparse], [int], b4_parse_param)
691 #endif
692 {[
693 ]b4_pure_if([b4_declare_parser_variables])[
694 register int yystate;
695 register int yyn;
696 int yyresult;
697 /* Number of tokens to shift before error messages enabled. */
698 int yyerrstatus;
699 /* Lookahead token as an internal (translated) token number. */
700 int yytoken = 0;
701
702 /* Three stacks and their tools:
703 `yyss': related to states,
704 `yyvs': related to semantic values,
705 `yyls': related to locations.
706
707 Refer to the stacks thru separate pointers, to allow yyoverflow
708 to reallocate them elsewhere. */
709
710 /* The state stack. */
711 short yyssa[YYINITDEPTH];
712 short *yyss = yyssa;
713 register short *yyssp;
714
715 /* The semantic value stack. */
716 YYSTYPE yyvsa[YYINITDEPTH];
717 YYSTYPE *yyvs = yyvsa;
718 register YYSTYPE *yyvsp;
719
720 ]b4_location_if(
721 [[ /* The location stack. */
722 YYLTYPE yylsa[YYINITDEPTH];
723 YYLTYPE *yyls = yylsa;
724 YYLTYPE *yylsp;]])[
725
726 #define YYPOPSTACK (yyvsp--, yyssp--]b4_location_if([, yylsp--])[)
727
728 YYSIZE_T yystacksize = YYINITDEPTH;
729
730 /* The variables used to return semantic value and location from the
731 action routines. */
732 YYSTYPE yyval;
733 ]b4_location_if([ YYLTYPE yyloc;])[
734
735 /* When reducing, the number of symbols on the RHS of the reduced
736 rule. */
737 int yylen;
738
739 YYDPRINTF ((stderr, "Starting parse\n"));
740
741 yystate = 0;
742 yyerrstatus = 0;
743 yynerrs = 0;
744 yychar = yytoken = YYEMPTY; /* Cause a token to be read. */
745
746 /* Initialize stack pointers.
747 Waste one element of value and location stack
748 so that they stay on the same level as the state stack.
749 The wasted elements are never initialized. */
750
751 yyssp = yyss;
752 yyvsp = yyvs;
753 ]b4_location_if([ yylsp = yyls;])[
754 goto yysetstate;
755
756 /*------------------------------------------------------------.
757 | yynewstate -- Push a new state, which is found in yystate. |
758 `------------------------------------------------------------*/
759 yynewstate:
760 /* In all cases, when you get here, the value and location stacks
761 have just been pushed. so pushing a state here evens the stacks.
762 */
763 yyssp++;
764
765 yysetstate:
766 *yyssp = yystate;
767
768 if (yyss + yystacksize - 1 <= yyssp)
769 {
770 /* Get the current used size of the three stacks, in elements. */
771 YYSIZE_T yysize = yyssp - yyss + 1;
772
773 #ifdef yyoverflow
774 {
775 /* Give user a chance to reallocate the stack. Use copies of
776 these so that the &'s don't force the real ones into
777 memory. */
778 YYSTYPE *yyvs1 = yyvs;
779 short *yyss1 = yyss;
780 ]b4_location_if([ YYLTYPE *yyls1 = yyls;])[
781
782 /* Each stack pointer address is followed by the size of the
783 data in use in that stack, in bytes. This used to be a
784 conditional around just the two extra args, but that might
785 be undefined if yyoverflow is a macro. */
786 yyoverflow ("parser stack overflow",
787 &yyss1, yysize * sizeof (*yyssp),
788 &yyvs1, yysize * sizeof (*yyvsp),
789 ]b4_location_if([ &yyls1, yysize * sizeof (*yylsp),])[
790 &yystacksize);
791 ]b4_location_if([ yyls = yyls1;])[
792 yyss = yyss1;
793 yyvs = yyvs1;
794 }
795 #else /* no yyoverflow */
796 # ifndef YYSTACK_RELOCATE
797 goto yyoverflowlab;
798 # else
799 /* Extend the stack our own way. */
800 if (YYMAXDEPTH <= yystacksize)
801 goto yyoverflowlab;
802 yystacksize *= 2;
803 if (YYMAXDEPTH < yystacksize)
804 yystacksize = YYMAXDEPTH;
805
806 {
807 short *yyss1 = yyss;
808 union yyalloc *yyptr =
809 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
810 if (! yyptr)
811 goto yyoverflowlab;
812 YYSTACK_RELOCATE (yyss);
813 YYSTACK_RELOCATE (yyvs);
814 ]b4_location_if([ YYSTACK_RELOCATE (yyls);])[
815 # undef YYSTACK_RELOCATE
816 if (yyss1 != yyssa)
817 YYSTACK_FREE (yyss1);
818 }
819 # endif
820 #endif /* no yyoverflow */
821
822 yyssp = yyss + yysize - 1;
823 yyvsp = yyvs + yysize - 1;
824 ]b4_location_if([ yylsp = yyls + yysize - 1;])[
825
826 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
827 (unsigned long int) yystacksize));
828
829 if (yyss + yystacksize - 1 <= yyssp)
830 YYABORT;
831 }
832
833 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
834
835 goto yybackup;
836
837 /*-----------.
838 | yybackup. |
839 `-----------*/
840 yybackup:
841
842 /* Do appropriate processing given the current state. */
843 /* Read a lookahead token if we need one and don't already have one. */
844 /* yyresume: */
845
846 /* First try to decide what to do without reference to lookahead token. */
847
848 yyn = yypact[yystate];
849 if (yyn == YYPACT_NINF)
850 goto yydefault;
851
852 /* Not known => get a lookahead token if don't already have one. */
853
854 /* YYTOKEN is either YYEMPTY or YYEOF or a valid token. */
855 if (yytoken == YYEMPTY)
856 {
857 YYDPRINTF ((stderr, "Reading a token: "));
858 yychar = YYLEX;
859 yytoken = YYTRANSLATE (yychar);
860 }
861
862 if (yytoken == YYEOF)
863 {
864 YYDPRINTF ((stderr, "Now at end of input.\n"));
865 }
866 else
867 {
868 /* We have to keep this `#if YYDEBUG', since we use variables
869 which are defined only if `YYDEBUG' is set. */
870 YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
871 }
872
873 /* If the proper action on seeing token YYTOKEN is to reduce or to
874 detect an error, take that action. */
875 yyn += yytoken;
876 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
877 goto yydefault;
878 yyn = yytable[yyn];
879 if (yyn <= 0)
880 {
881 if (yyn == 0 || yyn == YYTABLE_NINF)
882 goto yyerrlab;
883 yyn = -yyn;
884 goto yyreduce;
885 }
886
887 if (yyn == YYFINAL)
888 YYACCEPT;
889
890 /* Shift the lookahead token. */
891 YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
892
893 /* Discard the token being shifted unless it is eof. */
894 if (yytoken != YYEOF)
895 yytoken = YYEMPTY;
896
897 *++yyvsp = yylval;
898 ]b4_location_if([ *++yylsp = yylloc;])[
899
900 /* Count tokens shifted since error; after three, turn off error
901 status. */
902 if (yyerrstatus)
903 yyerrstatus--;
904
905 yystate = yyn;
906 goto yynewstate;
907
908
909 /*-----------------------------------------------------------.
910 | yydefault -- do the default action for the current state. |
911 `-----------------------------------------------------------*/
912 yydefault:
913 yyn = yydefact[yystate];
914 if (yyn == 0)
915 goto yyerrlab;
916 goto yyreduce;
917
918
919 /*-----------------------------.
920 | yyreduce -- Do a reduction. |
921 `-----------------------------*/
922 yyreduce:
923 /* yyn is the number of a rule to reduce with. */
924 yylen = yyr2[yyn];
925
926 /* If YYLEN is nonzero, implement the default value of the action:
927 `$$ = $1'.
928
929 Otherwise, the following line sets YYVAL to garbage.
930 This behavior is undocumented and Bison
931 users should not rely upon it. Assigning to YYVAL
932 unconditionally makes the parser a bit smaller, and it avoids a
933 GCC warning that YYVAL may be used uninitialized. */
934 yyval = yyvsp[1-yylen];
935
936 ]b4_location_if(
937 [ /* Default location. */
938 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);])[
939
940 #if YYDEBUG
941 /* We have to keep this `#if YYDEBUG', since we use variables which
942 are defined only if `YYDEBUG' is set. */
943 if (yydebug)
944 {
945 int yyi;
946
947 YYFPRINTF (stderr, "Reducing by rule %d (line %d), ",
948 yyn - 1, yyrline[yyn]);
949
950 /* Print the symbols being reduced, and their result. */
951 for (yyi = yyprhs[yyn]; 0 <= yyrhs[yyi]; yyi++)
952 YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
953 YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyn]]);
954 }
955 #endif
956 switch (yyn)
957 ]{
958 b4_actions
959 }
960
961 /* Line __line__ of __file__. */
962 b4_syncline([@oline@], [@ofile@])
963 \f
964 [ yyvsp -= yylen;
965 yyssp -= yylen;
966 ]b4_location_if([ yylsp -= yylen;])[
967
968 #if YYDEBUG
969 if (yydebug)
970 {
971 short *yyssp1 = yyss - 1;
972 YYFPRINTF (stderr, "state stack now");
973 while (yyssp1 != yyssp)
974 YYFPRINTF (stderr, " %d", *++yyssp1);
975 YYFPRINTF (stderr, "\n");
976 }
977 #endif
978
979 *++yyvsp = yyval;
980 ]b4_location_if([ *++yylsp = yyloc;])[
981
982 /* Now `shift' the result of the reduction. Determine what state
983 that goes to, based on the state we popped back to and the rule
984 number reduced by. */
985
986 yyn = yyr1[yyn];
987
988 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
989 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
990 yystate = yytable[yystate];
991 else
992 yystate = yydefgoto[yyn - YYNTOKENS];
993
994 goto yynewstate;
995
996
997 /*------------------------------------.
998 | yyerrlab -- here on detecting error |
999 `------------------------------------*/
1000 yyerrlab:
1001 /* If not already recovering from an error, report this error. */
1002 if (!yyerrstatus)
1003 {
1004 ++yynerrs;
1005 #if YYERROR_VERBOSE
1006 yyn = yypact[yystate];
1007
1008 if (YYPACT_NINF < yyn && yyn < YYLAST)
1009 {
1010 YYSIZE_T yysize = 0;
1011 int yytype = YYTRANSLATE (yychar);
1012 char *yymsg;
1013 int yyx, yycount;
1014
1015 yycount = 0;
1016 /* Start YYX at -YYN if negative to avoid negative indexes in
1017 YYCHECK. */
1018 for (yyx = yyn < 0 ? -yyn : 0;
1019 yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
1020 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1021 yysize += yystrlen (yytname[yyx]) + 15, yycount++;
1022 yysize += yystrlen ("syntax error, unexpected ") + 1;
1023 yysize += yystrlen (yytname[yytype]);
1024 yymsg = (char *) YYSTACK_ALLOC (yysize);
1025 if (yymsg != 0)
1026 {
1027 char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
1028 yyp = yystpcpy (yyp, yytname[yytype]);
1029
1030 if (yycount < 5)
1031 {
1032 yycount = 0;
1033 for (yyx = yyn < 0 ? -yyn : 0;
1034 yyx < (int) (sizeof (yytname) / sizeof (char *));
1035 yyx++)
1036 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1037 {
1038 const char *yyq = ! yycount ? ", expecting " : " or ";
1039 yyp = yystpcpy (yyp, yyq);
1040 yyp = yystpcpy (yyp, yytname[yyx]);
1041 yycount++;
1042 }
1043 }
1044 yyerror (]b4_yyerror_args[yymsg);
1045 YYSTACK_FREE (yymsg);
1046 }
1047 else
1048 yyerror (]b4_yyerror_args["syntax error; also virtual memory exhausted");
1049 }
1050 else
1051 #endif /* YYERROR_VERBOSE */
1052 yyerror (]b4_yyerror_args["syntax error");
1053 }
1054 goto yyerrlab1;
1055
1056
1057 /*----------------------------------------------------.
1058 | yyerrlab1 -- error raised explicitly by an action. |
1059 `----------------------------------------------------*/
1060 yyerrlab1:
1061 if (yyerrstatus == 3)
1062 {
1063 /* If just tried and failed to reuse lookahead token after an
1064 error, discard it. */
1065
1066 /* Return failure if at end of input. */
1067 if (yytoken == YYEOF)
1068 {
1069 /* Pop the error token. */
1070 YYPOPSTACK;
1071 /* Pop the rest of the stack. */
1072 while (yyss < yyssp)
1073 {
1074 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
1075 yydestruct (yystos[*yyssp], yyvsp]b4_location_if([, yylsp])[);
1076 YYPOPSTACK;
1077 }
1078 YYABORT;
1079 }
1080
1081 YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
1082 yydestruct (yytoken, &yylval]b4_location_if([, &yylloc])[);
1083 yytoken = YYEMPTY;
1084 }
1085
1086 /* Else will try to reuse lookahead token after shifting the error
1087 token. */
1088
1089 yyerrstatus = 3; /* Each real token shifted decrements this. */
1090
1091 for (;;)
1092 {
1093 yyn = yypact[yystate];
1094 if (yyn != YYPACT_NINF)
1095 {
1096 yyn += YYTERROR;
1097 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
1098 {
1099 yyn = yytable[yyn];
1100 if (0 < yyn)
1101 break;
1102 }
1103 }
1104
1105 /* Pop the current state because it cannot handle the error token. */
1106 if (yyssp == yyss)
1107 YYABORT;
1108
1109 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
1110 yydestruct (yystos[yystate], yyvsp]b4_location_if([, yylsp])[);
1111 yyvsp--;
1112 yystate = *--yyssp;
1113 ]b4_location_if([ yylsp--;])[
1114
1115 #if YYDEBUG
1116 if (yydebug)
1117 {
1118 short *yyssp1 = yyss - 1;
1119 YYFPRINTF (stderr, "Error: state stack now");
1120 while (yyssp1 != yyssp)
1121 YYFPRINTF (stderr, " %d", *++yyssp1);
1122 YYFPRINTF (stderr, "\n");
1123 }
1124 #endif
1125 }
1126
1127 if (yyn == YYFINAL)
1128 YYACCEPT;
1129
1130 YYDPRINTF ((stderr, "Shifting error token, "));
1131
1132 *++yyvsp = yylval;
1133 ]b4_location_if([ *++yylsp = yylloc;])[
1134
1135 yystate = yyn;
1136 goto yynewstate;
1137
1138
1139 /*-------------------------------------.
1140 | yyacceptlab -- YYACCEPT comes here. |
1141 `-------------------------------------*/
1142 yyacceptlab:
1143 yyresult = 0;
1144 goto yyreturn;
1145
1146 /*-----------------------------------.
1147 | yyabortlab -- YYABORT comes here. |
1148 `-----------------------------------*/
1149 yyabortlab:
1150 yyresult = 1;
1151 goto yyreturn;
1152
1153 #ifndef yyoverflow
1154 /*----------------------------------------------.
1155 | yyoverflowlab -- parser overflow comes here. |
1156 `----------------------------------------------*/
1157 yyoverflowlab:
1158 yyerror (]b4_yyerror_args["parser stack overflow");
1159 yyresult = 2;
1160 /* Fall through. */
1161 #endif
1162
1163 yyreturn:
1164 #ifndef yyoverflow
1165 if (yyss != yyssa)
1166 YYSTACK_FREE (yyss);
1167 #endif
1168 return yyresult;
1169 ]}
1170
1171
1172 b4_epilogue
1173 m4_if(b4_defines_flag, 0, [],
1174 [@output @output_header_name@
1175 b4_copyright([Skeleton parser for Yacc-like parsing with Bison],
1176 [1984, 1989, 1990, 2000, 2001, 2002])
1177
1178 /* As a special exception, when this file is copied by Bison into a
1179 Bison output file, you may use that output file without restriction.
1180 This special exception was added by the Free Software Foundation
1181 in version 1.24 of Bison. */
1182
1183 b4_token_defines(b4_tokens)
1184
1185 #ifndef YYSTYPE
1186 m4_ifdef([b4_stype],
1187 [b4_syncline([b4_stype_line], [b4_filename])
1188 typedef union b4_stype yystype;
1189 /* Line __line__ of __file__. */
1190 b4_syncline([@oline@], [@ofile@])],
1191 [typedef int yystype;])
1192 # define YYSTYPE yystype
1193 # define YYSTYPE_IS_TRIVIAL 1
1194 #endif
1195
1196 b4_pure_if([],
1197 [extern YYSTYPE b4_prefix[]lval;])
1198
1199 b4_location_if(
1200 [#ifndef YYLTYPE
1201 typedef struct yyltype
1202 {
1203 int first_line;
1204 int first_column;
1205 int last_line;
1206 int last_column;
1207 } yyltype;
1208 # define YYLTYPE yyltype
1209 #endif
1210
1211 m4_if(b4_pure, [0],
1212 [extern YYLTYPE b4_prefix[]lloc;])
1213 ])
1214 ])