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