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