xref: /rk3399_rockchip-uboot/scripts/kconfig/zconf.tab.c_shipped (revision 0a9064fb47bb0a239c04b0b63edebfdd3a201fdc)
1*0a9064fbSMasahiro Yamada/* A Bison parser, made by GNU Bison 2.5.  */
2*0a9064fbSMasahiro Yamada
3*0a9064fbSMasahiro Yamada/* Bison implementation for Yacc-like parsers in C
4*0a9064fbSMasahiro Yamada
5*0a9064fbSMasahiro Yamada      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
6*0a9064fbSMasahiro Yamada
7*0a9064fbSMasahiro Yamada   This program is free software: you can redistribute it and/or modify
8*0a9064fbSMasahiro Yamada   it under the terms of the GNU General Public License as published by
9*0a9064fbSMasahiro Yamada   the Free Software Foundation, either version 3 of the License, or
10*0a9064fbSMasahiro Yamada   (at your option) any later version.
11*0a9064fbSMasahiro Yamada
12*0a9064fbSMasahiro Yamada   This program is distributed in the hope that it will be useful,
13*0a9064fbSMasahiro Yamada   but WITHOUT ANY WARRANTY; without even the implied warranty of
14*0a9064fbSMasahiro Yamada   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15*0a9064fbSMasahiro Yamada   GNU General Public License for more details.
16*0a9064fbSMasahiro Yamada
17*0a9064fbSMasahiro Yamada   You should have received a copy of the GNU General Public License
18*0a9064fbSMasahiro Yamada   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19*0a9064fbSMasahiro Yamada
20*0a9064fbSMasahiro Yamada/* As a special exception, you may create a larger work that contains
21*0a9064fbSMasahiro Yamada   part or all of the Bison parser skeleton and distribute that work
22*0a9064fbSMasahiro Yamada   under terms of your choice, so long as that work isn't itself a
23*0a9064fbSMasahiro Yamada   parser generator using the skeleton or a modified version thereof
24*0a9064fbSMasahiro Yamada   as a parser skeleton.  Alternatively, if you modify or redistribute
25*0a9064fbSMasahiro Yamada   the parser skeleton itself, you may (at your option) remove this
26*0a9064fbSMasahiro Yamada   special exception, which will cause the skeleton and the resulting
27*0a9064fbSMasahiro Yamada   Bison output files to be licensed under the GNU General Public
28*0a9064fbSMasahiro Yamada   License without this special exception.
29*0a9064fbSMasahiro Yamada
30*0a9064fbSMasahiro Yamada   This special exception was added by the Free Software Foundation in
31*0a9064fbSMasahiro Yamada   version 2.2 of Bison.  */
32*0a9064fbSMasahiro Yamada
33*0a9064fbSMasahiro Yamada/* C LALR(1) parser skeleton written by Richard Stallman, by
34*0a9064fbSMasahiro Yamada   simplifying the original so-called "semantic" parser.  */
35*0a9064fbSMasahiro Yamada
36*0a9064fbSMasahiro Yamada/* All symbols defined below should begin with yy or YY, to avoid
37*0a9064fbSMasahiro Yamada   infringing on user name space.  This should be done even for local
38*0a9064fbSMasahiro Yamada   variables, as they might otherwise be expanded by user macros.
39*0a9064fbSMasahiro Yamada   There are some unavoidable exceptions within include files to
40*0a9064fbSMasahiro Yamada   define necessary library symbols; they are noted "INFRINGES ON
41*0a9064fbSMasahiro Yamada   USER NAME SPACE" below.  */
42*0a9064fbSMasahiro Yamada
43*0a9064fbSMasahiro Yamada/* Identify Bison output.  */
44*0a9064fbSMasahiro Yamada#define YYBISON 1
45*0a9064fbSMasahiro Yamada
46*0a9064fbSMasahiro Yamada/* Bison version.  */
47*0a9064fbSMasahiro Yamada#define YYBISON_VERSION "2.5"
48*0a9064fbSMasahiro Yamada
49*0a9064fbSMasahiro Yamada/* Skeleton name.  */
50*0a9064fbSMasahiro Yamada#define YYSKELETON_NAME "yacc.c"
51*0a9064fbSMasahiro Yamada
52*0a9064fbSMasahiro Yamada/* Pure parsers.  */
53*0a9064fbSMasahiro Yamada#define YYPURE 0
54*0a9064fbSMasahiro Yamada
55*0a9064fbSMasahiro Yamada/* Push parsers.  */
56*0a9064fbSMasahiro Yamada#define YYPUSH 0
57*0a9064fbSMasahiro Yamada
58*0a9064fbSMasahiro Yamada/* Pull parsers.  */
59*0a9064fbSMasahiro Yamada#define YYPULL 1
60*0a9064fbSMasahiro Yamada
61*0a9064fbSMasahiro Yamada/* Using locations.  */
62*0a9064fbSMasahiro Yamada#define YYLSP_NEEDED 0
63*0a9064fbSMasahiro Yamada
64*0a9064fbSMasahiro Yamada/* Substitute the variable and function names.  */
65*0a9064fbSMasahiro Yamada#define yyparse         zconfparse
66*0a9064fbSMasahiro Yamada#define yylex           zconflex
67*0a9064fbSMasahiro Yamada#define yyerror         zconferror
68*0a9064fbSMasahiro Yamada#define yylval          zconflval
69*0a9064fbSMasahiro Yamada#define yychar          zconfchar
70*0a9064fbSMasahiro Yamada#define yydebug         zconfdebug
71*0a9064fbSMasahiro Yamada#define yynerrs         zconfnerrs
72*0a9064fbSMasahiro Yamada
73*0a9064fbSMasahiro Yamada
74*0a9064fbSMasahiro Yamada/* Copy the first part of user declarations.  */
75*0a9064fbSMasahiro Yamada
76*0a9064fbSMasahiro Yamada
77*0a9064fbSMasahiro Yamada/*
78*0a9064fbSMasahiro Yamada * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
79*0a9064fbSMasahiro Yamada * Released under the terms of the GNU GPL v2.0.
80*0a9064fbSMasahiro Yamada */
81*0a9064fbSMasahiro Yamada
82*0a9064fbSMasahiro Yamada#include <ctype.h>
83*0a9064fbSMasahiro Yamada#include <stdarg.h>
84*0a9064fbSMasahiro Yamada#include <stdio.h>
85*0a9064fbSMasahiro Yamada#include <stdlib.h>
86*0a9064fbSMasahiro Yamada#include <string.h>
87*0a9064fbSMasahiro Yamada#include <stdbool.h>
88*0a9064fbSMasahiro Yamada
89*0a9064fbSMasahiro Yamada#include "lkc.h"
90*0a9064fbSMasahiro Yamada
91*0a9064fbSMasahiro Yamada#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)
92*0a9064fbSMasahiro Yamada
93*0a9064fbSMasahiro Yamada#define PRINTD		0x0001
94*0a9064fbSMasahiro Yamada#define DEBUG_PARSE	0x0002
95*0a9064fbSMasahiro Yamada
96*0a9064fbSMasahiro Yamadaint cdebug = PRINTD;
97*0a9064fbSMasahiro Yamada
98*0a9064fbSMasahiro Yamadaextern int zconflex(void);
99*0a9064fbSMasahiro Yamadastatic void zconfprint(const char *err, ...);
100*0a9064fbSMasahiro Yamadastatic void zconf_error(const char *err, ...);
101*0a9064fbSMasahiro Yamadastatic void zconferror(const char *err);
102*0a9064fbSMasahiro Yamadastatic bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken);
103*0a9064fbSMasahiro Yamada
104*0a9064fbSMasahiro Yamadastruct symbol *symbol_hash[SYMBOL_HASHSIZE];
105*0a9064fbSMasahiro Yamada
106*0a9064fbSMasahiro Yamadastatic struct menu *current_menu, *current_entry;
107*0a9064fbSMasahiro Yamada
108*0a9064fbSMasahiro Yamada
109*0a9064fbSMasahiro Yamada
110*0a9064fbSMasahiro Yamada
111*0a9064fbSMasahiro Yamada/* Enabling traces.  */
112*0a9064fbSMasahiro Yamada#ifndef YYDEBUG
113*0a9064fbSMasahiro Yamada# define YYDEBUG 1
114*0a9064fbSMasahiro Yamada#endif
115*0a9064fbSMasahiro Yamada
116*0a9064fbSMasahiro Yamada/* Enabling verbose error messages.  */
117*0a9064fbSMasahiro Yamada#ifdef YYERROR_VERBOSE
118*0a9064fbSMasahiro Yamada# undef YYERROR_VERBOSE
119*0a9064fbSMasahiro Yamada# define YYERROR_VERBOSE 1
120*0a9064fbSMasahiro Yamada#else
121*0a9064fbSMasahiro Yamada# define YYERROR_VERBOSE 0
122*0a9064fbSMasahiro Yamada#endif
123*0a9064fbSMasahiro Yamada
124*0a9064fbSMasahiro Yamada/* Enabling the token table.  */
125*0a9064fbSMasahiro Yamada#ifndef YYTOKEN_TABLE
126*0a9064fbSMasahiro Yamada# define YYTOKEN_TABLE 0
127*0a9064fbSMasahiro Yamada#endif
128*0a9064fbSMasahiro Yamada
129*0a9064fbSMasahiro Yamada
130*0a9064fbSMasahiro Yamada/* Tokens.  */
131*0a9064fbSMasahiro Yamada#ifndef YYTOKENTYPE
132*0a9064fbSMasahiro Yamada# define YYTOKENTYPE
133*0a9064fbSMasahiro Yamada   /* Put the tokens into the symbol table, so that GDB and other debuggers
134*0a9064fbSMasahiro Yamada      know about them.  */
135*0a9064fbSMasahiro Yamada   enum yytokentype {
136*0a9064fbSMasahiro Yamada     T_MAINMENU = 258,
137*0a9064fbSMasahiro Yamada     T_MENU = 259,
138*0a9064fbSMasahiro Yamada     T_ENDMENU = 260,
139*0a9064fbSMasahiro Yamada     T_SOURCE = 261,
140*0a9064fbSMasahiro Yamada     T_CHOICE = 262,
141*0a9064fbSMasahiro Yamada     T_ENDCHOICE = 263,
142*0a9064fbSMasahiro Yamada     T_COMMENT = 264,
143*0a9064fbSMasahiro Yamada     T_CONFIG = 265,
144*0a9064fbSMasahiro Yamada     T_MENUCONFIG = 266,
145*0a9064fbSMasahiro Yamada     T_HELP = 267,
146*0a9064fbSMasahiro Yamada     T_HELPTEXT = 268,
147*0a9064fbSMasahiro Yamada     T_IF = 269,
148*0a9064fbSMasahiro Yamada     T_ENDIF = 270,
149*0a9064fbSMasahiro Yamada     T_DEPENDS = 271,
150*0a9064fbSMasahiro Yamada     T_OPTIONAL = 272,
151*0a9064fbSMasahiro Yamada     T_PROMPT = 273,
152*0a9064fbSMasahiro Yamada     T_TYPE = 274,
153*0a9064fbSMasahiro Yamada     T_DEFAULT = 275,
154*0a9064fbSMasahiro Yamada     T_SELECT = 276,
155*0a9064fbSMasahiro Yamada     T_RANGE = 277,
156*0a9064fbSMasahiro Yamada     T_VISIBLE = 278,
157*0a9064fbSMasahiro Yamada     T_OPTION = 279,
158*0a9064fbSMasahiro Yamada     T_ON = 280,
159*0a9064fbSMasahiro Yamada     T_WORD = 281,
160*0a9064fbSMasahiro Yamada     T_WORD_QUOTE = 282,
161*0a9064fbSMasahiro Yamada     T_UNEQUAL = 283,
162*0a9064fbSMasahiro Yamada     T_CLOSE_PAREN = 284,
163*0a9064fbSMasahiro Yamada     T_OPEN_PAREN = 285,
164*0a9064fbSMasahiro Yamada     T_EOL = 286,
165*0a9064fbSMasahiro Yamada     T_OR = 287,
166*0a9064fbSMasahiro Yamada     T_AND = 288,
167*0a9064fbSMasahiro Yamada     T_EQUAL = 289,
168*0a9064fbSMasahiro Yamada     T_NOT = 290
169*0a9064fbSMasahiro Yamada   };
170*0a9064fbSMasahiro Yamada#endif
171*0a9064fbSMasahiro Yamada
172*0a9064fbSMasahiro Yamada
173*0a9064fbSMasahiro Yamada
174*0a9064fbSMasahiro Yamada#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
175*0a9064fbSMasahiro Yamadatypedef union YYSTYPE
176*0a9064fbSMasahiro Yamada{
177*0a9064fbSMasahiro Yamada
178*0a9064fbSMasahiro Yamada
179*0a9064fbSMasahiro Yamada	char *string;
180*0a9064fbSMasahiro Yamada	struct file *file;
181*0a9064fbSMasahiro Yamada	struct symbol *symbol;
182*0a9064fbSMasahiro Yamada	struct expr *expr;
183*0a9064fbSMasahiro Yamada	struct menu *menu;
184*0a9064fbSMasahiro Yamada	const struct kconf_id *id;
185*0a9064fbSMasahiro Yamada
186*0a9064fbSMasahiro Yamada
187*0a9064fbSMasahiro Yamada
188*0a9064fbSMasahiro Yamada} YYSTYPE;
189*0a9064fbSMasahiro Yamada# define YYSTYPE_IS_TRIVIAL 1
190*0a9064fbSMasahiro Yamada# define yystype YYSTYPE /* obsolescent; will be withdrawn */
191*0a9064fbSMasahiro Yamada# define YYSTYPE_IS_DECLARED 1
192*0a9064fbSMasahiro Yamada#endif
193*0a9064fbSMasahiro Yamada
194*0a9064fbSMasahiro Yamada
195*0a9064fbSMasahiro Yamada/* Copy the second part of user declarations.  */
196*0a9064fbSMasahiro Yamada
197*0a9064fbSMasahiro Yamada
198*0a9064fbSMasahiro Yamada/* Include zconf.hash.c here so it can see the token constants. */
199*0a9064fbSMasahiro Yamada#include "zconf.hash.c"
200*0a9064fbSMasahiro Yamada
201*0a9064fbSMasahiro Yamada
202*0a9064fbSMasahiro Yamada
203*0a9064fbSMasahiro Yamada#ifdef short
204*0a9064fbSMasahiro Yamada# undef short
205*0a9064fbSMasahiro Yamada#endif
206*0a9064fbSMasahiro Yamada
207*0a9064fbSMasahiro Yamada#ifdef YYTYPE_UINT8
208*0a9064fbSMasahiro Yamadatypedef YYTYPE_UINT8 yytype_uint8;
209*0a9064fbSMasahiro Yamada#else
210*0a9064fbSMasahiro Yamadatypedef unsigned char yytype_uint8;
211*0a9064fbSMasahiro Yamada#endif
212*0a9064fbSMasahiro Yamada
213*0a9064fbSMasahiro Yamada#ifdef YYTYPE_INT8
214*0a9064fbSMasahiro Yamadatypedef YYTYPE_INT8 yytype_int8;
215*0a9064fbSMasahiro Yamada#elif (defined __STDC__ || defined __C99__FUNC__ \
216*0a9064fbSMasahiro Yamada     || defined __cplusplus || defined _MSC_VER)
217*0a9064fbSMasahiro Yamadatypedef signed char yytype_int8;
218*0a9064fbSMasahiro Yamada#else
219*0a9064fbSMasahiro Yamadatypedef short int yytype_int8;
220*0a9064fbSMasahiro Yamada#endif
221*0a9064fbSMasahiro Yamada
222*0a9064fbSMasahiro Yamada#ifdef YYTYPE_UINT16
223*0a9064fbSMasahiro Yamadatypedef YYTYPE_UINT16 yytype_uint16;
224*0a9064fbSMasahiro Yamada#else
225*0a9064fbSMasahiro Yamadatypedef unsigned short int yytype_uint16;
226*0a9064fbSMasahiro Yamada#endif
227*0a9064fbSMasahiro Yamada
228*0a9064fbSMasahiro Yamada#ifdef YYTYPE_INT16
229*0a9064fbSMasahiro Yamadatypedef YYTYPE_INT16 yytype_int16;
230*0a9064fbSMasahiro Yamada#else
231*0a9064fbSMasahiro Yamadatypedef short int yytype_int16;
232*0a9064fbSMasahiro Yamada#endif
233*0a9064fbSMasahiro Yamada
234*0a9064fbSMasahiro Yamada#ifndef YYSIZE_T
235*0a9064fbSMasahiro Yamada# ifdef __SIZE_TYPE__
236*0a9064fbSMasahiro Yamada#  define YYSIZE_T __SIZE_TYPE__
237*0a9064fbSMasahiro Yamada# elif defined size_t
238*0a9064fbSMasahiro Yamada#  define YYSIZE_T size_t
239*0a9064fbSMasahiro Yamada# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
240*0a9064fbSMasahiro Yamada     || defined __cplusplus || defined _MSC_VER)
241*0a9064fbSMasahiro Yamada#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
242*0a9064fbSMasahiro Yamada#  define YYSIZE_T size_t
243*0a9064fbSMasahiro Yamada# else
244*0a9064fbSMasahiro Yamada#  define YYSIZE_T unsigned int
245*0a9064fbSMasahiro Yamada# endif
246*0a9064fbSMasahiro Yamada#endif
247*0a9064fbSMasahiro Yamada
248*0a9064fbSMasahiro Yamada#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
249*0a9064fbSMasahiro Yamada
250*0a9064fbSMasahiro Yamada#ifndef YY_
251*0a9064fbSMasahiro Yamada# if defined YYENABLE_NLS && YYENABLE_NLS
252*0a9064fbSMasahiro Yamada#  if ENABLE_NLS
253*0a9064fbSMasahiro Yamada#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
254*0a9064fbSMasahiro Yamada#   define YY_(msgid) dgettext ("bison-runtime", msgid)
255*0a9064fbSMasahiro Yamada#  endif
256*0a9064fbSMasahiro Yamada# endif
257*0a9064fbSMasahiro Yamada# ifndef YY_
258*0a9064fbSMasahiro Yamada#  define YY_(msgid) msgid
259*0a9064fbSMasahiro Yamada# endif
260*0a9064fbSMasahiro Yamada#endif
261*0a9064fbSMasahiro Yamada
262*0a9064fbSMasahiro Yamada/* Suppress unused-variable warnings by "using" E.  */
263*0a9064fbSMasahiro Yamada#if ! defined lint || defined __GNUC__
264*0a9064fbSMasahiro Yamada# define YYUSE(e) ((void) (e))
265*0a9064fbSMasahiro Yamada#else
266*0a9064fbSMasahiro Yamada# define YYUSE(e) /* empty */
267*0a9064fbSMasahiro Yamada#endif
268*0a9064fbSMasahiro Yamada
269*0a9064fbSMasahiro Yamada/* Identity function, used to suppress warnings about constant conditions.  */
270*0a9064fbSMasahiro Yamada#ifndef lint
271*0a9064fbSMasahiro Yamada# define YYID(n) (n)
272*0a9064fbSMasahiro Yamada#else
273*0a9064fbSMasahiro Yamada#if (defined __STDC__ || defined __C99__FUNC__ \
274*0a9064fbSMasahiro Yamada     || defined __cplusplus || defined _MSC_VER)
275*0a9064fbSMasahiro Yamadastatic int
276*0a9064fbSMasahiro YamadaYYID (int yyi)
277*0a9064fbSMasahiro Yamada#else
278*0a9064fbSMasahiro Yamadastatic int
279*0a9064fbSMasahiro YamadaYYID (yyi)
280*0a9064fbSMasahiro Yamada    int yyi;
281*0a9064fbSMasahiro Yamada#endif
282*0a9064fbSMasahiro Yamada{
283*0a9064fbSMasahiro Yamada  return yyi;
284*0a9064fbSMasahiro Yamada}
285*0a9064fbSMasahiro Yamada#endif
286*0a9064fbSMasahiro Yamada
287*0a9064fbSMasahiro Yamada#if ! defined yyoverflow || YYERROR_VERBOSE
288*0a9064fbSMasahiro Yamada
289*0a9064fbSMasahiro Yamada/* The parser invokes alloca or malloc; define the necessary symbols.  */
290*0a9064fbSMasahiro Yamada
291*0a9064fbSMasahiro Yamada# ifdef YYSTACK_USE_ALLOCA
292*0a9064fbSMasahiro Yamada#  if YYSTACK_USE_ALLOCA
293*0a9064fbSMasahiro Yamada#   ifdef __GNUC__
294*0a9064fbSMasahiro Yamada#    define YYSTACK_ALLOC __builtin_alloca
295*0a9064fbSMasahiro Yamada#   elif defined __BUILTIN_VA_ARG_INCR
296*0a9064fbSMasahiro Yamada#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
297*0a9064fbSMasahiro Yamada#   elif defined _AIX
298*0a9064fbSMasahiro Yamada#    define YYSTACK_ALLOC __alloca
299*0a9064fbSMasahiro Yamada#   elif defined _MSC_VER
300*0a9064fbSMasahiro Yamada#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
301*0a9064fbSMasahiro Yamada#    define alloca _alloca
302*0a9064fbSMasahiro Yamada#   else
303*0a9064fbSMasahiro Yamada#    define YYSTACK_ALLOC alloca
304*0a9064fbSMasahiro Yamada#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
305*0a9064fbSMasahiro Yamada     || defined __cplusplus || defined _MSC_VER)
306*0a9064fbSMasahiro Yamada#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
307*0a9064fbSMasahiro Yamada#     ifndef EXIT_SUCCESS
308*0a9064fbSMasahiro Yamada#      define EXIT_SUCCESS 0
309*0a9064fbSMasahiro Yamada#     endif
310*0a9064fbSMasahiro Yamada#    endif
311*0a9064fbSMasahiro Yamada#   endif
312*0a9064fbSMasahiro Yamada#  endif
313*0a9064fbSMasahiro Yamada# endif
314*0a9064fbSMasahiro Yamada
315*0a9064fbSMasahiro Yamada# ifdef YYSTACK_ALLOC
316*0a9064fbSMasahiro Yamada   /* Pacify GCC's `empty if-body' warning.  */
317*0a9064fbSMasahiro Yamada#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
318*0a9064fbSMasahiro Yamada#  ifndef YYSTACK_ALLOC_MAXIMUM
319*0a9064fbSMasahiro Yamada    /* The OS might guarantee only one guard page at the bottom of the stack,
320*0a9064fbSMasahiro Yamada       and a page size can be as small as 4096 bytes.  So we cannot safely
321*0a9064fbSMasahiro Yamada       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
322*0a9064fbSMasahiro Yamada       to allow for a few compiler-allocated temporary stack slots.  */
323*0a9064fbSMasahiro Yamada#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
324*0a9064fbSMasahiro Yamada#  endif
325*0a9064fbSMasahiro Yamada# else
326*0a9064fbSMasahiro Yamada#  define YYSTACK_ALLOC YYMALLOC
327*0a9064fbSMasahiro Yamada#  define YYSTACK_FREE YYFREE
328*0a9064fbSMasahiro Yamada#  ifndef YYSTACK_ALLOC_MAXIMUM
329*0a9064fbSMasahiro Yamada#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
330*0a9064fbSMasahiro Yamada#  endif
331*0a9064fbSMasahiro Yamada#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
332*0a9064fbSMasahiro Yamada       && ! ((defined YYMALLOC || defined malloc) \
333*0a9064fbSMasahiro Yamada	     && (defined YYFREE || defined free)))
334*0a9064fbSMasahiro Yamada#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
335*0a9064fbSMasahiro Yamada#   ifndef EXIT_SUCCESS
336*0a9064fbSMasahiro Yamada#    define EXIT_SUCCESS 0
337*0a9064fbSMasahiro Yamada#   endif
338*0a9064fbSMasahiro Yamada#  endif
339*0a9064fbSMasahiro Yamada#  ifndef YYMALLOC
340*0a9064fbSMasahiro Yamada#   define YYMALLOC malloc
341*0a9064fbSMasahiro Yamada#   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
342*0a9064fbSMasahiro Yamada     || defined __cplusplus || defined _MSC_VER)
343*0a9064fbSMasahiro Yamadavoid *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
344*0a9064fbSMasahiro Yamada#   endif
345*0a9064fbSMasahiro Yamada#  endif
346*0a9064fbSMasahiro Yamada#  ifndef YYFREE
347*0a9064fbSMasahiro Yamada#   define YYFREE free
348*0a9064fbSMasahiro Yamada#   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
349*0a9064fbSMasahiro Yamada     || defined __cplusplus || defined _MSC_VER)
350*0a9064fbSMasahiro Yamadavoid free (void *); /* INFRINGES ON USER NAME SPACE */
351*0a9064fbSMasahiro Yamada#   endif
352*0a9064fbSMasahiro Yamada#  endif
353*0a9064fbSMasahiro Yamada# endif
354*0a9064fbSMasahiro Yamada#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
355*0a9064fbSMasahiro Yamada
356*0a9064fbSMasahiro Yamada
357*0a9064fbSMasahiro Yamada#if (! defined yyoverflow \
358*0a9064fbSMasahiro Yamada     && (! defined __cplusplus \
359*0a9064fbSMasahiro Yamada	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
360*0a9064fbSMasahiro Yamada
361*0a9064fbSMasahiro Yamada/* A type that is properly aligned for any stack member.  */
362*0a9064fbSMasahiro Yamadaunion yyalloc
363*0a9064fbSMasahiro Yamada{
364*0a9064fbSMasahiro Yamada  yytype_int16 yyss_alloc;
365*0a9064fbSMasahiro Yamada  YYSTYPE yyvs_alloc;
366*0a9064fbSMasahiro Yamada};
367*0a9064fbSMasahiro Yamada
368*0a9064fbSMasahiro Yamada/* The size of the maximum gap between one aligned stack and the next.  */
369*0a9064fbSMasahiro Yamada# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
370*0a9064fbSMasahiro Yamada
371*0a9064fbSMasahiro Yamada/* The size of an array large to enough to hold all stacks, each with
372*0a9064fbSMasahiro Yamada   N elements.  */
373*0a9064fbSMasahiro Yamada# define YYSTACK_BYTES(N) \
374*0a9064fbSMasahiro Yamada     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
375*0a9064fbSMasahiro Yamada      + YYSTACK_GAP_MAXIMUM)
376*0a9064fbSMasahiro Yamada
377*0a9064fbSMasahiro Yamada# define YYCOPY_NEEDED 1
378*0a9064fbSMasahiro Yamada
379*0a9064fbSMasahiro Yamada/* Relocate STACK from its old location to the new one.  The
380*0a9064fbSMasahiro Yamada   local variables YYSIZE and YYSTACKSIZE give the old and new number of
381*0a9064fbSMasahiro Yamada   elements in the stack, and YYPTR gives the new location of the
382*0a9064fbSMasahiro Yamada   stack.  Advance YYPTR to a properly aligned location for the next
383*0a9064fbSMasahiro Yamada   stack.  */
384*0a9064fbSMasahiro Yamada# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
385*0a9064fbSMasahiro Yamada    do									\
386*0a9064fbSMasahiro Yamada      {									\
387*0a9064fbSMasahiro Yamada	YYSIZE_T yynewbytes;						\
388*0a9064fbSMasahiro Yamada	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
389*0a9064fbSMasahiro Yamada	Stack = &yyptr->Stack_alloc;					\
390*0a9064fbSMasahiro Yamada	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
391*0a9064fbSMasahiro Yamada	yyptr += yynewbytes / sizeof (*yyptr);				\
392*0a9064fbSMasahiro Yamada      }									\
393*0a9064fbSMasahiro Yamada    while (YYID (0))
394*0a9064fbSMasahiro Yamada
395*0a9064fbSMasahiro Yamada#endif
396*0a9064fbSMasahiro Yamada
397*0a9064fbSMasahiro Yamada#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
398*0a9064fbSMasahiro Yamada/* Copy COUNT objects from FROM to TO.  The source and destination do
399*0a9064fbSMasahiro Yamada   not overlap.  */
400*0a9064fbSMasahiro Yamada# ifndef YYCOPY
401*0a9064fbSMasahiro Yamada#  if defined __GNUC__ && 1 < __GNUC__
402*0a9064fbSMasahiro Yamada#   define YYCOPY(To, From, Count) \
403*0a9064fbSMasahiro Yamada      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
404*0a9064fbSMasahiro Yamada#  else
405*0a9064fbSMasahiro Yamada#   define YYCOPY(To, From, Count)		\
406*0a9064fbSMasahiro Yamada      do					\
407*0a9064fbSMasahiro Yamada	{					\
408*0a9064fbSMasahiro Yamada	  YYSIZE_T yyi;				\
409*0a9064fbSMasahiro Yamada	  for (yyi = 0; yyi < (Count); yyi++)	\
410*0a9064fbSMasahiro Yamada	    (To)[yyi] = (From)[yyi];		\
411*0a9064fbSMasahiro Yamada	}					\
412*0a9064fbSMasahiro Yamada      while (YYID (0))
413*0a9064fbSMasahiro Yamada#  endif
414*0a9064fbSMasahiro Yamada# endif
415*0a9064fbSMasahiro Yamada#endif /* !YYCOPY_NEEDED */
416*0a9064fbSMasahiro Yamada
417*0a9064fbSMasahiro Yamada/* YYFINAL -- State number of the termination state.  */
418*0a9064fbSMasahiro Yamada#define YYFINAL  11
419*0a9064fbSMasahiro Yamada/* YYLAST -- Last index in YYTABLE.  */
420*0a9064fbSMasahiro Yamada#define YYLAST   290
421*0a9064fbSMasahiro Yamada
422*0a9064fbSMasahiro Yamada/* YYNTOKENS -- Number of terminals.  */
423*0a9064fbSMasahiro Yamada#define YYNTOKENS  36
424*0a9064fbSMasahiro Yamada/* YYNNTS -- Number of nonterminals.  */
425*0a9064fbSMasahiro Yamada#define YYNNTS  50
426*0a9064fbSMasahiro Yamada/* YYNRULES -- Number of rules.  */
427*0a9064fbSMasahiro Yamada#define YYNRULES  118
428*0a9064fbSMasahiro Yamada/* YYNRULES -- Number of states.  */
429*0a9064fbSMasahiro Yamada#define YYNSTATES  191
430*0a9064fbSMasahiro Yamada
431*0a9064fbSMasahiro Yamada/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
432*0a9064fbSMasahiro Yamada#define YYUNDEFTOK  2
433*0a9064fbSMasahiro Yamada#define YYMAXUTOK   290
434*0a9064fbSMasahiro Yamada
435*0a9064fbSMasahiro Yamada#define YYTRANSLATE(YYX)						\
436*0a9064fbSMasahiro Yamada  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
437*0a9064fbSMasahiro Yamada
438*0a9064fbSMasahiro Yamada/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
439*0a9064fbSMasahiro Yamadastatic const yytype_uint8 yytranslate[] =
440*0a9064fbSMasahiro Yamada{
441*0a9064fbSMasahiro Yamada       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
442*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
443*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
444*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
445*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
446*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
447*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
448*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
449*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
450*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
451*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
452*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
453*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
454*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
455*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
456*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
457*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
458*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
459*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
460*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
461*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
462*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
463*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
464*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
465*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
466*0a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
467*0a9064fbSMasahiro Yamada       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
468*0a9064fbSMasahiro Yamada      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
469*0a9064fbSMasahiro Yamada      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
470*0a9064fbSMasahiro Yamada      35
471*0a9064fbSMasahiro Yamada};
472*0a9064fbSMasahiro Yamada
473*0a9064fbSMasahiro Yamada#if YYDEBUG
474*0a9064fbSMasahiro Yamada/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
475*0a9064fbSMasahiro Yamada   YYRHS.  */
476*0a9064fbSMasahiro Yamadastatic const yytype_uint16 yyprhs[] =
477*0a9064fbSMasahiro Yamada{
478*0a9064fbSMasahiro Yamada       0,     0,     3,     6,     8,    11,    13,    14,    17,    20,
479*0a9064fbSMasahiro Yamada      23,    26,    31,    36,    40,    42,    44,    46,    48,    50,
480*0a9064fbSMasahiro Yamada      52,    54,    56,    58,    60,    62,    64,    66,    68,    72,
481*0a9064fbSMasahiro Yamada      75,    79,    82,    86,    89,    90,    93,    96,    99,   102,
482*0a9064fbSMasahiro Yamada     105,   108,   112,   117,   122,   127,   133,   137,   138,   142,
483*0a9064fbSMasahiro Yamada     143,   146,   150,   153,   155,   159,   160,   163,   166,   169,
484*0a9064fbSMasahiro Yamada     172,   175,   180,   184,   187,   192,   193,   196,   200,   202,
485*0a9064fbSMasahiro Yamada     206,   207,   210,   213,   216,   220,   224,   228,   230,   234,
486*0a9064fbSMasahiro Yamada     235,   238,   241,   244,   248,   252,   255,   258,   261,   262,
487*0a9064fbSMasahiro Yamada     265,   268,   271,   276,   277,   280,   283,   286,   287,   290,
488*0a9064fbSMasahiro Yamada     292,   294,   297,   300,   303,   305,   308,   309,   312,   314,
489*0a9064fbSMasahiro Yamada     318,   322,   326,   329,   333,   337,   339,   341,   342
490*0a9064fbSMasahiro Yamada};
491*0a9064fbSMasahiro Yamada
492*0a9064fbSMasahiro Yamada/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
493*0a9064fbSMasahiro Yamadastatic const yytype_int8 yyrhs[] =
494*0a9064fbSMasahiro Yamada{
495*0a9064fbSMasahiro Yamada      37,     0,    -1,    81,    38,    -1,    38,    -1,    63,    39,
496*0a9064fbSMasahiro Yamada      -1,    39,    -1,    -1,    39,    41,    -1,    39,    55,    -1,
497*0a9064fbSMasahiro Yamada      39,    67,    -1,    39,    80,    -1,    39,    26,     1,    31,
498*0a9064fbSMasahiro Yamada      -1,    39,    40,     1,    31,    -1,    39,     1,    31,    -1,
499*0a9064fbSMasahiro Yamada      16,    -1,    18,    -1,    19,    -1,    21,    -1,    17,    -1,
500*0a9064fbSMasahiro Yamada      22,    -1,    20,    -1,    23,    -1,    31,    -1,    61,    -1,
501*0a9064fbSMasahiro Yamada      71,    -1,    44,    -1,    46,    -1,    69,    -1,    26,     1,
502*0a9064fbSMasahiro Yamada      31,    -1,     1,    31,    -1,    10,    26,    31,    -1,    43,
503*0a9064fbSMasahiro Yamada      47,    -1,    11,    26,    31,    -1,    45,    47,    -1,    -1,
504*0a9064fbSMasahiro Yamada      47,    48,    -1,    47,    49,    -1,    47,    75,    -1,    47,
505*0a9064fbSMasahiro Yamada      73,    -1,    47,    42,    -1,    47,    31,    -1,    19,    78,
506*0a9064fbSMasahiro Yamada      31,    -1,    18,    79,    82,    31,    -1,    20,    83,    82,
507*0a9064fbSMasahiro Yamada      31,    -1,    21,    26,    82,    31,    -1,    22,    84,    84,
508*0a9064fbSMasahiro Yamada      82,    31,    -1,    24,    50,    31,    -1,    -1,    50,    26,
509*0a9064fbSMasahiro Yamada      51,    -1,    -1,    34,    79,    -1,     7,    85,    31,    -1,
510*0a9064fbSMasahiro Yamada      52,    56,    -1,    80,    -1,    53,    58,    54,    -1,    -1,
511*0a9064fbSMasahiro Yamada      56,    57,    -1,    56,    75,    -1,    56,    73,    -1,    56,
512*0a9064fbSMasahiro Yamada      31,    -1,    56,    42,    -1,    18,    79,    82,    31,    -1,
513*0a9064fbSMasahiro Yamada      19,    78,    31,    -1,    17,    31,    -1,    20,    26,    82,
514*0a9064fbSMasahiro Yamada      31,    -1,    -1,    58,    41,    -1,    14,    83,    81,    -1,
515*0a9064fbSMasahiro Yamada      80,    -1,    59,    62,    60,    -1,    -1,    62,    41,    -1,
516*0a9064fbSMasahiro Yamada      62,    67,    -1,    62,    55,    -1,     3,    79,    81,    -1,
517*0a9064fbSMasahiro Yamada       4,    79,    31,    -1,    64,    76,    74,    -1,    80,    -1,
518*0a9064fbSMasahiro Yamada      65,    68,    66,    -1,    -1,    68,    41,    -1,    68,    67,
519*0a9064fbSMasahiro Yamada      -1,    68,    55,    -1,     6,    79,    31,    -1,     9,    79,
520*0a9064fbSMasahiro Yamada      31,    -1,    70,    74,    -1,    12,    31,    -1,    72,    13,
521*0a9064fbSMasahiro Yamada      -1,    -1,    74,    75,    -1,    74,    31,    -1,    74,    42,
522*0a9064fbSMasahiro Yamada      -1,    16,    25,    83,    31,    -1,    -1,    76,    77,    -1,
523*0a9064fbSMasahiro Yamada      76,    31,    -1,    23,    82,    -1,    -1,    79,    82,    -1,
524*0a9064fbSMasahiro Yamada      26,    -1,    27,    -1,     5,    31,    -1,     8,    31,    -1,
525*0a9064fbSMasahiro Yamada      15,    31,    -1,    31,    -1,    81,    31,    -1,    -1,    14,
526*0a9064fbSMasahiro Yamada      83,    -1,    84,    -1,    84,    34,    84,    -1,    84,    28,
527*0a9064fbSMasahiro Yamada      84,    -1,    30,    83,    29,    -1,    35,    83,    -1,    83,
528*0a9064fbSMasahiro Yamada      32,    83,    -1,    83,    33,    83,    -1,    26,    -1,    27,
529*0a9064fbSMasahiro Yamada      -1,    -1,    26,    -1
530*0a9064fbSMasahiro Yamada};
531*0a9064fbSMasahiro Yamada
532*0a9064fbSMasahiro Yamada/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
533*0a9064fbSMasahiro Yamadastatic const yytype_uint16 yyrline[] =
534*0a9064fbSMasahiro Yamada{
535*0a9064fbSMasahiro Yamada       0,   103,   103,   103,   105,   105,   107,   109,   110,   111,
536*0a9064fbSMasahiro Yamada     112,   113,   114,   118,   122,   122,   122,   122,   122,   122,
537*0a9064fbSMasahiro Yamada     122,   122,   126,   127,   128,   129,   130,   131,   135,   136,
538*0a9064fbSMasahiro Yamada     142,   150,   156,   164,   174,   176,   177,   178,   179,   180,
539*0a9064fbSMasahiro Yamada     181,   184,   192,   198,   208,   214,   220,   223,   225,   236,
540*0a9064fbSMasahiro Yamada     237,   242,   251,   256,   264,   267,   269,   270,   271,   272,
541*0a9064fbSMasahiro Yamada     273,   276,   282,   293,   299,   309,   311,   316,   324,   332,
542*0a9064fbSMasahiro Yamada     335,   337,   338,   339,   344,   351,   358,   363,   371,   374,
543*0a9064fbSMasahiro Yamada     376,   377,   378,   381,   389,   396,   403,   409,   416,   418,
544*0a9064fbSMasahiro Yamada     419,   420,   423,   431,   433,   434,   437,   444,   446,   451,
545*0a9064fbSMasahiro Yamada     452,   455,   456,   457,   461,   462,   465,   466,   469,   470,
546*0a9064fbSMasahiro Yamada     471,   472,   473,   474,   475,   478,   479,   482,   483
547*0a9064fbSMasahiro Yamada};
548*0a9064fbSMasahiro Yamada#endif
549*0a9064fbSMasahiro Yamada
550*0a9064fbSMasahiro Yamada#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
551*0a9064fbSMasahiro Yamada/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
552*0a9064fbSMasahiro Yamada   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
553*0a9064fbSMasahiro Yamadastatic const char *const yytname[] =
554*0a9064fbSMasahiro Yamada{
555*0a9064fbSMasahiro Yamada  "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU",
556*0a9064fbSMasahiro Yamada  "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG",
557*0a9064fbSMasahiro Yamada  "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS",
558*0a9064fbSMasahiro Yamada  "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_RANGE",
559*0a9064fbSMasahiro Yamada  "T_VISIBLE", "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL",
560*0a9064fbSMasahiro Yamada  "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL",
561*0a9064fbSMasahiro Yamada  "T_NOT", "$accept", "input", "start", "stmt_list", "option_name",
562*0a9064fbSMasahiro Yamada  "common_stmt", "option_error", "config_entry_start", "config_stmt",
563*0a9064fbSMasahiro Yamada  "menuconfig_entry_start", "menuconfig_stmt", "config_option_list",
564*0a9064fbSMasahiro Yamada  "config_option", "symbol_option", "symbol_option_list",
565*0a9064fbSMasahiro Yamada  "symbol_option_arg", "choice", "choice_entry", "choice_end",
566*0a9064fbSMasahiro Yamada  "choice_stmt", "choice_option_list", "choice_option", "choice_block",
567*0a9064fbSMasahiro Yamada  "if_entry", "if_end", "if_stmt", "if_block", "mainmenu_stmt", "menu",
568*0a9064fbSMasahiro Yamada  "menu_entry", "menu_end", "menu_stmt", "menu_block", "source_stmt",
569*0a9064fbSMasahiro Yamada  "comment", "comment_stmt", "help_start", "help", "depends_list",
570*0a9064fbSMasahiro Yamada  "depends", "visibility_list", "visible", "prompt_stmt_opt", "prompt",
571*0a9064fbSMasahiro Yamada  "end", "nl", "if_expr", "expr", "symbol", "word_opt", 0
572*0a9064fbSMasahiro Yamada};
573*0a9064fbSMasahiro Yamada#endif
574*0a9064fbSMasahiro Yamada
575*0a9064fbSMasahiro Yamada# ifdef YYPRINT
576*0a9064fbSMasahiro Yamada/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
577*0a9064fbSMasahiro Yamada   token YYLEX-NUM.  */
578*0a9064fbSMasahiro Yamadastatic const yytype_uint16 yytoknum[] =
579*0a9064fbSMasahiro Yamada{
580*0a9064fbSMasahiro Yamada       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
581*0a9064fbSMasahiro Yamada     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
582*0a9064fbSMasahiro Yamada     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
583*0a9064fbSMasahiro Yamada     285,   286,   287,   288,   289,   290
584*0a9064fbSMasahiro Yamada};
585*0a9064fbSMasahiro Yamada# endif
586*0a9064fbSMasahiro Yamada
587*0a9064fbSMasahiro Yamada/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
588*0a9064fbSMasahiro Yamadastatic const yytype_uint8 yyr1[] =
589*0a9064fbSMasahiro Yamada{
590*0a9064fbSMasahiro Yamada       0,    36,    37,    37,    38,    38,    39,    39,    39,    39,
591*0a9064fbSMasahiro Yamada      39,    39,    39,    39,    40,    40,    40,    40,    40,    40,
592*0a9064fbSMasahiro Yamada      40,    40,    41,    41,    41,    41,    41,    41,    42,    42,
593*0a9064fbSMasahiro Yamada      43,    44,    45,    46,    47,    47,    47,    47,    47,    47,
594*0a9064fbSMasahiro Yamada      47,    48,    48,    48,    48,    48,    49,    50,    50,    51,
595*0a9064fbSMasahiro Yamada      51,    52,    53,    54,    55,    56,    56,    56,    56,    56,
596*0a9064fbSMasahiro Yamada      56,    57,    57,    57,    57,    58,    58,    59,    60,    61,
597*0a9064fbSMasahiro Yamada      62,    62,    62,    62,    63,    64,    65,    66,    67,    68,
598*0a9064fbSMasahiro Yamada      68,    68,    68,    69,    70,    71,    72,    73,    74,    74,
599*0a9064fbSMasahiro Yamada      74,    74,    75,    76,    76,    76,    77,    78,    78,    79,
600*0a9064fbSMasahiro Yamada      79,    80,    80,    80,    81,    81,    82,    82,    83,    83,
601*0a9064fbSMasahiro Yamada      83,    83,    83,    83,    83,    84,    84,    85,    85
602*0a9064fbSMasahiro Yamada};
603*0a9064fbSMasahiro Yamada
604*0a9064fbSMasahiro Yamada/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
605*0a9064fbSMasahiro Yamadastatic const yytype_uint8 yyr2[] =
606*0a9064fbSMasahiro Yamada{
607*0a9064fbSMasahiro Yamada       0,     2,     2,     1,     2,     1,     0,     2,     2,     2,
608*0a9064fbSMasahiro Yamada       2,     4,     4,     3,     1,     1,     1,     1,     1,     1,
609*0a9064fbSMasahiro Yamada       1,     1,     1,     1,     1,     1,     1,     1,     3,     2,
610*0a9064fbSMasahiro Yamada       3,     2,     3,     2,     0,     2,     2,     2,     2,     2,
611*0a9064fbSMasahiro Yamada       2,     3,     4,     4,     4,     5,     3,     0,     3,     0,
612*0a9064fbSMasahiro Yamada       2,     3,     2,     1,     3,     0,     2,     2,     2,     2,
613*0a9064fbSMasahiro Yamada       2,     4,     3,     2,     4,     0,     2,     3,     1,     3,
614*0a9064fbSMasahiro Yamada       0,     2,     2,     2,     3,     3,     3,     1,     3,     0,
615*0a9064fbSMasahiro Yamada       2,     2,     2,     3,     3,     2,     2,     2,     0,     2,
616*0a9064fbSMasahiro Yamada       2,     2,     4,     0,     2,     2,     2,     0,     2,     1,
617*0a9064fbSMasahiro Yamada       1,     2,     2,     2,     1,     2,     0,     2,     1,     3,
618*0a9064fbSMasahiro Yamada       3,     3,     2,     3,     3,     1,     1,     0,     1
619*0a9064fbSMasahiro Yamada};
620*0a9064fbSMasahiro Yamada
621*0a9064fbSMasahiro Yamada/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
622*0a9064fbSMasahiro Yamada   Performed when YYTABLE doesn't specify something else to do.  Zero
623*0a9064fbSMasahiro Yamada   means the default is an error.  */
624*0a9064fbSMasahiro Yamadastatic const yytype_uint8 yydefact[] =
625*0a9064fbSMasahiro Yamada{
626*0a9064fbSMasahiro Yamada       6,     0,   104,     0,     3,     0,     6,     6,    99,   100,
627*0a9064fbSMasahiro Yamada       0,     1,     0,     0,     0,     0,   117,     0,     0,     0,
628*0a9064fbSMasahiro Yamada       0,     0,     0,    14,    18,    15,    16,    20,    17,    19,
629*0a9064fbSMasahiro Yamada      21,     0,    22,     0,     7,    34,    25,    34,    26,    55,
630*0a9064fbSMasahiro Yamada      65,     8,    70,    23,    93,    79,     9,    27,    88,    24,
631*0a9064fbSMasahiro Yamada      10,     0,   105,     2,    74,    13,     0,   101,     0,   118,
632*0a9064fbSMasahiro Yamada       0,   102,     0,     0,     0,   115,   116,     0,     0,     0,
633*0a9064fbSMasahiro Yamada     108,   103,     0,     0,     0,     0,     0,     0,     0,    88,
634*0a9064fbSMasahiro Yamada       0,     0,    75,    83,    51,    84,    30,    32,     0,   112,
635*0a9064fbSMasahiro Yamada       0,     0,    67,     0,     0,    11,    12,     0,     0,     0,
636*0a9064fbSMasahiro Yamada       0,    97,     0,     0,     0,    47,     0,    40,    39,    35,
637*0a9064fbSMasahiro Yamada      36,     0,    38,    37,     0,     0,    97,     0,    59,    60,
638*0a9064fbSMasahiro Yamada      56,    58,    57,    66,    54,    53,    71,    73,    69,    72,
639*0a9064fbSMasahiro Yamada      68,   106,    95,     0,    94,    80,    82,    78,    81,    77,
640*0a9064fbSMasahiro Yamada      90,    91,    89,   111,   113,   114,   110,   109,    29,    86,
641*0a9064fbSMasahiro Yamada       0,   106,     0,   106,   106,   106,     0,     0,     0,    87,
642*0a9064fbSMasahiro Yamada      63,   106,     0,   106,     0,    96,     0,     0,    41,    98,
643*0a9064fbSMasahiro Yamada       0,     0,   106,    49,    46,    28,     0,    62,     0,   107,
644*0a9064fbSMasahiro Yamada      92,    42,    43,    44,     0,     0,    48,    61,    64,    45,
645*0a9064fbSMasahiro Yamada      50
646*0a9064fbSMasahiro Yamada};
647*0a9064fbSMasahiro Yamada
648*0a9064fbSMasahiro Yamada/* YYDEFGOTO[NTERM-NUM].  */
649*0a9064fbSMasahiro Yamadastatic const yytype_int16 yydefgoto[] =
650*0a9064fbSMasahiro Yamada{
651*0a9064fbSMasahiro Yamada      -1,     3,     4,     5,    33,    34,   108,    35,    36,    37,
652*0a9064fbSMasahiro Yamada      38,    74,   109,   110,   157,   186,    39,    40,   124,    41,
653*0a9064fbSMasahiro Yamada      76,   120,    77,    42,   128,    43,    78,     6,    44,    45,
654*0a9064fbSMasahiro Yamada     137,    46,    80,    47,    48,    49,   111,   112,    81,   113,
655*0a9064fbSMasahiro Yamada      79,   134,   152,   153,    50,     7,   165,    69,    70,    60
656*0a9064fbSMasahiro Yamada};
657*0a9064fbSMasahiro Yamada
658*0a9064fbSMasahiro Yamada/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
659*0a9064fbSMasahiro Yamada   STATE-NUM.  */
660*0a9064fbSMasahiro Yamada#define YYPACT_NINF -90
661*0a9064fbSMasahiro Yamadastatic const yytype_int16 yypact[] =
662*0a9064fbSMasahiro Yamada{
663*0a9064fbSMasahiro Yamada       4,    42,   -90,    96,   -90,   111,   -90,    15,   -90,   -90,
664*0a9064fbSMasahiro Yamada      75,   -90,    82,    42,   104,    42,   110,   107,    42,   115,
665*0a9064fbSMasahiro Yamada     125,    -4,   121,   -90,   -90,   -90,   -90,   -90,   -90,   -90,
666*0a9064fbSMasahiro Yamada     -90,   162,   -90,   163,   -90,   -90,   -90,   -90,   -90,   -90,
667*0a9064fbSMasahiro Yamada     -90,   -90,   -90,   -90,   -90,   -90,   -90,   -90,   -90,   -90,
668*0a9064fbSMasahiro Yamada     -90,   139,   -90,   -90,   138,   -90,   142,   -90,   143,   -90,
669*0a9064fbSMasahiro Yamada     152,   -90,   164,   167,   168,   -90,   -90,    -4,    -4,    77,
670*0a9064fbSMasahiro Yamada     -18,   -90,   177,   185,    33,    71,   195,   247,   236,    -2,
671*0a9064fbSMasahiro Yamada     236,   171,   -90,   -90,   -90,   -90,   -90,   -90,    41,   -90,
672*0a9064fbSMasahiro Yamada      -4,    -4,   138,    97,    97,   -90,   -90,   186,   187,   194,
673*0a9064fbSMasahiro Yamada      42,    42,    -4,   196,    97,   -90,   219,   -90,   -90,   -90,
674*0a9064fbSMasahiro Yamada     -90,   210,   -90,   -90,   204,    42,    42,   199,   -90,   -90,
675*0a9064fbSMasahiro Yamada     -90,   -90,   -90,   -90,   -90,   -90,   -90,   -90,   -90,   -90,
676*0a9064fbSMasahiro Yamada     -90,   222,   -90,   223,   -90,   -90,   -90,   -90,   -90,   -90,
677*0a9064fbSMasahiro Yamada     -90,   -90,   -90,   -90,   215,   -90,   -90,   -90,   -90,   -90,
678*0a9064fbSMasahiro Yamada      -4,   222,   228,   222,    -5,   222,    97,    35,   229,   -90,
679*0a9064fbSMasahiro Yamada     -90,   222,   232,   222,    -4,   -90,   135,   233,   -90,   -90,
680*0a9064fbSMasahiro Yamada     234,   235,   222,   240,   -90,   -90,   237,   -90,   239,   -13,
681*0a9064fbSMasahiro Yamada     -90,   -90,   -90,   -90,   244,    42,   -90,   -90,   -90,   -90,
682*0a9064fbSMasahiro Yamada     -90
683*0a9064fbSMasahiro Yamada};
684*0a9064fbSMasahiro Yamada
685*0a9064fbSMasahiro Yamada/* YYPGOTO[NTERM-NUM].  */
686*0a9064fbSMasahiro Yamadastatic const yytype_int16 yypgoto[] =
687*0a9064fbSMasahiro Yamada{
688*0a9064fbSMasahiro Yamada     -90,   -90,   269,   271,   -90,    23,   -70,   -90,   -90,   -90,
689*0a9064fbSMasahiro Yamada     -90,   243,   -90,   -90,   -90,   -90,   -90,   -90,   -90,   -48,
690*0a9064fbSMasahiro Yamada     -90,   -90,   -90,   -90,   -90,   -90,   -90,   -90,   -90,   -90,
691*0a9064fbSMasahiro Yamada     -90,   -20,   -90,   -90,   -90,   -90,   -90,   206,   205,   -68,
692*0a9064fbSMasahiro Yamada     -90,   -90,   169,    -1,    27,    -7,   118,   -66,   -89,   -90
693*0a9064fbSMasahiro Yamada};
694*0a9064fbSMasahiro Yamada
695*0a9064fbSMasahiro Yamada/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
696*0a9064fbSMasahiro Yamada   positive, shift that token.  If negative, reduce the rule which
697*0a9064fbSMasahiro Yamada   number is the opposite.  If YYTABLE_NINF, syntax error.  */
698*0a9064fbSMasahiro Yamada#define YYTABLE_NINF -86
699*0a9064fbSMasahiro Yamadastatic const yytype_int16 yytable[] =
700*0a9064fbSMasahiro Yamada{
701*0a9064fbSMasahiro Yamada      10,    88,    89,    54,   146,   147,   119,     1,   122,   164,
702*0a9064fbSMasahiro Yamada      93,   141,    56,   142,    58,   156,    94,    62,     1,    90,
703*0a9064fbSMasahiro Yamada      91,   131,    65,    66,   144,   145,    67,    90,    91,   132,
704*0a9064fbSMasahiro Yamada     127,    68,   136,   -31,    97,     2,   154,   -31,   -31,   -31,
705*0a9064fbSMasahiro Yamada     -31,   -31,   -31,   -31,   -31,    98,    52,   -31,   -31,    99,
706*0a9064fbSMasahiro Yamada     -31,   100,   101,   102,   103,   104,   -31,   105,   129,   106,
707*0a9064fbSMasahiro Yamada     138,   173,    92,   141,   107,   142,   174,   172,     8,     9,
708*0a9064fbSMasahiro Yamada     143,   -33,    97,    90,    91,   -33,   -33,   -33,   -33,   -33,
709*0a9064fbSMasahiro Yamada     -33,   -33,   -33,    98,   166,   -33,   -33,    99,   -33,   100,
710*0a9064fbSMasahiro Yamada     101,   102,   103,   104,   -33,   105,    11,   106,   179,   151,
711*0a9064fbSMasahiro Yamada     123,   126,   107,   135,   125,   130,     2,   139,     2,    90,
712*0a9064fbSMasahiro Yamada      91,    -5,    12,    55,   161,    13,    14,    15,    16,    17,
713*0a9064fbSMasahiro Yamada      18,    19,    20,    65,    66,    21,    22,    23,    24,    25,
714*0a9064fbSMasahiro Yamada      26,    27,    28,    29,    30,    57,    59,    31,    61,    -4,
715*0a9064fbSMasahiro Yamada      12,    63,    32,    13,    14,    15,    16,    17,    18,    19,
716*0a9064fbSMasahiro Yamada      20,    64,    71,    21,    22,    23,    24,    25,    26,    27,
717*0a9064fbSMasahiro Yamada      28,    29,    30,    72,    73,    31,   180,    90,    91,    52,
718*0a9064fbSMasahiro Yamada      32,   -85,    97,    82,    83,   -85,   -85,   -85,   -85,   -85,
719*0a9064fbSMasahiro Yamada     -85,   -85,   -85,    84,   190,   -85,   -85,    99,   -85,   -85,
720*0a9064fbSMasahiro Yamada     -85,   -85,   -85,   -85,   -85,    85,    97,   106,    86,    87,
721*0a9064fbSMasahiro Yamada     -52,   -52,   140,   -52,   -52,   -52,   -52,    98,    95,   -52,
722*0a9064fbSMasahiro Yamada     -52,    99,   114,   115,   116,   117,    96,   148,   149,   150,
723*0a9064fbSMasahiro Yamada     158,   106,   155,   159,    97,   163,   118,   -76,   -76,   -76,
724*0a9064fbSMasahiro Yamada     -76,   -76,   -76,   -76,   -76,   160,   164,   -76,   -76,    99,
725*0a9064fbSMasahiro Yamada      13,    14,    15,    16,    17,    18,    19,    20,    91,   106,
726*0a9064fbSMasahiro Yamada      21,    22,    14,    15,   140,    17,    18,    19,    20,   168,
727*0a9064fbSMasahiro Yamada     175,    21,    22,   177,   181,   182,   183,    32,   187,   167,
728*0a9064fbSMasahiro Yamada     188,   169,   170,   171,   185,   189,    53,    51,    32,   176,
729*0a9064fbSMasahiro Yamada      75,   178,   121,     0,   133,   162,     0,     0,     0,     0,
730*0a9064fbSMasahiro Yamada     184
731*0a9064fbSMasahiro Yamada};
732*0a9064fbSMasahiro Yamada
733*0a9064fbSMasahiro Yamada#define yypact_value_is_default(yystate) \
734*0a9064fbSMasahiro Yamada  ((yystate) == (-90))
735*0a9064fbSMasahiro Yamada
736*0a9064fbSMasahiro Yamada#define yytable_value_is_error(yytable_value) \
737*0a9064fbSMasahiro Yamada  YYID (0)
738*0a9064fbSMasahiro Yamada
739*0a9064fbSMasahiro Yamadastatic const yytype_int16 yycheck[] =
740*0a9064fbSMasahiro Yamada{
741*0a9064fbSMasahiro Yamada       1,    67,    68,    10,    93,    94,    76,     3,    76,    14,
742*0a9064fbSMasahiro Yamada      28,    81,    13,    81,    15,   104,    34,    18,     3,    32,
743*0a9064fbSMasahiro Yamada      33,    23,    26,    27,    90,    91,    30,    32,    33,    31,
744*0a9064fbSMasahiro Yamada      78,    35,    80,     0,     1,    31,   102,     4,     5,     6,
745*0a9064fbSMasahiro Yamada       7,     8,     9,    10,    11,    12,    31,    14,    15,    16,
746*0a9064fbSMasahiro Yamada      17,    18,    19,    20,    21,    22,    23,    24,    78,    26,
747*0a9064fbSMasahiro Yamada      80,    26,    69,   133,    31,   133,    31,   156,    26,    27,
748*0a9064fbSMasahiro Yamada      29,     0,     1,    32,    33,     4,     5,     6,     7,     8,
749*0a9064fbSMasahiro Yamada       9,    10,    11,    12,   150,    14,    15,    16,    17,    18,
750*0a9064fbSMasahiro Yamada      19,    20,    21,    22,    23,    24,     0,    26,   164,   100,
751*0a9064fbSMasahiro Yamada      77,    78,    31,    80,    77,    78,    31,    80,    31,    32,
752*0a9064fbSMasahiro Yamada      33,     0,     1,    31,   115,     4,     5,     6,     7,     8,
753*0a9064fbSMasahiro Yamada       9,    10,    11,    26,    27,    14,    15,    16,    17,    18,
754*0a9064fbSMasahiro Yamada      19,    20,    21,    22,    23,    31,    26,    26,    31,     0,
755*0a9064fbSMasahiro Yamada       1,    26,    31,     4,     5,     6,     7,     8,     9,    10,
756*0a9064fbSMasahiro Yamada      11,    26,    31,    14,    15,    16,    17,    18,    19,    20,
757*0a9064fbSMasahiro Yamada      21,    22,    23,     1,     1,    26,    31,    32,    33,    31,
758*0a9064fbSMasahiro Yamada      31,     0,     1,    31,    31,     4,     5,     6,     7,     8,
759*0a9064fbSMasahiro Yamada       9,    10,    11,    31,   185,    14,    15,    16,    17,    18,
760*0a9064fbSMasahiro Yamada      19,    20,    21,    22,    23,    31,     1,    26,    31,    31,
761*0a9064fbSMasahiro Yamada       5,     6,    31,     8,     9,    10,    11,    12,    31,    14,
762*0a9064fbSMasahiro Yamada      15,    16,    17,    18,    19,    20,    31,    31,    31,    25,
763*0a9064fbSMasahiro Yamada       1,    26,    26,    13,     1,    26,    31,     4,     5,     6,
764*0a9064fbSMasahiro Yamada       7,     8,     9,    10,    11,    31,    14,    14,    15,    16,
765*0a9064fbSMasahiro Yamada       4,     5,     6,     7,     8,     9,    10,    11,    33,    26,
766*0a9064fbSMasahiro Yamada      14,    15,     5,     6,    31,     8,     9,    10,    11,    31,
767*0a9064fbSMasahiro Yamada      31,    14,    15,    31,    31,    31,    31,    31,    31,   151,
768*0a9064fbSMasahiro Yamada      31,   153,   154,   155,    34,    31,     7,     6,    31,   161,
769*0a9064fbSMasahiro Yamada      37,   163,    76,    -1,    79,   116,    -1,    -1,    -1,    -1,
770*0a9064fbSMasahiro Yamada     172
771*0a9064fbSMasahiro Yamada};
772*0a9064fbSMasahiro Yamada
773*0a9064fbSMasahiro Yamada/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
774*0a9064fbSMasahiro Yamada   symbol of state STATE-NUM.  */
775*0a9064fbSMasahiro Yamadastatic const yytype_uint8 yystos[] =
776*0a9064fbSMasahiro Yamada{
777*0a9064fbSMasahiro Yamada       0,     3,    31,    37,    38,    39,    63,    81,    26,    27,
778*0a9064fbSMasahiro Yamada      79,     0,     1,     4,     5,     6,     7,     8,     9,    10,
779*0a9064fbSMasahiro Yamada      11,    14,    15,    16,    17,    18,    19,    20,    21,    22,
780*0a9064fbSMasahiro Yamada      23,    26,    31,    40,    41,    43,    44,    45,    46,    52,
781*0a9064fbSMasahiro Yamada      53,    55,    59,    61,    64,    65,    67,    69,    70,    71,
782*0a9064fbSMasahiro Yamada      80,    39,    31,    38,    81,    31,    79,    31,    79,    26,
783*0a9064fbSMasahiro Yamada      85,    31,    79,    26,    26,    26,    27,    30,    35,    83,
784*0a9064fbSMasahiro Yamada      84,    31,     1,     1,    47,    47,    56,    58,    62,    76,
785*0a9064fbSMasahiro Yamada      68,    74,    31,    31,    31,    31,    31,    31,    83,    83,
786*0a9064fbSMasahiro Yamada      32,    33,    81,    28,    34,    31,    31,     1,    12,    16,
787*0a9064fbSMasahiro Yamada      18,    19,    20,    21,    22,    24,    26,    31,    42,    48,
788*0a9064fbSMasahiro Yamada      49,    72,    73,    75,    17,    18,    19,    20,    31,    42,
789*0a9064fbSMasahiro Yamada      57,    73,    75,    41,    54,    80,    41,    55,    60,    67,
790*0a9064fbSMasahiro Yamada      80,    23,    31,    74,    77,    41,    55,    66,    67,    80,
791*0a9064fbSMasahiro Yamada      31,    42,    75,    29,    83,    83,    84,    84,    31,    31,
792*0a9064fbSMasahiro Yamada      25,    79,    78,    79,    83,    26,    84,    50,     1,    13,
793*0a9064fbSMasahiro Yamada      31,    79,    78,    26,    14,    82,    83,    82,    31,    82,
794*0a9064fbSMasahiro Yamada      82,    82,    84,    26,    31,    31,    82,    31,    82,    83,
795*0a9064fbSMasahiro Yamada      31,    31,    31,    31,    82,    34,    51,    31,    31,    31,
796*0a9064fbSMasahiro Yamada      79
797*0a9064fbSMasahiro Yamada};
798*0a9064fbSMasahiro Yamada
799*0a9064fbSMasahiro Yamada#define yyerrok		(yyerrstatus = 0)
800*0a9064fbSMasahiro Yamada#define yyclearin	(yychar = YYEMPTY)
801*0a9064fbSMasahiro Yamada#define YYEMPTY		(-2)
802*0a9064fbSMasahiro Yamada#define YYEOF		0
803*0a9064fbSMasahiro Yamada
804*0a9064fbSMasahiro Yamada#define YYACCEPT	goto yyacceptlab
805*0a9064fbSMasahiro Yamada#define YYABORT		goto yyabortlab
806*0a9064fbSMasahiro Yamada#define YYERROR		goto yyerrorlab
807*0a9064fbSMasahiro Yamada
808*0a9064fbSMasahiro Yamada
809*0a9064fbSMasahiro Yamada/* Like YYERROR except do call yyerror.  This remains here temporarily
810*0a9064fbSMasahiro Yamada   to ease the transition to the new meaning of YYERROR, for GCC.
811*0a9064fbSMasahiro Yamada   Once GCC version 2 has supplanted version 1, this can go.  However,
812*0a9064fbSMasahiro Yamada   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
813*0a9064fbSMasahiro Yamada   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
814*0a9064fbSMasahiro Yamada   discussed.  */
815*0a9064fbSMasahiro Yamada
816*0a9064fbSMasahiro Yamada#define YYFAIL		goto yyerrlab
817*0a9064fbSMasahiro Yamada#if defined YYFAIL
818*0a9064fbSMasahiro Yamada  /* This is here to suppress warnings from the GCC cpp's
819*0a9064fbSMasahiro Yamada     -Wunused-macros.  Normally we don't worry about that warning, but
820*0a9064fbSMasahiro Yamada     some users do, and we want to make it easy for users to remove
821*0a9064fbSMasahiro Yamada     YYFAIL uses, which will produce warnings from Bison 2.5.  */
822*0a9064fbSMasahiro Yamada#endif
823*0a9064fbSMasahiro Yamada
824*0a9064fbSMasahiro Yamada#define YYRECOVERING()  (!!yyerrstatus)
825*0a9064fbSMasahiro Yamada
826*0a9064fbSMasahiro Yamada#define YYBACKUP(Token, Value)					\
827*0a9064fbSMasahiro Yamadado								\
828*0a9064fbSMasahiro Yamada  if (yychar == YYEMPTY && yylen == 1)				\
829*0a9064fbSMasahiro Yamada    {								\
830*0a9064fbSMasahiro Yamada      yychar = (Token);						\
831*0a9064fbSMasahiro Yamada      yylval = (Value);						\
832*0a9064fbSMasahiro Yamada      YYPOPSTACK (1);						\
833*0a9064fbSMasahiro Yamada      goto yybackup;						\
834*0a9064fbSMasahiro Yamada    }								\
835*0a9064fbSMasahiro Yamada  else								\
836*0a9064fbSMasahiro Yamada    {								\
837*0a9064fbSMasahiro Yamada      yyerror (YY_("syntax error: cannot back up")); \
838*0a9064fbSMasahiro Yamada      YYERROR;							\
839*0a9064fbSMasahiro Yamada    }								\
840*0a9064fbSMasahiro Yamadawhile (YYID (0))
841*0a9064fbSMasahiro Yamada
842*0a9064fbSMasahiro Yamada
843*0a9064fbSMasahiro Yamada#define YYTERROR	1
844*0a9064fbSMasahiro Yamada#define YYERRCODE	256
845*0a9064fbSMasahiro Yamada
846*0a9064fbSMasahiro Yamada
847*0a9064fbSMasahiro Yamada/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
848*0a9064fbSMasahiro Yamada   If N is 0, then set CURRENT to the empty location which ends
849*0a9064fbSMasahiro Yamada   the previous symbol: RHS[0] (always defined).  */
850*0a9064fbSMasahiro Yamada
851*0a9064fbSMasahiro Yamada#define YYRHSLOC(Rhs, K) ((Rhs)[K])
852*0a9064fbSMasahiro Yamada#ifndef YYLLOC_DEFAULT
853*0a9064fbSMasahiro Yamada# define YYLLOC_DEFAULT(Current, Rhs, N)				\
854*0a9064fbSMasahiro Yamada    do									\
855*0a9064fbSMasahiro Yamada      if (YYID (N))                                                    \
856*0a9064fbSMasahiro Yamada	{								\
857*0a9064fbSMasahiro Yamada	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
858*0a9064fbSMasahiro Yamada	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
859*0a9064fbSMasahiro Yamada	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
860*0a9064fbSMasahiro Yamada	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
861*0a9064fbSMasahiro Yamada	}								\
862*0a9064fbSMasahiro Yamada      else								\
863*0a9064fbSMasahiro Yamada	{								\
864*0a9064fbSMasahiro Yamada	  (Current).first_line   = (Current).last_line   =		\
865*0a9064fbSMasahiro Yamada	    YYRHSLOC (Rhs, 0).last_line;				\
866*0a9064fbSMasahiro Yamada	  (Current).first_column = (Current).last_column =		\
867*0a9064fbSMasahiro Yamada	    YYRHSLOC (Rhs, 0).last_column;				\
868*0a9064fbSMasahiro Yamada	}								\
869*0a9064fbSMasahiro Yamada    while (YYID (0))
870*0a9064fbSMasahiro Yamada#endif
871*0a9064fbSMasahiro Yamada
872*0a9064fbSMasahiro Yamada
873*0a9064fbSMasahiro Yamada/* This macro is provided for backward compatibility. */
874*0a9064fbSMasahiro Yamada
875*0a9064fbSMasahiro Yamada#ifndef YY_LOCATION_PRINT
876*0a9064fbSMasahiro Yamada# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
877*0a9064fbSMasahiro Yamada#endif
878*0a9064fbSMasahiro Yamada
879*0a9064fbSMasahiro Yamada
880*0a9064fbSMasahiro Yamada/* YYLEX -- calling `yylex' with the right arguments.  */
881*0a9064fbSMasahiro Yamada
882*0a9064fbSMasahiro Yamada#ifdef YYLEX_PARAM
883*0a9064fbSMasahiro Yamada# define YYLEX yylex (YYLEX_PARAM)
884*0a9064fbSMasahiro Yamada#else
885*0a9064fbSMasahiro Yamada# define YYLEX yylex ()
886*0a9064fbSMasahiro Yamada#endif
887*0a9064fbSMasahiro Yamada
888*0a9064fbSMasahiro Yamada/* Enable debugging if requested.  */
889*0a9064fbSMasahiro Yamada#if YYDEBUG
890*0a9064fbSMasahiro Yamada
891*0a9064fbSMasahiro Yamada# ifndef YYFPRINTF
892*0a9064fbSMasahiro Yamada#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
893*0a9064fbSMasahiro Yamada#  define YYFPRINTF fprintf
894*0a9064fbSMasahiro Yamada# endif
895*0a9064fbSMasahiro Yamada
896*0a9064fbSMasahiro Yamada# define YYDPRINTF(Args)			\
897*0a9064fbSMasahiro Yamadado {						\
898*0a9064fbSMasahiro Yamada  if (yydebug)					\
899*0a9064fbSMasahiro Yamada    YYFPRINTF Args;				\
900*0a9064fbSMasahiro Yamada} while (YYID (0))
901*0a9064fbSMasahiro Yamada
902*0a9064fbSMasahiro Yamada# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
903*0a9064fbSMasahiro Yamadado {									  \
904*0a9064fbSMasahiro Yamada  if (yydebug)								  \
905*0a9064fbSMasahiro Yamada    {									  \
906*0a9064fbSMasahiro Yamada      YYFPRINTF (stderr, "%s ", Title);					  \
907*0a9064fbSMasahiro Yamada      yy_symbol_print (stderr,						  \
908*0a9064fbSMasahiro Yamada		  Type, Value); \
909*0a9064fbSMasahiro Yamada      YYFPRINTF (stderr, "\n");						  \
910*0a9064fbSMasahiro Yamada    }									  \
911*0a9064fbSMasahiro Yamada} while (YYID (0))
912*0a9064fbSMasahiro Yamada
913*0a9064fbSMasahiro Yamada
914*0a9064fbSMasahiro Yamada/*--------------------------------.
915*0a9064fbSMasahiro Yamada| Print this symbol on YYOUTPUT.  |
916*0a9064fbSMasahiro Yamada`--------------------------------*/
917*0a9064fbSMasahiro Yamada
918*0a9064fbSMasahiro Yamada/*ARGSUSED*/
919*0a9064fbSMasahiro Yamada#if (defined __STDC__ || defined __C99__FUNC__ \
920*0a9064fbSMasahiro Yamada     || defined __cplusplus || defined _MSC_VER)
921*0a9064fbSMasahiro Yamadastatic void
922*0a9064fbSMasahiro Yamadayy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
923*0a9064fbSMasahiro Yamada#else
924*0a9064fbSMasahiro Yamadastatic void
925*0a9064fbSMasahiro Yamadayy_symbol_value_print (yyoutput, yytype, yyvaluep)
926*0a9064fbSMasahiro Yamada    FILE *yyoutput;
927*0a9064fbSMasahiro Yamada    int yytype;
928*0a9064fbSMasahiro Yamada    YYSTYPE const * const yyvaluep;
929*0a9064fbSMasahiro Yamada#endif
930*0a9064fbSMasahiro Yamada{
931*0a9064fbSMasahiro Yamada  if (!yyvaluep)
932*0a9064fbSMasahiro Yamada    return;
933*0a9064fbSMasahiro Yamada# ifdef YYPRINT
934*0a9064fbSMasahiro Yamada  if (yytype < YYNTOKENS)
935*0a9064fbSMasahiro Yamada    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
936*0a9064fbSMasahiro Yamada# else
937*0a9064fbSMasahiro Yamada  YYUSE (yyoutput);
938*0a9064fbSMasahiro Yamada# endif
939*0a9064fbSMasahiro Yamada  switch (yytype)
940*0a9064fbSMasahiro Yamada    {
941*0a9064fbSMasahiro Yamada      default:
942*0a9064fbSMasahiro Yamada	break;
943*0a9064fbSMasahiro Yamada    }
944*0a9064fbSMasahiro Yamada}
945*0a9064fbSMasahiro Yamada
946*0a9064fbSMasahiro Yamada
947*0a9064fbSMasahiro Yamada/*--------------------------------.
948*0a9064fbSMasahiro Yamada| Print this symbol on YYOUTPUT.  |
949*0a9064fbSMasahiro Yamada`--------------------------------*/
950*0a9064fbSMasahiro Yamada
951*0a9064fbSMasahiro Yamada#if (defined __STDC__ || defined __C99__FUNC__ \
952*0a9064fbSMasahiro Yamada     || defined __cplusplus || defined _MSC_VER)
953*0a9064fbSMasahiro Yamadastatic void
954*0a9064fbSMasahiro Yamadayy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
955*0a9064fbSMasahiro Yamada#else
956*0a9064fbSMasahiro Yamadastatic void
957*0a9064fbSMasahiro Yamadayy_symbol_print (yyoutput, yytype, yyvaluep)
958*0a9064fbSMasahiro Yamada    FILE *yyoutput;
959*0a9064fbSMasahiro Yamada    int yytype;
960*0a9064fbSMasahiro Yamada    YYSTYPE const * const yyvaluep;
961*0a9064fbSMasahiro Yamada#endif
962*0a9064fbSMasahiro Yamada{
963*0a9064fbSMasahiro Yamada  if (yytype < YYNTOKENS)
964*0a9064fbSMasahiro Yamada    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
965*0a9064fbSMasahiro Yamada  else
966*0a9064fbSMasahiro Yamada    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
967*0a9064fbSMasahiro Yamada
968*0a9064fbSMasahiro Yamada  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
969*0a9064fbSMasahiro Yamada  YYFPRINTF (yyoutput, ")");
970*0a9064fbSMasahiro Yamada}
971*0a9064fbSMasahiro Yamada
972*0a9064fbSMasahiro Yamada/*------------------------------------------------------------------.
973*0a9064fbSMasahiro Yamada| yy_stack_print -- Print the state stack from its BOTTOM up to its |
974*0a9064fbSMasahiro Yamada| TOP (included).                                                   |
975*0a9064fbSMasahiro Yamada`------------------------------------------------------------------*/
976*0a9064fbSMasahiro Yamada
977*0a9064fbSMasahiro Yamada#if (defined __STDC__ || defined __C99__FUNC__ \
978*0a9064fbSMasahiro Yamada     || defined __cplusplus || defined _MSC_VER)
979*0a9064fbSMasahiro Yamadastatic void
980*0a9064fbSMasahiro Yamadayy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
981*0a9064fbSMasahiro Yamada#else
982*0a9064fbSMasahiro Yamadastatic void
983*0a9064fbSMasahiro Yamadayy_stack_print (yybottom, yytop)
984*0a9064fbSMasahiro Yamada    yytype_int16 *yybottom;
985*0a9064fbSMasahiro Yamada    yytype_int16 *yytop;
986*0a9064fbSMasahiro Yamada#endif
987*0a9064fbSMasahiro Yamada{
988*0a9064fbSMasahiro Yamada  YYFPRINTF (stderr, "Stack now");
989*0a9064fbSMasahiro Yamada  for (; yybottom <= yytop; yybottom++)
990*0a9064fbSMasahiro Yamada    {
991*0a9064fbSMasahiro Yamada      int yybot = *yybottom;
992*0a9064fbSMasahiro Yamada      YYFPRINTF (stderr, " %d", yybot);
993*0a9064fbSMasahiro Yamada    }
994*0a9064fbSMasahiro Yamada  YYFPRINTF (stderr, "\n");
995*0a9064fbSMasahiro Yamada}
996*0a9064fbSMasahiro Yamada
997*0a9064fbSMasahiro Yamada# define YY_STACK_PRINT(Bottom, Top)				\
998*0a9064fbSMasahiro Yamadado {								\
999*0a9064fbSMasahiro Yamada  if (yydebug)							\
1000*0a9064fbSMasahiro Yamada    yy_stack_print ((Bottom), (Top));				\
1001*0a9064fbSMasahiro Yamada} while (YYID (0))
1002*0a9064fbSMasahiro Yamada
1003*0a9064fbSMasahiro Yamada
1004*0a9064fbSMasahiro Yamada/*------------------------------------------------.
1005*0a9064fbSMasahiro Yamada| Report that the YYRULE is going to be reduced.  |
1006*0a9064fbSMasahiro Yamada`------------------------------------------------*/
1007*0a9064fbSMasahiro Yamada
1008*0a9064fbSMasahiro Yamada#if (defined __STDC__ || defined __C99__FUNC__ \
1009*0a9064fbSMasahiro Yamada     || defined __cplusplus || defined _MSC_VER)
1010*0a9064fbSMasahiro Yamadastatic void
1011*0a9064fbSMasahiro Yamadayy_reduce_print (YYSTYPE *yyvsp, int yyrule)
1012*0a9064fbSMasahiro Yamada#else
1013*0a9064fbSMasahiro Yamadastatic void
1014*0a9064fbSMasahiro Yamadayy_reduce_print (yyvsp, yyrule)
1015*0a9064fbSMasahiro Yamada    YYSTYPE *yyvsp;
1016*0a9064fbSMasahiro Yamada    int yyrule;
1017*0a9064fbSMasahiro Yamada#endif
1018*0a9064fbSMasahiro Yamada{
1019*0a9064fbSMasahiro Yamada  int yynrhs = yyr2[yyrule];
1020*0a9064fbSMasahiro Yamada  int yyi;
1021*0a9064fbSMasahiro Yamada  unsigned long int yylno = yyrline[yyrule];
1022*0a9064fbSMasahiro Yamada  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1023*0a9064fbSMasahiro Yamada	     yyrule - 1, yylno);
1024*0a9064fbSMasahiro Yamada  /* The symbols being reduced.  */
1025*0a9064fbSMasahiro Yamada  for (yyi = 0; yyi < yynrhs; yyi++)
1026*0a9064fbSMasahiro Yamada    {
1027*0a9064fbSMasahiro Yamada      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
1028*0a9064fbSMasahiro Yamada      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1029*0a9064fbSMasahiro Yamada		       &(yyvsp[(yyi + 1) - (yynrhs)])
1030*0a9064fbSMasahiro Yamada		       		       );
1031*0a9064fbSMasahiro Yamada      YYFPRINTF (stderr, "\n");
1032*0a9064fbSMasahiro Yamada    }
1033*0a9064fbSMasahiro Yamada}
1034*0a9064fbSMasahiro Yamada
1035*0a9064fbSMasahiro Yamada# define YY_REDUCE_PRINT(Rule)		\
1036*0a9064fbSMasahiro Yamadado {					\
1037*0a9064fbSMasahiro Yamada  if (yydebug)				\
1038*0a9064fbSMasahiro Yamada    yy_reduce_print (yyvsp, Rule); \
1039*0a9064fbSMasahiro Yamada} while (YYID (0))
1040*0a9064fbSMasahiro Yamada
1041*0a9064fbSMasahiro Yamada/* Nonzero means print parse trace.  It is left uninitialized so that
1042*0a9064fbSMasahiro Yamada   multiple parsers can coexist.  */
1043*0a9064fbSMasahiro Yamadaint yydebug;
1044*0a9064fbSMasahiro Yamada#else /* !YYDEBUG */
1045*0a9064fbSMasahiro Yamada# define YYDPRINTF(Args)
1046*0a9064fbSMasahiro Yamada# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1047*0a9064fbSMasahiro Yamada# define YY_STACK_PRINT(Bottom, Top)
1048*0a9064fbSMasahiro Yamada# define YY_REDUCE_PRINT(Rule)
1049*0a9064fbSMasahiro Yamada#endif /* !YYDEBUG */
1050*0a9064fbSMasahiro Yamada
1051*0a9064fbSMasahiro Yamada
1052*0a9064fbSMasahiro Yamada/* YYINITDEPTH -- initial size of the parser's stacks.  */
1053*0a9064fbSMasahiro Yamada#ifndef	YYINITDEPTH
1054*0a9064fbSMasahiro Yamada# define YYINITDEPTH 200
1055*0a9064fbSMasahiro Yamada#endif
1056*0a9064fbSMasahiro Yamada
1057*0a9064fbSMasahiro Yamada/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1058*0a9064fbSMasahiro Yamada   if the built-in stack extension method is used).
1059*0a9064fbSMasahiro Yamada
1060*0a9064fbSMasahiro Yamada   Do not make this value too large; the results are undefined if
1061*0a9064fbSMasahiro Yamada   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1062*0a9064fbSMasahiro Yamada   evaluated with infinite-precision integer arithmetic.  */
1063*0a9064fbSMasahiro Yamada
1064*0a9064fbSMasahiro Yamada#ifndef YYMAXDEPTH
1065*0a9064fbSMasahiro Yamada# define YYMAXDEPTH 10000
1066*0a9064fbSMasahiro Yamada#endif
1067*0a9064fbSMasahiro Yamada
1068*0a9064fbSMasahiro Yamada
1069*0a9064fbSMasahiro Yamada#if YYERROR_VERBOSE
1070*0a9064fbSMasahiro Yamada
1071*0a9064fbSMasahiro Yamada# ifndef yystrlen
1072*0a9064fbSMasahiro Yamada#  if defined __GLIBC__ && defined _STRING_H
1073*0a9064fbSMasahiro Yamada#   define yystrlen strlen
1074*0a9064fbSMasahiro Yamada#  else
1075*0a9064fbSMasahiro Yamada/* Return the length of YYSTR.  */
1076*0a9064fbSMasahiro Yamada#if (defined __STDC__ || defined __C99__FUNC__ \
1077*0a9064fbSMasahiro Yamada     || defined __cplusplus || defined _MSC_VER)
1078*0a9064fbSMasahiro Yamadastatic YYSIZE_T
1079*0a9064fbSMasahiro Yamadayystrlen (const char *yystr)
1080*0a9064fbSMasahiro Yamada#else
1081*0a9064fbSMasahiro Yamadastatic YYSIZE_T
1082*0a9064fbSMasahiro Yamadayystrlen (yystr)
1083*0a9064fbSMasahiro Yamada    const char *yystr;
1084*0a9064fbSMasahiro Yamada#endif
1085*0a9064fbSMasahiro Yamada{
1086*0a9064fbSMasahiro Yamada  YYSIZE_T yylen;
1087*0a9064fbSMasahiro Yamada  for (yylen = 0; yystr[yylen]; yylen++)
1088*0a9064fbSMasahiro Yamada    continue;
1089*0a9064fbSMasahiro Yamada  return yylen;
1090*0a9064fbSMasahiro Yamada}
1091*0a9064fbSMasahiro Yamada#  endif
1092*0a9064fbSMasahiro Yamada# endif
1093*0a9064fbSMasahiro Yamada
1094*0a9064fbSMasahiro Yamada# ifndef yystpcpy
1095*0a9064fbSMasahiro Yamada#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1096*0a9064fbSMasahiro Yamada#   define yystpcpy stpcpy
1097*0a9064fbSMasahiro Yamada#  else
1098*0a9064fbSMasahiro Yamada/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1099*0a9064fbSMasahiro Yamada   YYDEST.  */
1100*0a9064fbSMasahiro Yamada#if (defined __STDC__ || defined __C99__FUNC__ \
1101*0a9064fbSMasahiro Yamada     || defined __cplusplus || defined _MSC_VER)
1102*0a9064fbSMasahiro Yamadastatic char *
1103*0a9064fbSMasahiro Yamadayystpcpy (char *yydest, const char *yysrc)
1104*0a9064fbSMasahiro Yamada#else
1105*0a9064fbSMasahiro Yamadastatic char *
1106*0a9064fbSMasahiro Yamadayystpcpy (yydest, yysrc)
1107*0a9064fbSMasahiro Yamada    char *yydest;
1108*0a9064fbSMasahiro Yamada    const char *yysrc;
1109*0a9064fbSMasahiro Yamada#endif
1110*0a9064fbSMasahiro Yamada{
1111*0a9064fbSMasahiro Yamada  char *yyd = yydest;
1112*0a9064fbSMasahiro Yamada  const char *yys = yysrc;
1113*0a9064fbSMasahiro Yamada
1114*0a9064fbSMasahiro Yamada  while ((*yyd++ = *yys++) != '\0')
1115*0a9064fbSMasahiro Yamada    continue;
1116*0a9064fbSMasahiro Yamada
1117*0a9064fbSMasahiro Yamada  return yyd - 1;
1118*0a9064fbSMasahiro Yamada}
1119*0a9064fbSMasahiro Yamada#  endif
1120*0a9064fbSMasahiro Yamada# endif
1121*0a9064fbSMasahiro Yamada
1122*0a9064fbSMasahiro Yamada# ifndef yytnamerr
1123*0a9064fbSMasahiro Yamada/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1124*0a9064fbSMasahiro Yamada   quotes and backslashes, so that it's suitable for yyerror.  The
1125*0a9064fbSMasahiro Yamada   heuristic is that double-quoting is unnecessary unless the string
1126*0a9064fbSMasahiro Yamada   contains an apostrophe, a comma, or backslash (other than
1127*0a9064fbSMasahiro Yamada   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1128*0a9064fbSMasahiro Yamada   null, do not copy; instead, return the length of what the result
1129*0a9064fbSMasahiro Yamada   would have been.  */
1130*0a9064fbSMasahiro Yamadastatic YYSIZE_T
1131*0a9064fbSMasahiro Yamadayytnamerr (char *yyres, const char *yystr)
1132*0a9064fbSMasahiro Yamada{
1133*0a9064fbSMasahiro Yamada  if (*yystr == '"')
1134*0a9064fbSMasahiro Yamada    {
1135*0a9064fbSMasahiro Yamada      YYSIZE_T yyn = 0;
1136*0a9064fbSMasahiro Yamada      char const *yyp = yystr;
1137*0a9064fbSMasahiro Yamada
1138*0a9064fbSMasahiro Yamada      for (;;)
1139*0a9064fbSMasahiro Yamada	switch (*++yyp)
1140*0a9064fbSMasahiro Yamada	  {
1141*0a9064fbSMasahiro Yamada	  case '\'':
1142*0a9064fbSMasahiro Yamada	  case ',':
1143*0a9064fbSMasahiro Yamada	    goto do_not_strip_quotes;
1144*0a9064fbSMasahiro Yamada
1145*0a9064fbSMasahiro Yamada	  case '\\':
1146*0a9064fbSMasahiro Yamada	    if (*++yyp != '\\')
1147*0a9064fbSMasahiro Yamada	      goto do_not_strip_quotes;
1148*0a9064fbSMasahiro Yamada	    /* Fall through.  */
1149*0a9064fbSMasahiro Yamada	  default:
1150*0a9064fbSMasahiro Yamada	    if (yyres)
1151*0a9064fbSMasahiro Yamada	      yyres[yyn] = *yyp;
1152*0a9064fbSMasahiro Yamada	    yyn++;
1153*0a9064fbSMasahiro Yamada	    break;
1154*0a9064fbSMasahiro Yamada
1155*0a9064fbSMasahiro Yamada	  case '"':
1156*0a9064fbSMasahiro Yamada	    if (yyres)
1157*0a9064fbSMasahiro Yamada	      yyres[yyn] = '\0';
1158*0a9064fbSMasahiro Yamada	    return yyn;
1159*0a9064fbSMasahiro Yamada	  }
1160*0a9064fbSMasahiro Yamada    do_not_strip_quotes: ;
1161*0a9064fbSMasahiro Yamada    }
1162*0a9064fbSMasahiro Yamada
1163*0a9064fbSMasahiro Yamada  if (! yyres)
1164*0a9064fbSMasahiro Yamada    return yystrlen (yystr);
1165*0a9064fbSMasahiro Yamada
1166*0a9064fbSMasahiro Yamada  return yystpcpy (yyres, yystr) - yyres;
1167*0a9064fbSMasahiro Yamada}
1168*0a9064fbSMasahiro Yamada# endif
1169*0a9064fbSMasahiro Yamada
1170*0a9064fbSMasahiro Yamada/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1171*0a9064fbSMasahiro Yamada   about the unexpected token YYTOKEN for the state stack whose top is
1172*0a9064fbSMasahiro Yamada   YYSSP.
1173*0a9064fbSMasahiro Yamada
1174*0a9064fbSMasahiro Yamada   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
1175*0a9064fbSMasahiro Yamada   not large enough to hold the message.  In that case, also set
1176*0a9064fbSMasahiro Yamada   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
1177*0a9064fbSMasahiro Yamada   required number of bytes is too large to store.  */
1178*0a9064fbSMasahiro Yamadastatic int
1179*0a9064fbSMasahiro Yamadayysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1180*0a9064fbSMasahiro Yamada                yytype_int16 *yyssp, int yytoken)
1181*0a9064fbSMasahiro Yamada{
1182*0a9064fbSMasahiro Yamada  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
1183*0a9064fbSMasahiro Yamada  YYSIZE_T yysize = yysize0;
1184*0a9064fbSMasahiro Yamada  YYSIZE_T yysize1;
1185*0a9064fbSMasahiro Yamada  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1186*0a9064fbSMasahiro Yamada  /* Internationalized format string. */
1187*0a9064fbSMasahiro Yamada  const char *yyformat = 0;
1188*0a9064fbSMasahiro Yamada  /* Arguments of yyformat. */
1189*0a9064fbSMasahiro Yamada  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1190*0a9064fbSMasahiro Yamada  /* Number of reported tokens (one for the "unexpected", one per
1191*0a9064fbSMasahiro Yamada     "expected"). */
1192*0a9064fbSMasahiro Yamada  int yycount = 0;
1193*0a9064fbSMasahiro Yamada
1194*0a9064fbSMasahiro Yamada  /* There are many possibilities here to consider:
1195*0a9064fbSMasahiro Yamada     - Assume YYFAIL is not used.  It's too flawed to consider.  See
1196*0a9064fbSMasahiro Yamada       <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
1197*0a9064fbSMasahiro Yamada       for details.  YYERROR is fine as it does not invoke this
1198*0a9064fbSMasahiro Yamada       function.
1199*0a9064fbSMasahiro Yamada     - If this state is a consistent state with a default action, then
1200*0a9064fbSMasahiro Yamada       the only way this function was invoked is if the default action
1201*0a9064fbSMasahiro Yamada       is an error action.  In that case, don't check for expected
1202*0a9064fbSMasahiro Yamada       tokens because there are none.
1203*0a9064fbSMasahiro Yamada     - The only way there can be no lookahead present (in yychar) is if
1204*0a9064fbSMasahiro Yamada       this state is a consistent state with a default action.  Thus,
1205*0a9064fbSMasahiro Yamada       detecting the absence of a lookahead is sufficient to determine
1206*0a9064fbSMasahiro Yamada       that there is no unexpected or expected token to report.  In that
1207*0a9064fbSMasahiro Yamada       case, just report a simple "syntax error".
1208*0a9064fbSMasahiro Yamada     - Don't assume there isn't a lookahead just because this state is a
1209*0a9064fbSMasahiro Yamada       consistent state with a default action.  There might have been a
1210*0a9064fbSMasahiro Yamada       previous inconsistent state, consistent state with a non-default
1211*0a9064fbSMasahiro Yamada       action, or user semantic action that manipulated yychar.
1212*0a9064fbSMasahiro Yamada     - Of course, the expected token list depends on states to have
1213*0a9064fbSMasahiro Yamada       correct lookahead information, and it depends on the parser not
1214*0a9064fbSMasahiro Yamada       to perform extra reductions after fetching a lookahead from the
1215*0a9064fbSMasahiro Yamada       scanner and before detecting a syntax error.  Thus, state merging
1216*0a9064fbSMasahiro Yamada       (from LALR or IELR) and default reductions corrupt the expected
1217*0a9064fbSMasahiro Yamada       token list.  However, the list is correct for canonical LR with
1218*0a9064fbSMasahiro Yamada       one exception: it will still contain any token that will not be
1219*0a9064fbSMasahiro Yamada       accepted due to an error action in a later state.
1220*0a9064fbSMasahiro Yamada  */
1221*0a9064fbSMasahiro Yamada  if (yytoken != YYEMPTY)
1222*0a9064fbSMasahiro Yamada    {
1223*0a9064fbSMasahiro Yamada      int yyn = yypact[*yyssp];
1224*0a9064fbSMasahiro Yamada      yyarg[yycount++] = yytname[yytoken];
1225*0a9064fbSMasahiro Yamada      if (!yypact_value_is_default (yyn))
1226*0a9064fbSMasahiro Yamada        {
1227*0a9064fbSMasahiro Yamada          /* Start YYX at -YYN if negative to avoid negative indexes in
1228*0a9064fbSMasahiro Yamada             YYCHECK.  In other words, skip the first -YYN actions for
1229*0a9064fbSMasahiro Yamada             this state because they are default actions.  */
1230*0a9064fbSMasahiro Yamada          int yyxbegin = yyn < 0 ? -yyn : 0;
1231*0a9064fbSMasahiro Yamada          /* Stay within bounds of both yycheck and yytname.  */
1232*0a9064fbSMasahiro Yamada          int yychecklim = YYLAST - yyn + 1;
1233*0a9064fbSMasahiro Yamada          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1234*0a9064fbSMasahiro Yamada          int yyx;
1235*0a9064fbSMasahiro Yamada
1236*0a9064fbSMasahiro Yamada          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1237*0a9064fbSMasahiro Yamada            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
1238*0a9064fbSMasahiro Yamada                && !yytable_value_is_error (yytable[yyx + yyn]))
1239*0a9064fbSMasahiro Yamada              {
1240*0a9064fbSMasahiro Yamada                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1241*0a9064fbSMasahiro Yamada                  {
1242*0a9064fbSMasahiro Yamada                    yycount = 1;
1243*0a9064fbSMasahiro Yamada                    yysize = yysize0;
1244*0a9064fbSMasahiro Yamada                    break;
1245*0a9064fbSMasahiro Yamada                  }
1246*0a9064fbSMasahiro Yamada                yyarg[yycount++] = yytname[yyx];
1247*0a9064fbSMasahiro Yamada                yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1248*0a9064fbSMasahiro Yamada                if (! (yysize <= yysize1
1249*0a9064fbSMasahiro Yamada                       && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1250*0a9064fbSMasahiro Yamada                  return 2;
1251*0a9064fbSMasahiro Yamada                yysize = yysize1;
1252*0a9064fbSMasahiro Yamada              }
1253*0a9064fbSMasahiro Yamada        }
1254*0a9064fbSMasahiro Yamada    }
1255*0a9064fbSMasahiro Yamada
1256*0a9064fbSMasahiro Yamada  switch (yycount)
1257*0a9064fbSMasahiro Yamada    {
1258*0a9064fbSMasahiro Yamada# define YYCASE_(N, S)                      \
1259*0a9064fbSMasahiro Yamada      case N:                               \
1260*0a9064fbSMasahiro Yamada        yyformat = S;                       \
1261*0a9064fbSMasahiro Yamada      break
1262*0a9064fbSMasahiro Yamada      YYCASE_(0, YY_("syntax error"));
1263*0a9064fbSMasahiro Yamada      YYCASE_(1, YY_("syntax error, unexpected %s"));
1264*0a9064fbSMasahiro Yamada      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1265*0a9064fbSMasahiro Yamada      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1266*0a9064fbSMasahiro Yamada      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1267*0a9064fbSMasahiro Yamada      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1268*0a9064fbSMasahiro Yamada# undef YYCASE_
1269*0a9064fbSMasahiro Yamada    }
1270*0a9064fbSMasahiro Yamada
1271*0a9064fbSMasahiro Yamada  yysize1 = yysize + yystrlen (yyformat);
1272*0a9064fbSMasahiro Yamada  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1273*0a9064fbSMasahiro Yamada    return 2;
1274*0a9064fbSMasahiro Yamada  yysize = yysize1;
1275*0a9064fbSMasahiro Yamada
1276*0a9064fbSMasahiro Yamada  if (*yymsg_alloc < yysize)
1277*0a9064fbSMasahiro Yamada    {
1278*0a9064fbSMasahiro Yamada      *yymsg_alloc = 2 * yysize;
1279*0a9064fbSMasahiro Yamada      if (! (yysize <= *yymsg_alloc
1280*0a9064fbSMasahiro Yamada             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1281*0a9064fbSMasahiro Yamada        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1282*0a9064fbSMasahiro Yamada      return 1;
1283*0a9064fbSMasahiro Yamada    }
1284*0a9064fbSMasahiro Yamada
1285*0a9064fbSMasahiro Yamada  /* Avoid sprintf, as that infringes on the user's name space.
1286*0a9064fbSMasahiro Yamada     Don't have undefined behavior even if the translation
1287*0a9064fbSMasahiro Yamada     produced a string with the wrong number of "%s"s.  */
1288*0a9064fbSMasahiro Yamada  {
1289*0a9064fbSMasahiro Yamada    char *yyp = *yymsg;
1290*0a9064fbSMasahiro Yamada    int yyi = 0;
1291*0a9064fbSMasahiro Yamada    while ((*yyp = *yyformat) != '\0')
1292*0a9064fbSMasahiro Yamada      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1293*0a9064fbSMasahiro Yamada        {
1294*0a9064fbSMasahiro Yamada          yyp += yytnamerr (yyp, yyarg[yyi++]);
1295*0a9064fbSMasahiro Yamada          yyformat += 2;
1296*0a9064fbSMasahiro Yamada        }
1297*0a9064fbSMasahiro Yamada      else
1298*0a9064fbSMasahiro Yamada        {
1299*0a9064fbSMasahiro Yamada          yyp++;
1300*0a9064fbSMasahiro Yamada          yyformat++;
1301*0a9064fbSMasahiro Yamada        }
1302*0a9064fbSMasahiro Yamada  }
1303*0a9064fbSMasahiro Yamada  return 0;
1304*0a9064fbSMasahiro Yamada}
1305*0a9064fbSMasahiro Yamada#endif /* YYERROR_VERBOSE */
1306*0a9064fbSMasahiro Yamada
1307*0a9064fbSMasahiro Yamada/*-----------------------------------------------.
1308*0a9064fbSMasahiro Yamada| Release the memory associated to this symbol.  |
1309*0a9064fbSMasahiro Yamada`-----------------------------------------------*/
1310*0a9064fbSMasahiro Yamada
1311*0a9064fbSMasahiro Yamada/*ARGSUSED*/
1312*0a9064fbSMasahiro Yamada#if (defined __STDC__ || defined __C99__FUNC__ \
1313*0a9064fbSMasahiro Yamada     || defined __cplusplus || defined _MSC_VER)
1314*0a9064fbSMasahiro Yamadastatic void
1315*0a9064fbSMasahiro Yamadayydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1316*0a9064fbSMasahiro Yamada#else
1317*0a9064fbSMasahiro Yamadastatic void
1318*0a9064fbSMasahiro Yamadayydestruct (yymsg, yytype, yyvaluep)
1319*0a9064fbSMasahiro Yamada    const char *yymsg;
1320*0a9064fbSMasahiro Yamada    int yytype;
1321*0a9064fbSMasahiro Yamada    YYSTYPE *yyvaluep;
1322*0a9064fbSMasahiro Yamada#endif
1323*0a9064fbSMasahiro Yamada{
1324*0a9064fbSMasahiro Yamada  YYUSE (yyvaluep);
1325*0a9064fbSMasahiro Yamada
1326*0a9064fbSMasahiro Yamada  if (!yymsg)
1327*0a9064fbSMasahiro Yamada    yymsg = "Deleting";
1328*0a9064fbSMasahiro Yamada  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1329*0a9064fbSMasahiro Yamada
1330*0a9064fbSMasahiro Yamada  switch (yytype)
1331*0a9064fbSMasahiro Yamada    {
1332*0a9064fbSMasahiro Yamada      case 53: /* "choice_entry" */
1333*0a9064fbSMasahiro Yamada
1334*0a9064fbSMasahiro Yamada	{
1335*0a9064fbSMasahiro Yamada	fprintf(stderr, "%s:%d: missing end statement for this entry\n",
1336*0a9064fbSMasahiro Yamada		(yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
1337*0a9064fbSMasahiro Yamada	if (current_menu == (yyvaluep->menu))
1338*0a9064fbSMasahiro Yamada		menu_end_menu();
1339*0a9064fbSMasahiro Yamada};
1340*0a9064fbSMasahiro Yamada
1341*0a9064fbSMasahiro Yamada	break;
1342*0a9064fbSMasahiro Yamada      case 59: /* "if_entry" */
1343*0a9064fbSMasahiro Yamada
1344*0a9064fbSMasahiro Yamada	{
1345*0a9064fbSMasahiro Yamada	fprintf(stderr, "%s:%d: missing end statement for this entry\n",
1346*0a9064fbSMasahiro Yamada		(yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
1347*0a9064fbSMasahiro Yamada	if (current_menu == (yyvaluep->menu))
1348*0a9064fbSMasahiro Yamada		menu_end_menu();
1349*0a9064fbSMasahiro Yamada};
1350*0a9064fbSMasahiro Yamada
1351*0a9064fbSMasahiro Yamada	break;
1352*0a9064fbSMasahiro Yamada      case 65: /* "menu_entry" */
1353*0a9064fbSMasahiro Yamada
1354*0a9064fbSMasahiro Yamada	{
1355*0a9064fbSMasahiro Yamada	fprintf(stderr, "%s:%d: missing end statement for this entry\n",
1356*0a9064fbSMasahiro Yamada		(yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
1357*0a9064fbSMasahiro Yamada	if (current_menu == (yyvaluep->menu))
1358*0a9064fbSMasahiro Yamada		menu_end_menu();
1359*0a9064fbSMasahiro Yamada};
1360*0a9064fbSMasahiro Yamada
1361*0a9064fbSMasahiro Yamada	break;
1362*0a9064fbSMasahiro Yamada
1363*0a9064fbSMasahiro Yamada      default:
1364*0a9064fbSMasahiro Yamada	break;
1365*0a9064fbSMasahiro Yamada    }
1366*0a9064fbSMasahiro Yamada}
1367*0a9064fbSMasahiro Yamada
1368*0a9064fbSMasahiro Yamada
1369*0a9064fbSMasahiro Yamada/* Prevent warnings from -Wmissing-prototypes.  */
1370*0a9064fbSMasahiro Yamada#ifdef YYPARSE_PARAM
1371*0a9064fbSMasahiro Yamada#if defined __STDC__ || defined __cplusplus
1372*0a9064fbSMasahiro Yamadaint yyparse (void *YYPARSE_PARAM);
1373*0a9064fbSMasahiro Yamada#else
1374*0a9064fbSMasahiro Yamadaint yyparse ();
1375*0a9064fbSMasahiro Yamada#endif
1376*0a9064fbSMasahiro Yamada#else /* ! YYPARSE_PARAM */
1377*0a9064fbSMasahiro Yamada#if defined __STDC__ || defined __cplusplus
1378*0a9064fbSMasahiro Yamadaint yyparse (void);
1379*0a9064fbSMasahiro Yamada#else
1380*0a9064fbSMasahiro Yamadaint yyparse ();
1381*0a9064fbSMasahiro Yamada#endif
1382*0a9064fbSMasahiro Yamada#endif /* ! YYPARSE_PARAM */
1383*0a9064fbSMasahiro Yamada
1384*0a9064fbSMasahiro Yamada
1385*0a9064fbSMasahiro Yamada/* The lookahead symbol.  */
1386*0a9064fbSMasahiro Yamadaint yychar;
1387*0a9064fbSMasahiro Yamada
1388*0a9064fbSMasahiro Yamada/* The semantic value of the lookahead symbol.  */
1389*0a9064fbSMasahiro YamadaYYSTYPE yylval;
1390*0a9064fbSMasahiro Yamada
1391*0a9064fbSMasahiro Yamada/* Number of syntax errors so far.  */
1392*0a9064fbSMasahiro Yamadaint yynerrs;
1393*0a9064fbSMasahiro Yamada
1394*0a9064fbSMasahiro Yamada
1395*0a9064fbSMasahiro Yamada/*----------.
1396*0a9064fbSMasahiro Yamada| yyparse.  |
1397*0a9064fbSMasahiro Yamada`----------*/
1398*0a9064fbSMasahiro Yamada
1399*0a9064fbSMasahiro Yamada#ifdef YYPARSE_PARAM
1400*0a9064fbSMasahiro Yamada#if (defined __STDC__ || defined __C99__FUNC__ \
1401*0a9064fbSMasahiro Yamada     || defined __cplusplus || defined _MSC_VER)
1402*0a9064fbSMasahiro Yamadaint
1403*0a9064fbSMasahiro Yamadayyparse (void *YYPARSE_PARAM)
1404*0a9064fbSMasahiro Yamada#else
1405*0a9064fbSMasahiro Yamadaint
1406*0a9064fbSMasahiro Yamadayyparse (YYPARSE_PARAM)
1407*0a9064fbSMasahiro Yamada    void *YYPARSE_PARAM;
1408*0a9064fbSMasahiro Yamada#endif
1409*0a9064fbSMasahiro Yamada#else /* ! YYPARSE_PARAM */
1410*0a9064fbSMasahiro Yamada#if (defined __STDC__ || defined __C99__FUNC__ \
1411*0a9064fbSMasahiro Yamada     || defined __cplusplus || defined _MSC_VER)
1412*0a9064fbSMasahiro Yamadaint
1413*0a9064fbSMasahiro Yamadayyparse (void)
1414*0a9064fbSMasahiro Yamada#else
1415*0a9064fbSMasahiro Yamadaint
1416*0a9064fbSMasahiro Yamadayyparse ()
1417*0a9064fbSMasahiro Yamada
1418*0a9064fbSMasahiro Yamada#endif
1419*0a9064fbSMasahiro Yamada#endif
1420*0a9064fbSMasahiro Yamada{
1421*0a9064fbSMasahiro Yamada    int yystate;
1422*0a9064fbSMasahiro Yamada    /* Number of tokens to shift before error messages enabled.  */
1423*0a9064fbSMasahiro Yamada    int yyerrstatus;
1424*0a9064fbSMasahiro Yamada
1425*0a9064fbSMasahiro Yamada    /* The stacks and their tools:
1426*0a9064fbSMasahiro Yamada       `yyss': related to states.
1427*0a9064fbSMasahiro Yamada       `yyvs': related to semantic values.
1428*0a9064fbSMasahiro Yamada
1429*0a9064fbSMasahiro Yamada       Refer to the stacks thru separate pointers, to allow yyoverflow
1430*0a9064fbSMasahiro Yamada       to reallocate them elsewhere.  */
1431*0a9064fbSMasahiro Yamada
1432*0a9064fbSMasahiro Yamada    /* The state stack.  */
1433*0a9064fbSMasahiro Yamada    yytype_int16 yyssa[YYINITDEPTH];
1434*0a9064fbSMasahiro Yamada    yytype_int16 *yyss;
1435*0a9064fbSMasahiro Yamada    yytype_int16 *yyssp;
1436*0a9064fbSMasahiro Yamada
1437*0a9064fbSMasahiro Yamada    /* The semantic value stack.  */
1438*0a9064fbSMasahiro Yamada    YYSTYPE yyvsa[YYINITDEPTH];
1439*0a9064fbSMasahiro Yamada    YYSTYPE *yyvs;
1440*0a9064fbSMasahiro Yamada    YYSTYPE *yyvsp;
1441*0a9064fbSMasahiro Yamada
1442*0a9064fbSMasahiro Yamada    YYSIZE_T yystacksize;
1443*0a9064fbSMasahiro Yamada
1444*0a9064fbSMasahiro Yamada  int yyn;
1445*0a9064fbSMasahiro Yamada  int yyresult;
1446*0a9064fbSMasahiro Yamada  /* Lookahead token as an internal (translated) token number.  */
1447*0a9064fbSMasahiro Yamada  int yytoken;
1448*0a9064fbSMasahiro Yamada  /* The variables used to return semantic value and location from the
1449*0a9064fbSMasahiro Yamada     action routines.  */
1450*0a9064fbSMasahiro Yamada  YYSTYPE yyval;
1451*0a9064fbSMasahiro Yamada
1452*0a9064fbSMasahiro Yamada#if YYERROR_VERBOSE
1453*0a9064fbSMasahiro Yamada  /* Buffer for error messages, and its allocated size.  */
1454*0a9064fbSMasahiro Yamada  char yymsgbuf[128];
1455*0a9064fbSMasahiro Yamada  char *yymsg = yymsgbuf;
1456*0a9064fbSMasahiro Yamada  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1457*0a9064fbSMasahiro Yamada#endif
1458*0a9064fbSMasahiro Yamada
1459*0a9064fbSMasahiro Yamada#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1460*0a9064fbSMasahiro Yamada
1461*0a9064fbSMasahiro Yamada  /* The number of symbols on the RHS of the reduced rule.
1462*0a9064fbSMasahiro Yamada     Keep to zero when no symbol should be popped.  */
1463*0a9064fbSMasahiro Yamada  int yylen = 0;
1464*0a9064fbSMasahiro Yamada
1465*0a9064fbSMasahiro Yamada  yytoken = 0;
1466*0a9064fbSMasahiro Yamada  yyss = yyssa;
1467*0a9064fbSMasahiro Yamada  yyvs = yyvsa;
1468*0a9064fbSMasahiro Yamada  yystacksize = YYINITDEPTH;
1469*0a9064fbSMasahiro Yamada
1470*0a9064fbSMasahiro Yamada  YYDPRINTF ((stderr, "Starting parse\n"));
1471*0a9064fbSMasahiro Yamada
1472*0a9064fbSMasahiro Yamada  yystate = 0;
1473*0a9064fbSMasahiro Yamada  yyerrstatus = 0;
1474*0a9064fbSMasahiro Yamada  yynerrs = 0;
1475*0a9064fbSMasahiro Yamada  yychar = YYEMPTY; /* Cause a token to be read.  */
1476*0a9064fbSMasahiro Yamada
1477*0a9064fbSMasahiro Yamada  /* Initialize stack pointers.
1478*0a9064fbSMasahiro Yamada     Waste one element of value and location stack
1479*0a9064fbSMasahiro Yamada     so that they stay on the same level as the state stack.
1480*0a9064fbSMasahiro Yamada     The wasted elements are never initialized.  */
1481*0a9064fbSMasahiro Yamada  yyssp = yyss;
1482*0a9064fbSMasahiro Yamada  yyvsp = yyvs;
1483*0a9064fbSMasahiro Yamada
1484*0a9064fbSMasahiro Yamada  goto yysetstate;
1485*0a9064fbSMasahiro Yamada
1486*0a9064fbSMasahiro Yamada/*------------------------------------------------------------.
1487*0a9064fbSMasahiro Yamada| yynewstate -- Push a new state, which is found in yystate.  |
1488*0a9064fbSMasahiro Yamada`------------------------------------------------------------*/
1489*0a9064fbSMasahiro Yamada yynewstate:
1490*0a9064fbSMasahiro Yamada  /* In all cases, when you get here, the value and location stacks
1491*0a9064fbSMasahiro Yamada     have just been pushed.  So pushing a state here evens the stacks.  */
1492*0a9064fbSMasahiro Yamada  yyssp++;
1493*0a9064fbSMasahiro Yamada
1494*0a9064fbSMasahiro Yamada yysetstate:
1495*0a9064fbSMasahiro Yamada  *yyssp = yystate;
1496*0a9064fbSMasahiro Yamada
1497*0a9064fbSMasahiro Yamada  if (yyss + yystacksize - 1 <= yyssp)
1498*0a9064fbSMasahiro Yamada    {
1499*0a9064fbSMasahiro Yamada      /* Get the current used size of the three stacks, in elements.  */
1500*0a9064fbSMasahiro Yamada      YYSIZE_T yysize = yyssp - yyss + 1;
1501*0a9064fbSMasahiro Yamada
1502*0a9064fbSMasahiro Yamada#ifdef yyoverflow
1503*0a9064fbSMasahiro Yamada      {
1504*0a9064fbSMasahiro Yamada	/* Give user a chance to reallocate the stack.  Use copies of
1505*0a9064fbSMasahiro Yamada	   these so that the &'s don't force the real ones into
1506*0a9064fbSMasahiro Yamada	   memory.  */
1507*0a9064fbSMasahiro Yamada	YYSTYPE *yyvs1 = yyvs;
1508*0a9064fbSMasahiro Yamada	yytype_int16 *yyss1 = yyss;
1509*0a9064fbSMasahiro Yamada
1510*0a9064fbSMasahiro Yamada	/* Each stack pointer address is followed by the size of the
1511*0a9064fbSMasahiro Yamada	   data in use in that stack, in bytes.  This used to be a
1512*0a9064fbSMasahiro Yamada	   conditional around just the two extra args, but that might
1513*0a9064fbSMasahiro Yamada	   be undefined if yyoverflow is a macro.  */
1514*0a9064fbSMasahiro Yamada	yyoverflow (YY_("memory exhausted"),
1515*0a9064fbSMasahiro Yamada		    &yyss1, yysize * sizeof (*yyssp),
1516*0a9064fbSMasahiro Yamada		    &yyvs1, yysize * sizeof (*yyvsp),
1517*0a9064fbSMasahiro Yamada		    &yystacksize);
1518*0a9064fbSMasahiro Yamada
1519*0a9064fbSMasahiro Yamada	yyss = yyss1;
1520*0a9064fbSMasahiro Yamada	yyvs = yyvs1;
1521*0a9064fbSMasahiro Yamada      }
1522*0a9064fbSMasahiro Yamada#else /* no yyoverflow */
1523*0a9064fbSMasahiro Yamada# ifndef YYSTACK_RELOCATE
1524*0a9064fbSMasahiro Yamada      goto yyexhaustedlab;
1525*0a9064fbSMasahiro Yamada# else
1526*0a9064fbSMasahiro Yamada      /* Extend the stack our own way.  */
1527*0a9064fbSMasahiro Yamada      if (YYMAXDEPTH <= yystacksize)
1528*0a9064fbSMasahiro Yamada	goto yyexhaustedlab;
1529*0a9064fbSMasahiro Yamada      yystacksize *= 2;
1530*0a9064fbSMasahiro Yamada      if (YYMAXDEPTH < yystacksize)
1531*0a9064fbSMasahiro Yamada	yystacksize = YYMAXDEPTH;
1532*0a9064fbSMasahiro Yamada
1533*0a9064fbSMasahiro Yamada      {
1534*0a9064fbSMasahiro Yamada	yytype_int16 *yyss1 = yyss;
1535*0a9064fbSMasahiro Yamada	union yyalloc *yyptr =
1536*0a9064fbSMasahiro Yamada	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1537*0a9064fbSMasahiro Yamada	if (! yyptr)
1538*0a9064fbSMasahiro Yamada	  goto yyexhaustedlab;
1539*0a9064fbSMasahiro Yamada	YYSTACK_RELOCATE (yyss_alloc, yyss);
1540*0a9064fbSMasahiro Yamada	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1541*0a9064fbSMasahiro Yamada#  undef YYSTACK_RELOCATE
1542*0a9064fbSMasahiro Yamada	if (yyss1 != yyssa)
1543*0a9064fbSMasahiro Yamada	  YYSTACK_FREE (yyss1);
1544*0a9064fbSMasahiro Yamada      }
1545*0a9064fbSMasahiro Yamada# endif
1546*0a9064fbSMasahiro Yamada#endif /* no yyoverflow */
1547*0a9064fbSMasahiro Yamada
1548*0a9064fbSMasahiro Yamada      yyssp = yyss + yysize - 1;
1549*0a9064fbSMasahiro Yamada      yyvsp = yyvs + yysize - 1;
1550*0a9064fbSMasahiro Yamada
1551*0a9064fbSMasahiro Yamada      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1552*0a9064fbSMasahiro Yamada		  (unsigned long int) yystacksize));
1553*0a9064fbSMasahiro Yamada
1554*0a9064fbSMasahiro Yamada      if (yyss + yystacksize - 1 <= yyssp)
1555*0a9064fbSMasahiro Yamada	YYABORT;
1556*0a9064fbSMasahiro Yamada    }
1557*0a9064fbSMasahiro Yamada
1558*0a9064fbSMasahiro Yamada  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1559*0a9064fbSMasahiro Yamada
1560*0a9064fbSMasahiro Yamada  if (yystate == YYFINAL)
1561*0a9064fbSMasahiro Yamada    YYACCEPT;
1562*0a9064fbSMasahiro Yamada
1563*0a9064fbSMasahiro Yamada  goto yybackup;
1564*0a9064fbSMasahiro Yamada
1565*0a9064fbSMasahiro Yamada/*-----------.
1566*0a9064fbSMasahiro Yamada| yybackup.  |
1567*0a9064fbSMasahiro Yamada`-----------*/
1568*0a9064fbSMasahiro Yamadayybackup:
1569*0a9064fbSMasahiro Yamada
1570*0a9064fbSMasahiro Yamada  /* Do appropriate processing given the current state.  Read a
1571*0a9064fbSMasahiro Yamada     lookahead token if we need one and don't already have one.  */
1572*0a9064fbSMasahiro Yamada
1573*0a9064fbSMasahiro Yamada  /* First try to decide what to do without reference to lookahead token.  */
1574*0a9064fbSMasahiro Yamada  yyn = yypact[yystate];
1575*0a9064fbSMasahiro Yamada  if (yypact_value_is_default (yyn))
1576*0a9064fbSMasahiro Yamada    goto yydefault;
1577*0a9064fbSMasahiro Yamada
1578*0a9064fbSMasahiro Yamada  /* Not known => get a lookahead token if don't already have one.  */
1579*0a9064fbSMasahiro Yamada
1580*0a9064fbSMasahiro Yamada  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
1581*0a9064fbSMasahiro Yamada  if (yychar == YYEMPTY)
1582*0a9064fbSMasahiro Yamada    {
1583*0a9064fbSMasahiro Yamada      YYDPRINTF ((stderr, "Reading a token: "));
1584*0a9064fbSMasahiro Yamada      yychar = YYLEX;
1585*0a9064fbSMasahiro Yamada    }
1586*0a9064fbSMasahiro Yamada
1587*0a9064fbSMasahiro Yamada  if (yychar <= YYEOF)
1588*0a9064fbSMasahiro Yamada    {
1589*0a9064fbSMasahiro Yamada      yychar = yytoken = YYEOF;
1590*0a9064fbSMasahiro Yamada      YYDPRINTF ((stderr, "Now at end of input.\n"));
1591*0a9064fbSMasahiro Yamada    }
1592*0a9064fbSMasahiro Yamada  else
1593*0a9064fbSMasahiro Yamada    {
1594*0a9064fbSMasahiro Yamada      yytoken = YYTRANSLATE (yychar);
1595*0a9064fbSMasahiro Yamada      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1596*0a9064fbSMasahiro Yamada    }
1597*0a9064fbSMasahiro Yamada
1598*0a9064fbSMasahiro Yamada  /* If the proper action on seeing token YYTOKEN is to reduce or to
1599*0a9064fbSMasahiro Yamada     detect an error, take that action.  */
1600*0a9064fbSMasahiro Yamada  yyn += yytoken;
1601*0a9064fbSMasahiro Yamada  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1602*0a9064fbSMasahiro Yamada    goto yydefault;
1603*0a9064fbSMasahiro Yamada  yyn = yytable[yyn];
1604*0a9064fbSMasahiro Yamada  if (yyn <= 0)
1605*0a9064fbSMasahiro Yamada    {
1606*0a9064fbSMasahiro Yamada      if (yytable_value_is_error (yyn))
1607*0a9064fbSMasahiro Yamada        goto yyerrlab;
1608*0a9064fbSMasahiro Yamada      yyn = -yyn;
1609*0a9064fbSMasahiro Yamada      goto yyreduce;
1610*0a9064fbSMasahiro Yamada    }
1611*0a9064fbSMasahiro Yamada
1612*0a9064fbSMasahiro Yamada  /* Count tokens shifted since error; after three, turn off error
1613*0a9064fbSMasahiro Yamada     status.  */
1614*0a9064fbSMasahiro Yamada  if (yyerrstatus)
1615*0a9064fbSMasahiro Yamada    yyerrstatus--;
1616*0a9064fbSMasahiro Yamada
1617*0a9064fbSMasahiro Yamada  /* Shift the lookahead token.  */
1618*0a9064fbSMasahiro Yamada  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1619*0a9064fbSMasahiro Yamada
1620*0a9064fbSMasahiro Yamada  /* Discard the shifted token.  */
1621*0a9064fbSMasahiro Yamada  yychar = YYEMPTY;
1622*0a9064fbSMasahiro Yamada
1623*0a9064fbSMasahiro Yamada  yystate = yyn;
1624*0a9064fbSMasahiro Yamada  *++yyvsp = yylval;
1625*0a9064fbSMasahiro Yamada
1626*0a9064fbSMasahiro Yamada  goto yynewstate;
1627*0a9064fbSMasahiro Yamada
1628*0a9064fbSMasahiro Yamada
1629*0a9064fbSMasahiro Yamada/*-----------------------------------------------------------.
1630*0a9064fbSMasahiro Yamada| yydefault -- do the default action for the current state.  |
1631*0a9064fbSMasahiro Yamada`-----------------------------------------------------------*/
1632*0a9064fbSMasahiro Yamadayydefault:
1633*0a9064fbSMasahiro Yamada  yyn = yydefact[yystate];
1634*0a9064fbSMasahiro Yamada  if (yyn == 0)
1635*0a9064fbSMasahiro Yamada    goto yyerrlab;
1636*0a9064fbSMasahiro Yamada  goto yyreduce;
1637*0a9064fbSMasahiro Yamada
1638*0a9064fbSMasahiro Yamada
1639*0a9064fbSMasahiro Yamada/*-----------------------------.
1640*0a9064fbSMasahiro Yamada| yyreduce -- Do a reduction.  |
1641*0a9064fbSMasahiro Yamada`-----------------------------*/
1642*0a9064fbSMasahiro Yamadayyreduce:
1643*0a9064fbSMasahiro Yamada  /* yyn is the number of a rule to reduce with.  */
1644*0a9064fbSMasahiro Yamada  yylen = yyr2[yyn];
1645*0a9064fbSMasahiro Yamada
1646*0a9064fbSMasahiro Yamada  /* If YYLEN is nonzero, implement the default value of the action:
1647*0a9064fbSMasahiro Yamada     `$$ = $1'.
1648*0a9064fbSMasahiro Yamada
1649*0a9064fbSMasahiro Yamada     Otherwise, the following line sets YYVAL to garbage.
1650*0a9064fbSMasahiro Yamada     This behavior is undocumented and Bison
1651*0a9064fbSMasahiro Yamada     users should not rely upon it.  Assigning to YYVAL
1652*0a9064fbSMasahiro Yamada     unconditionally makes the parser a bit smaller, and it avoids a
1653*0a9064fbSMasahiro Yamada     GCC warning that YYVAL may be used uninitialized.  */
1654*0a9064fbSMasahiro Yamada  yyval = yyvsp[1-yylen];
1655*0a9064fbSMasahiro Yamada
1656*0a9064fbSMasahiro Yamada
1657*0a9064fbSMasahiro Yamada  YY_REDUCE_PRINT (yyn);
1658*0a9064fbSMasahiro Yamada  switch (yyn)
1659*0a9064fbSMasahiro Yamada    {
1660*0a9064fbSMasahiro Yamada        case 10:
1661*0a9064fbSMasahiro Yamada
1662*0a9064fbSMasahiro Yamada    { zconf_error("unexpected end statement"); }
1663*0a9064fbSMasahiro Yamada    break;
1664*0a9064fbSMasahiro Yamada
1665*0a9064fbSMasahiro Yamada  case 11:
1666*0a9064fbSMasahiro Yamada
1667*0a9064fbSMasahiro Yamada    { zconf_error("unknown statement \"%s\"", (yyvsp[(2) - (4)].string)); }
1668*0a9064fbSMasahiro Yamada    break;
1669*0a9064fbSMasahiro Yamada
1670*0a9064fbSMasahiro Yamada  case 12:
1671*0a9064fbSMasahiro Yamada
1672*0a9064fbSMasahiro Yamada    {
1673*0a9064fbSMasahiro Yamada	zconf_error("unexpected option \"%s\"", kconf_id_strings + (yyvsp[(2) - (4)].id)->name);
1674*0a9064fbSMasahiro Yamada}
1675*0a9064fbSMasahiro Yamada    break;
1676*0a9064fbSMasahiro Yamada
1677*0a9064fbSMasahiro Yamada  case 13:
1678*0a9064fbSMasahiro Yamada
1679*0a9064fbSMasahiro Yamada    { zconf_error("invalid statement"); }
1680*0a9064fbSMasahiro Yamada    break;
1681*0a9064fbSMasahiro Yamada
1682*0a9064fbSMasahiro Yamada  case 28:
1683*0a9064fbSMasahiro Yamada
1684*0a9064fbSMasahiro Yamada    { zconf_error("unknown option \"%s\"", (yyvsp[(1) - (3)].string)); }
1685*0a9064fbSMasahiro Yamada    break;
1686*0a9064fbSMasahiro Yamada
1687*0a9064fbSMasahiro Yamada  case 29:
1688*0a9064fbSMasahiro Yamada
1689*0a9064fbSMasahiro Yamada    { zconf_error("invalid option"); }
1690*0a9064fbSMasahiro Yamada    break;
1691*0a9064fbSMasahiro Yamada
1692*0a9064fbSMasahiro Yamada  case 30:
1693*0a9064fbSMasahiro Yamada
1694*0a9064fbSMasahiro Yamada    {
1695*0a9064fbSMasahiro Yamada	struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0);
1696*0a9064fbSMasahiro Yamada	sym->flags |= SYMBOL_OPTIONAL;
1697*0a9064fbSMasahiro Yamada	menu_add_entry(sym);
1698*0a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string));
1699*0a9064fbSMasahiro Yamada}
1700*0a9064fbSMasahiro Yamada    break;
1701*0a9064fbSMasahiro Yamada
1702*0a9064fbSMasahiro Yamada  case 31:
1703*0a9064fbSMasahiro Yamada
1704*0a9064fbSMasahiro Yamada    {
1705*0a9064fbSMasahiro Yamada	menu_end_entry();
1706*0a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
1707*0a9064fbSMasahiro Yamada}
1708*0a9064fbSMasahiro Yamada    break;
1709*0a9064fbSMasahiro Yamada
1710*0a9064fbSMasahiro Yamada  case 32:
1711*0a9064fbSMasahiro Yamada
1712*0a9064fbSMasahiro Yamada    {
1713*0a9064fbSMasahiro Yamada	struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0);
1714*0a9064fbSMasahiro Yamada	sym->flags |= SYMBOL_OPTIONAL;
1715*0a9064fbSMasahiro Yamada	menu_add_entry(sym);
1716*0a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string));
1717*0a9064fbSMasahiro Yamada}
1718*0a9064fbSMasahiro Yamada    break;
1719*0a9064fbSMasahiro Yamada
1720*0a9064fbSMasahiro Yamada  case 33:
1721*0a9064fbSMasahiro Yamada
1722*0a9064fbSMasahiro Yamada    {
1723*0a9064fbSMasahiro Yamada	if (current_entry->prompt)
1724*0a9064fbSMasahiro Yamada		current_entry->prompt->type = P_MENU;
1725*0a9064fbSMasahiro Yamada	else
1726*0a9064fbSMasahiro Yamada		zconfprint("warning: menuconfig statement without prompt");
1727*0a9064fbSMasahiro Yamada	menu_end_entry();
1728*0a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
1729*0a9064fbSMasahiro Yamada}
1730*0a9064fbSMasahiro Yamada    break;
1731*0a9064fbSMasahiro Yamada
1732*0a9064fbSMasahiro Yamada  case 41:
1733*0a9064fbSMasahiro Yamada
1734*0a9064fbSMasahiro Yamada    {
1735*0a9064fbSMasahiro Yamada	menu_set_type((yyvsp[(1) - (3)].id)->stype);
1736*0a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
1737*0a9064fbSMasahiro Yamada		zconf_curname(), zconf_lineno(),
1738*0a9064fbSMasahiro Yamada		(yyvsp[(1) - (3)].id)->stype);
1739*0a9064fbSMasahiro Yamada}
1740*0a9064fbSMasahiro Yamada    break;
1741*0a9064fbSMasahiro Yamada
1742*0a9064fbSMasahiro Yamada  case 42:
1743*0a9064fbSMasahiro Yamada
1744*0a9064fbSMasahiro Yamada    {
1745*0a9064fbSMasahiro Yamada	menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr));
1746*0a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
1747*0a9064fbSMasahiro Yamada}
1748*0a9064fbSMasahiro Yamada    break;
1749*0a9064fbSMasahiro Yamada
1750*0a9064fbSMasahiro Yamada  case 43:
1751*0a9064fbSMasahiro Yamada
1752*0a9064fbSMasahiro Yamada    {
1753*0a9064fbSMasahiro Yamada	menu_add_expr(P_DEFAULT, (yyvsp[(2) - (4)].expr), (yyvsp[(3) - (4)].expr));
1754*0a9064fbSMasahiro Yamada	if ((yyvsp[(1) - (4)].id)->stype != S_UNKNOWN)
1755*0a9064fbSMasahiro Yamada		menu_set_type((yyvsp[(1) - (4)].id)->stype);
1756*0a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:default(%u)\n",
1757*0a9064fbSMasahiro Yamada		zconf_curname(), zconf_lineno(),
1758*0a9064fbSMasahiro Yamada		(yyvsp[(1) - (4)].id)->stype);
1759*0a9064fbSMasahiro Yamada}
1760*0a9064fbSMasahiro Yamada    break;
1761*0a9064fbSMasahiro Yamada
1762*0a9064fbSMasahiro Yamada  case 44:
1763*0a9064fbSMasahiro Yamada
1764*0a9064fbSMasahiro Yamada    {
1765*0a9064fbSMasahiro Yamada	menu_add_symbol(P_SELECT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr));
1766*0a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno());
1767*0a9064fbSMasahiro Yamada}
1768*0a9064fbSMasahiro Yamada    break;
1769*0a9064fbSMasahiro Yamada
1770*0a9064fbSMasahiro Yamada  case 45:
1771*0a9064fbSMasahiro Yamada
1772*0a9064fbSMasahiro Yamada    {
1773*0a9064fbSMasahiro Yamada	menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[(2) - (5)].symbol), (yyvsp[(3) - (5)].symbol)), (yyvsp[(4) - (5)].expr));
1774*0a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
1775*0a9064fbSMasahiro Yamada}
1776*0a9064fbSMasahiro Yamada    break;
1777*0a9064fbSMasahiro Yamada
1778*0a9064fbSMasahiro Yamada  case 48:
1779*0a9064fbSMasahiro Yamada
1780*0a9064fbSMasahiro Yamada    {
1781*0a9064fbSMasahiro Yamada	const struct kconf_id *id = kconf_id_lookup((yyvsp[(2) - (3)].string), strlen((yyvsp[(2) - (3)].string)));
1782*0a9064fbSMasahiro Yamada	if (id && id->flags & TF_OPTION)
1783*0a9064fbSMasahiro Yamada		menu_add_option(id->token, (yyvsp[(3) - (3)].string));
1784*0a9064fbSMasahiro Yamada	else
1785*0a9064fbSMasahiro Yamada		zconfprint("warning: ignoring unknown option %s", (yyvsp[(2) - (3)].string));
1786*0a9064fbSMasahiro Yamada	free((yyvsp[(2) - (3)].string));
1787*0a9064fbSMasahiro Yamada}
1788*0a9064fbSMasahiro Yamada    break;
1789*0a9064fbSMasahiro Yamada
1790*0a9064fbSMasahiro Yamada  case 49:
1791*0a9064fbSMasahiro Yamada
1792*0a9064fbSMasahiro Yamada    { (yyval.string) = NULL; }
1793*0a9064fbSMasahiro Yamada    break;
1794*0a9064fbSMasahiro Yamada
1795*0a9064fbSMasahiro Yamada  case 50:
1796*0a9064fbSMasahiro Yamada
1797*0a9064fbSMasahiro Yamada    { (yyval.string) = (yyvsp[(2) - (2)].string); }
1798*0a9064fbSMasahiro Yamada    break;
1799*0a9064fbSMasahiro Yamada
1800*0a9064fbSMasahiro Yamada  case 51:
1801*0a9064fbSMasahiro Yamada
1802*0a9064fbSMasahiro Yamada    {
1803*0a9064fbSMasahiro Yamada	struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), SYMBOL_CHOICE);
1804*0a9064fbSMasahiro Yamada	sym->flags |= SYMBOL_AUTO;
1805*0a9064fbSMasahiro Yamada	menu_add_entry(sym);
1806*0a9064fbSMasahiro Yamada	menu_add_expr(P_CHOICE, NULL, NULL);
1807*0a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
1808*0a9064fbSMasahiro Yamada}
1809*0a9064fbSMasahiro Yamada    break;
1810*0a9064fbSMasahiro Yamada
1811*0a9064fbSMasahiro Yamada  case 52:
1812*0a9064fbSMasahiro Yamada
1813*0a9064fbSMasahiro Yamada    {
1814*0a9064fbSMasahiro Yamada	(yyval.menu) = menu_add_menu();
1815*0a9064fbSMasahiro Yamada}
1816*0a9064fbSMasahiro Yamada    break;
1817*0a9064fbSMasahiro Yamada
1818*0a9064fbSMasahiro Yamada  case 53:
1819*0a9064fbSMasahiro Yamada
1820*0a9064fbSMasahiro Yamada    {
1821*0a9064fbSMasahiro Yamada	if (zconf_endtoken((yyvsp[(1) - (1)].id), T_CHOICE, T_ENDCHOICE)) {
1822*0a9064fbSMasahiro Yamada		menu_end_menu();
1823*0a9064fbSMasahiro Yamada		printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno());
1824*0a9064fbSMasahiro Yamada	}
1825*0a9064fbSMasahiro Yamada}
1826*0a9064fbSMasahiro Yamada    break;
1827*0a9064fbSMasahiro Yamada
1828*0a9064fbSMasahiro Yamada  case 61:
1829*0a9064fbSMasahiro Yamada
1830*0a9064fbSMasahiro Yamada    {
1831*0a9064fbSMasahiro Yamada	menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr));
1832*0a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
1833*0a9064fbSMasahiro Yamada}
1834*0a9064fbSMasahiro Yamada    break;
1835*0a9064fbSMasahiro Yamada
1836*0a9064fbSMasahiro Yamada  case 62:
1837*0a9064fbSMasahiro Yamada
1838*0a9064fbSMasahiro Yamada    {
1839*0a9064fbSMasahiro Yamada	if ((yyvsp[(1) - (3)].id)->stype == S_BOOLEAN || (yyvsp[(1) - (3)].id)->stype == S_TRISTATE) {
1840*0a9064fbSMasahiro Yamada		menu_set_type((yyvsp[(1) - (3)].id)->stype);
1841*0a9064fbSMasahiro Yamada		printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
1842*0a9064fbSMasahiro Yamada			zconf_curname(), zconf_lineno(),
1843*0a9064fbSMasahiro Yamada			(yyvsp[(1) - (3)].id)->stype);
1844*0a9064fbSMasahiro Yamada	} else
1845*0a9064fbSMasahiro Yamada		YYERROR;
1846*0a9064fbSMasahiro Yamada}
1847*0a9064fbSMasahiro Yamada    break;
1848*0a9064fbSMasahiro Yamada
1849*0a9064fbSMasahiro Yamada  case 63:
1850*0a9064fbSMasahiro Yamada
1851*0a9064fbSMasahiro Yamada    {
1852*0a9064fbSMasahiro Yamada	current_entry->sym->flags |= SYMBOL_OPTIONAL;
1853*0a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
1854*0a9064fbSMasahiro Yamada}
1855*0a9064fbSMasahiro Yamada    break;
1856*0a9064fbSMasahiro Yamada
1857*0a9064fbSMasahiro Yamada  case 64:
1858*0a9064fbSMasahiro Yamada
1859*0a9064fbSMasahiro Yamada    {
1860*0a9064fbSMasahiro Yamada	if ((yyvsp[(1) - (4)].id)->stype == S_UNKNOWN) {
1861*0a9064fbSMasahiro Yamada		menu_add_symbol(P_DEFAULT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr));
1862*0a9064fbSMasahiro Yamada		printd(DEBUG_PARSE, "%s:%d:default\n",
1863*0a9064fbSMasahiro Yamada			zconf_curname(), zconf_lineno());
1864*0a9064fbSMasahiro Yamada	} else
1865*0a9064fbSMasahiro Yamada		YYERROR;
1866*0a9064fbSMasahiro Yamada}
1867*0a9064fbSMasahiro Yamada    break;
1868*0a9064fbSMasahiro Yamada
1869*0a9064fbSMasahiro Yamada  case 67:
1870*0a9064fbSMasahiro Yamada
1871*0a9064fbSMasahiro Yamada    {
1872*0a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
1873*0a9064fbSMasahiro Yamada	menu_add_entry(NULL);
1874*0a9064fbSMasahiro Yamada	menu_add_dep((yyvsp[(2) - (3)].expr));
1875*0a9064fbSMasahiro Yamada	(yyval.menu) = menu_add_menu();
1876*0a9064fbSMasahiro Yamada}
1877*0a9064fbSMasahiro Yamada    break;
1878*0a9064fbSMasahiro Yamada
1879*0a9064fbSMasahiro Yamada  case 68:
1880*0a9064fbSMasahiro Yamada
1881*0a9064fbSMasahiro Yamada    {
1882*0a9064fbSMasahiro Yamada	if (zconf_endtoken((yyvsp[(1) - (1)].id), T_IF, T_ENDIF)) {
1883*0a9064fbSMasahiro Yamada		menu_end_menu();
1884*0a9064fbSMasahiro Yamada		printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno());
1885*0a9064fbSMasahiro Yamada	}
1886*0a9064fbSMasahiro Yamada}
1887*0a9064fbSMasahiro Yamada    break;
1888*0a9064fbSMasahiro Yamada
1889*0a9064fbSMasahiro Yamada  case 74:
1890*0a9064fbSMasahiro Yamada
1891*0a9064fbSMasahiro Yamada    {
1892*0a9064fbSMasahiro Yamada	menu_add_prompt(P_MENU, (yyvsp[(2) - (3)].string), NULL);
1893*0a9064fbSMasahiro Yamada}
1894*0a9064fbSMasahiro Yamada    break;
1895*0a9064fbSMasahiro Yamada
1896*0a9064fbSMasahiro Yamada  case 75:
1897*0a9064fbSMasahiro Yamada
1898*0a9064fbSMasahiro Yamada    {
1899*0a9064fbSMasahiro Yamada	menu_add_entry(NULL);
1900*0a9064fbSMasahiro Yamada	menu_add_prompt(P_MENU, (yyvsp[(2) - (3)].string), NULL);
1901*0a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
1902*0a9064fbSMasahiro Yamada}
1903*0a9064fbSMasahiro Yamada    break;
1904*0a9064fbSMasahiro Yamada
1905*0a9064fbSMasahiro Yamada  case 76:
1906*0a9064fbSMasahiro Yamada
1907*0a9064fbSMasahiro Yamada    {
1908*0a9064fbSMasahiro Yamada	(yyval.menu) = menu_add_menu();
1909*0a9064fbSMasahiro Yamada}
1910*0a9064fbSMasahiro Yamada    break;
1911*0a9064fbSMasahiro Yamada
1912*0a9064fbSMasahiro Yamada  case 77:
1913*0a9064fbSMasahiro Yamada
1914*0a9064fbSMasahiro Yamada    {
1915*0a9064fbSMasahiro Yamada	if (zconf_endtoken((yyvsp[(1) - (1)].id), T_MENU, T_ENDMENU)) {
1916*0a9064fbSMasahiro Yamada		menu_end_menu();
1917*0a9064fbSMasahiro Yamada		printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno());
1918*0a9064fbSMasahiro Yamada	}
1919*0a9064fbSMasahiro Yamada}
1920*0a9064fbSMasahiro Yamada    break;
1921*0a9064fbSMasahiro Yamada
1922*0a9064fbSMasahiro Yamada  case 83:
1923*0a9064fbSMasahiro Yamada
1924*0a9064fbSMasahiro Yamada    {
1925*0a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string));
1926*0a9064fbSMasahiro Yamada	zconf_nextfile((yyvsp[(2) - (3)].string));
1927*0a9064fbSMasahiro Yamada}
1928*0a9064fbSMasahiro Yamada    break;
1929*0a9064fbSMasahiro Yamada
1930*0a9064fbSMasahiro Yamada  case 84:
1931*0a9064fbSMasahiro Yamada
1932*0a9064fbSMasahiro Yamada    {
1933*0a9064fbSMasahiro Yamada	menu_add_entry(NULL);
1934*0a9064fbSMasahiro Yamada	menu_add_prompt(P_COMMENT, (yyvsp[(2) - (3)].string), NULL);
1935*0a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());
1936*0a9064fbSMasahiro Yamada}
1937*0a9064fbSMasahiro Yamada    break;
1938*0a9064fbSMasahiro Yamada
1939*0a9064fbSMasahiro Yamada  case 85:
1940*0a9064fbSMasahiro Yamada
1941*0a9064fbSMasahiro Yamada    {
1942*0a9064fbSMasahiro Yamada	menu_end_entry();
1943*0a9064fbSMasahiro Yamada}
1944*0a9064fbSMasahiro Yamada    break;
1945*0a9064fbSMasahiro Yamada
1946*0a9064fbSMasahiro Yamada  case 86:
1947*0a9064fbSMasahiro Yamada
1948*0a9064fbSMasahiro Yamada    {
1949*0a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
1950*0a9064fbSMasahiro Yamada	zconf_starthelp();
1951*0a9064fbSMasahiro Yamada}
1952*0a9064fbSMasahiro Yamada    break;
1953*0a9064fbSMasahiro Yamada
1954*0a9064fbSMasahiro Yamada  case 87:
1955*0a9064fbSMasahiro Yamada
1956*0a9064fbSMasahiro Yamada    {
1957*0a9064fbSMasahiro Yamada	current_entry->help = (yyvsp[(2) - (2)].string);
1958*0a9064fbSMasahiro Yamada}
1959*0a9064fbSMasahiro Yamada    break;
1960*0a9064fbSMasahiro Yamada
1961*0a9064fbSMasahiro Yamada  case 92:
1962*0a9064fbSMasahiro Yamada
1963*0a9064fbSMasahiro Yamada    {
1964*0a9064fbSMasahiro Yamada	menu_add_dep((yyvsp[(3) - (4)].expr));
1965*0a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
1966*0a9064fbSMasahiro Yamada}
1967*0a9064fbSMasahiro Yamada    break;
1968*0a9064fbSMasahiro Yamada
1969*0a9064fbSMasahiro Yamada  case 96:
1970*0a9064fbSMasahiro Yamada
1971*0a9064fbSMasahiro Yamada    {
1972*0a9064fbSMasahiro Yamada	menu_add_visibility((yyvsp[(2) - (2)].expr));
1973*0a9064fbSMasahiro Yamada}
1974*0a9064fbSMasahiro Yamada    break;
1975*0a9064fbSMasahiro Yamada
1976*0a9064fbSMasahiro Yamada  case 98:
1977*0a9064fbSMasahiro Yamada
1978*0a9064fbSMasahiro Yamada    {
1979*0a9064fbSMasahiro Yamada	menu_add_prompt(P_PROMPT, (yyvsp[(1) - (2)].string), (yyvsp[(2) - (2)].expr));
1980*0a9064fbSMasahiro Yamada}
1981*0a9064fbSMasahiro Yamada    break;
1982*0a9064fbSMasahiro Yamada
1983*0a9064fbSMasahiro Yamada  case 101:
1984*0a9064fbSMasahiro Yamada
1985*0a9064fbSMasahiro Yamada    { (yyval.id) = (yyvsp[(1) - (2)].id); }
1986*0a9064fbSMasahiro Yamada    break;
1987*0a9064fbSMasahiro Yamada
1988*0a9064fbSMasahiro Yamada  case 102:
1989*0a9064fbSMasahiro Yamada
1990*0a9064fbSMasahiro Yamada    { (yyval.id) = (yyvsp[(1) - (2)].id); }
1991*0a9064fbSMasahiro Yamada    break;
1992*0a9064fbSMasahiro Yamada
1993*0a9064fbSMasahiro Yamada  case 103:
1994*0a9064fbSMasahiro Yamada
1995*0a9064fbSMasahiro Yamada    { (yyval.id) = (yyvsp[(1) - (2)].id); }
1996*0a9064fbSMasahiro Yamada    break;
1997*0a9064fbSMasahiro Yamada
1998*0a9064fbSMasahiro Yamada  case 106:
1999*0a9064fbSMasahiro Yamada
2000*0a9064fbSMasahiro Yamada    { (yyval.expr) = NULL; }
2001*0a9064fbSMasahiro Yamada    break;
2002*0a9064fbSMasahiro Yamada
2003*0a9064fbSMasahiro Yamada  case 107:
2004*0a9064fbSMasahiro Yamada
2005*0a9064fbSMasahiro Yamada    { (yyval.expr) = (yyvsp[(2) - (2)].expr); }
2006*0a9064fbSMasahiro Yamada    break;
2007*0a9064fbSMasahiro Yamada
2008*0a9064fbSMasahiro Yamada  case 108:
2009*0a9064fbSMasahiro Yamada
2010*0a9064fbSMasahiro Yamada    { (yyval.expr) = expr_alloc_symbol((yyvsp[(1) - (1)].symbol)); }
2011*0a9064fbSMasahiro Yamada    break;
2012*0a9064fbSMasahiro Yamada
2013*0a9064fbSMasahiro Yamada  case 109:
2014*0a9064fbSMasahiro Yamada
2015*0a9064fbSMasahiro Yamada    { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); }
2016*0a9064fbSMasahiro Yamada    break;
2017*0a9064fbSMasahiro Yamada
2018*0a9064fbSMasahiro Yamada  case 110:
2019*0a9064fbSMasahiro Yamada
2020*0a9064fbSMasahiro Yamada    { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); }
2021*0a9064fbSMasahiro Yamada    break;
2022*0a9064fbSMasahiro Yamada
2023*0a9064fbSMasahiro Yamada  case 111:
2024*0a9064fbSMasahiro Yamada
2025*0a9064fbSMasahiro Yamada    { (yyval.expr) = (yyvsp[(2) - (3)].expr); }
2026*0a9064fbSMasahiro Yamada    break;
2027*0a9064fbSMasahiro Yamada
2028*0a9064fbSMasahiro Yamada  case 112:
2029*0a9064fbSMasahiro Yamada
2030*0a9064fbSMasahiro Yamada    { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[(2) - (2)].expr)); }
2031*0a9064fbSMasahiro Yamada    break;
2032*0a9064fbSMasahiro Yamada
2033*0a9064fbSMasahiro Yamada  case 113:
2034*0a9064fbSMasahiro Yamada
2035*0a9064fbSMasahiro Yamada    { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2036*0a9064fbSMasahiro Yamada    break;
2037*0a9064fbSMasahiro Yamada
2038*0a9064fbSMasahiro Yamada  case 114:
2039*0a9064fbSMasahiro Yamada
2040*0a9064fbSMasahiro Yamada    { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2041*0a9064fbSMasahiro Yamada    break;
2042*0a9064fbSMasahiro Yamada
2043*0a9064fbSMasahiro Yamada  case 115:
2044*0a9064fbSMasahiro Yamada
2045*0a9064fbSMasahiro Yamada    { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), 0); free((yyvsp[(1) - (1)].string)); }
2046*0a9064fbSMasahiro Yamada    break;
2047*0a9064fbSMasahiro Yamada
2048*0a9064fbSMasahiro Yamada  case 116:
2049*0a9064fbSMasahiro Yamada
2050*0a9064fbSMasahiro Yamada    { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), SYMBOL_CONST); free((yyvsp[(1) - (1)].string)); }
2051*0a9064fbSMasahiro Yamada    break;
2052*0a9064fbSMasahiro Yamada
2053*0a9064fbSMasahiro Yamada  case 117:
2054*0a9064fbSMasahiro Yamada
2055*0a9064fbSMasahiro Yamada    { (yyval.string) = NULL; }
2056*0a9064fbSMasahiro Yamada    break;
2057*0a9064fbSMasahiro Yamada
2058*0a9064fbSMasahiro Yamada
2059*0a9064fbSMasahiro Yamada
2060*0a9064fbSMasahiro Yamada      default: break;
2061*0a9064fbSMasahiro Yamada    }
2062*0a9064fbSMasahiro Yamada  /* User semantic actions sometimes alter yychar, and that requires
2063*0a9064fbSMasahiro Yamada     that yytoken be updated with the new translation.  We take the
2064*0a9064fbSMasahiro Yamada     approach of translating immediately before every use of yytoken.
2065*0a9064fbSMasahiro Yamada     One alternative is translating here after every semantic action,
2066*0a9064fbSMasahiro Yamada     but that translation would be missed if the semantic action invokes
2067*0a9064fbSMasahiro Yamada     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
2068*0a9064fbSMasahiro Yamada     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
2069*0a9064fbSMasahiro Yamada     incorrect destructor might then be invoked immediately.  In the
2070*0a9064fbSMasahiro Yamada     case of YYERROR or YYBACKUP, subsequent parser actions might lead
2071*0a9064fbSMasahiro Yamada     to an incorrect destructor call or verbose syntax error message
2072*0a9064fbSMasahiro Yamada     before the lookahead is translated.  */
2073*0a9064fbSMasahiro Yamada  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2074*0a9064fbSMasahiro Yamada
2075*0a9064fbSMasahiro Yamada  YYPOPSTACK (yylen);
2076*0a9064fbSMasahiro Yamada  yylen = 0;
2077*0a9064fbSMasahiro Yamada  YY_STACK_PRINT (yyss, yyssp);
2078*0a9064fbSMasahiro Yamada
2079*0a9064fbSMasahiro Yamada  *++yyvsp = yyval;
2080*0a9064fbSMasahiro Yamada
2081*0a9064fbSMasahiro Yamada  /* Now `shift' the result of the reduction.  Determine what state
2082*0a9064fbSMasahiro Yamada     that goes to, based on the state we popped back to and the rule
2083*0a9064fbSMasahiro Yamada     number reduced by.  */
2084*0a9064fbSMasahiro Yamada
2085*0a9064fbSMasahiro Yamada  yyn = yyr1[yyn];
2086*0a9064fbSMasahiro Yamada
2087*0a9064fbSMasahiro Yamada  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2088*0a9064fbSMasahiro Yamada  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2089*0a9064fbSMasahiro Yamada    yystate = yytable[yystate];
2090*0a9064fbSMasahiro Yamada  else
2091*0a9064fbSMasahiro Yamada    yystate = yydefgoto[yyn - YYNTOKENS];
2092*0a9064fbSMasahiro Yamada
2093*0a9064fbSMasahiro Yamada  goto yynewstate;
2094*0a9064fbSMasahiro Yamada
2095*0a9064fbSMasahiro Yamada
2096*0a9064fbSMasahiro Yamada/*------------------------------------.
2097*0a9064fbSMasahiro Yamada| yyerrlab -- here on detecting error |
2098*0a9064fbSMasahiro Yamada`------------------------------------*/
2099*0a9064fbSMasahiro Yamadayyerrlab:
2100*0a9064fbSMasahiro Yamada  /* Make sure we have latest lookahead translation.  See comments at
2101*0a9064fbSMasahiro Yamada     user semantic actions for why this is necessary.  */
2102*0a9064fbSMasahiro Yamada  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
2103*0a9064fbSMasahiro Yamada
2104*0a9064fbSMasahiro Yamada  /* If not already recovering from an error, report this error.  */
2105*0a9064fbSMasahiro Yamada  if (!yyerrstatus)
2106*0a9064fbSMasahiro Yamada    {
2107*0a9064fbSMasahiro Yamada      ++yynerrs;
2108*0a9064fbSMasahiro Yamada#if ! YYERROR_VERBOSE
2109*0a9064fbSMasahiro Yamada      yyerror (YY_("syntax error"));
2110*0a9064fbSMasahiro Yamada#else
2111*0a9064fbSMasahiro Yamada# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
2112*0a9064fbSMasahiro Yamada                                        yyssp, yytoken)
2113*0a9064fbSMasahiro Yamada      {
2114*0a9064fbSMasahiro Yamada        char const *yymsgp = YY_("syntax error");
2115*0a9064fbSMasahiro Yamada        int yysyntax_error_status;
2116*0a9064fbSMasahiro Yamada        yysyntax_error_status = YYSYNTAX_ERROR;
2117*0a9064fbSMasahiro Yamada        if (yysyntax_error_status == 0)
2118*0a9064fbSMasahiro Yamada          yymsgp = yymsg;
2119*0a9064fbSMasahiro Yamada        else if (yysyntax_error_status == 1)
2120*0a9064fbSMasahiro Yamada          {
2121*0a9064fbSMasahiro Yamada            if (yymsg != yymsgbuf)
2122*0a9064fbSMasahiro Yamada              YYSTACK_FREE (yymsg);
2123*0a9064fbSMasahiro Yamada            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
2124*0a9064fbSMasahiro Yamada            if (!yymsg)
2125*0a9064fbSMasahiro Yamada              {
2126*0a9064fbSMasahiro Yamada                yymsg = yymsgbuf;
2127*0a9064fbSMasahiro Yamada                yymsg_alloc = sizeof yymsgbuf;
2128*0a9064fbSMasahiro Yamada                yysyntax_error_status = 2;
2129*0a9064fbSMasahiro Yamada              }
2130*0a9064fbSMasahiro Yamada            else
2131*0a9064fbSMasahiro Yamada              {
2132*0a9064fbSMasahiro Yamada                yysyntax_error_status = YYSYNTAX_ERROR;
2133*0a9064fbSMasahiro Yamada                yymsgp = yymsg;
2134*0a9064fbSMasahiro Yamada              }
2135*0a9064fbSMasahiro Yamada          }
2136*0a9064fbSMasahiro Yamada        yyerror (yymsgp);
2137*0a9064fbSMasahiro Yamada        if (yysyntax_error_status == 2)
2138*0a9064fbSMasahiro Yamada          goto yyexhaustedlab;
2139*0a9064fbSMasahiro Yamada      }
2140*0a9064fbSMasahiro Yamada# undef YYSYNTAX_ERROR
2141*0a9064fbSMasahiro Yamada#endif
2142*0a9064fbSMasahiro Yamada    }
2143*0a9064fbSMasahiro Yamada
2144*0a9064fbSMasahiro Yamada
2145*0a9064fbSMasahiro Yamada
2146*0a9064fbSMasahiro Yamada  if (yyerrstatus == 3)
2147*0a9064fbSMasahiro Yamada    {
2148*0a9064fbSMasahiro Yamada      /* If just tried and failed to reuse lookahead token after an
2149*0a9064fbSMasahiro Yamada	 error, discard it.  */
2150*0a9064fbSMasahiro Yamada
2151*0a9064fbSMasahiro Yamada      if (yychar <= YYEOF)
2152*0a9064fbSMasahiro Yamada	{
2153*0a9064fbSMasahiro Yamada	  /* Return failure if at end of input.  */
2154*0a9064fbSMasahiro Yamada	  if (yychar == YYEOF)
2155*0a9064fbSMasahiro Yamada	    YYABORT;
2156*0a9064fbSMasahiro Yamada	}
2157*0a9064fbSMasahiro Yamada      else
2158*0a9064fbSMasahiro Yamada	{
2159*0a9064fbSMasahiro Yamada	  yydestruct ("Error: discarding",
2160*0a9064fbSMasahiro Yamada		      yytoken, &yylval);
2161*0a9064fbSMasahiro Yamada	  yychar = YYEMPTY;
2162*0a9064fbSMasahiro Yamada	}
2163*0a9064fbSMasahiro Yamada    }
2164*0a9064fbSMasahiro Yamada
2165*0a9064fbSMasahiro Yamada  /* Else will try to reuse lookahead token after shifting the error
2166*0a9064fbSMasahiro Yamada     token.  */
2167*0a9064fbSMasahiro Yamada  goto yyerrlab1;
2168*0a9064fbSMasahiro Yamada
2169*0a9064fbSMasahiro Yamada
2170*0a9064fbSMasahiro Yamada/*---------------------------------------------------.
2171*0a9064fbSMasahiro Yamada| yyerrorlab -- error raised explicitly by YYERROR.  |
2172*0a9064fbSMasahiro Yamada`---------------------------------------------------*/
2173*0a9064fbSMasahiro Yamadayyerrorlab:
2174*0a9064fbSMasahiro Yamada
2175*0a9064fbSMasahiro Yamada  /* Pacify compilers like GCC when the user code never invokes
2176*0a9064fbSMasahiro Yamada     YYERROR and the label yyerrorlab therefore never appears in user
2177*0a9064fbSMasahiro Yamada     code.  */
2178*0a9064fbSMasahiro Yamada  if (/*CONSTCOND*/ 0)
2179*0a9064fbSMasahiro Yamada     goto yyerrorlab;
2180*0a9064fbSMasahiro Yamada
2181*0a9064fbSMasahiro Yamada  /* Do not reclaim the symbols of the rule which action triggered
2182*0a9064fbSMasahiro Yamada     this YYERROR.  */
2183*0a9064fbSMasahiro Yamada  YYPOPSTACK (yylen);
2184*0a9064fbSMasahiro Yamada  yylen = 0;
2185*0a9064fbSMasahiro Yamada  YY_STACK_PRINT (yyss, yyssp);
2186*0a9064fbSMasahiro Yamada  yystate = *yyssp;
2187*0a9064fbSMasahiro Yamada  goto yyerrlab1;
2188*0a9064fbSMasahiro Yamada
2189*0a9064fbSMasahiro Yamada
2190*0a9064fbSMasahiro Yamada/*-------------------------------------------------------------.
2191*0a9064fbSMasahiro Yamada| yyerrlab1 -- common code for both syntax error and YYERROR.  |
2192*0a9064fbSMasahiro Yamada`-------------------------------------------------------------*/
2193*0a9064fbSMasahiro Yamadayyerrlab1:
2194*0a9064fbSMasahiro Yamada  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
2195*0a9064fbSMasahiro Yamada
2196*0a9064fbSMasahiro Yamada  for (;;)
2197*0a9064fbSMasahiro Yamada    {
2198*0a9064fbSMasahiro Yamada      yyn = yypact[yystate];
2199*0a9064fbSMasahiro Yamada      if (!yypact_value_is_default (yyn))
2200*0a9064fbSMasahiro Yamada	{
2201*0a9064fbSMasahiro Yamada	  yyn += YYTERROR;
2202*0a9064fbSMasahiro Yamada	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2203*0a9064fbSMasahiro Yamada	    {
2204*0a9064fbSMasahiro Yamada	      yyn = yytable[yyn];
2205*0a9064fbSMasahiro Yamada	      if (0 < yyn)
2206*0a9064fbSMasahiro Yamada		break;
2207*0a9064fbSMasahiro Yamada	    }
2208*0a9064fbSMasahiro Yamada	}
2209*0a9064fbSMasahiro Yamada
2210*0a9064fbSMasahiro Yamada      /* Pop the current state because it cannot handle the error token.  */
2211*0a9064fbSMasahiro Yamada      if (yyssp == yyss)
2212*0a9064fbSMasahiro Yamada	YYABORT;
2213*0a9064fbSMasahiro Yamada
2214*0a9064fbSMasahiro Yamada
2215*0a9064fbSMasahiro Yamada      yydestruct ("Error: popping",
2216*0a9064fbSMasahiro Yamada		  yystos[yystate], yyvsp);
2217*0a9064fbSMasahiro Yamada      YYPOPSTACK (1);
2218*0a9064fbSMasahiro Yamada      yystate = *yyssp;
2219*0a9064fbSMasahiro Yamada      YY_STACK_PRINT (yyss, yyssp);
2220*0a9064fbSMasahiro Yamada    }
2221*0a9064fbSMasahiro Yamada
2222*0a9064fbSMasahiro Yamada  *++yyvsp = yylval;
2223*0a9064fbSMasahiro Yamada
2224*0a9064fbSMasahiro Yamada
2225*0a9064fbSMasahiro Yamada  /* Shift the error token.  */
2226*0a9064fbSMasahiro Yamada  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2227*0a9064fbSMasahiro Yamada
2228*0a9064fbSMasahiro Yamada  yystate = yyn;
2229*0a9064fbSMasahiro Yamada  goto yynewstate;
2230*0a9064fbSMasahiro Yamada
2231*0a9064fbSMasahiro Yamada
2232*0a9064fbSMasahiro Yamada/*-------------------------------------.
2233*0a9064fbSMasahiro Yamada| yyacceptlab -- YYACCEPT comes here.  |
2234*0a9064fbSMasahiro Yamada`-------------------------------------*/
2235*0a9064fbSMasahiro Yamadayyacceptlab:
2236*0a9064fbSMasahiro Yamada  yyresult = 0;
2237*0a9064fbSMasahiro Yamada  goto yyreturn;
2238*0a9064fbSMasahiro Yamada
2239*0a9064fbSMasahiro Yamada/*-----------------------------------.
2240*0a9064fbSMasahiro Yamada| yyabortlab -- YYABORT comes here.  |
2241*0a9064fbSMasahiro Yamada`-----------------------------------*/
2242*0a9064fbSMasahiro Yamadayyabortlab:
2243*0a9064fbSMasahiro Yamada  yyresult = 1;
2244*0a9064fbSMasahiro Yamada  goto yyreturn;
2245*0a9064fbSMasahiro Yamada
2246*0a9064fbSMasahiro Yamada#if !defined(yyoverflow) || YYERROR_VERBOSE
2247*0a9064fbSMasahiro Yamada/*-------------------------------------------------.
2248*0a9064fbSMasahiro Yamada| yyexhaustedlab -- memory exhaustion comes here.  |
2249*0a9064fbSMasahiro Yamada`-------------------------------------------------*/
2250*0a9064fbSMasahiro Yamadayyexhaustedlab:
2251*0a9064fbSMasahiro Yamada  yyerror (YY_("memory exhausted"));
2252*0a9064fbSMasahiro Yamada  yyresult = 2;
2253*0a9064fbSMasahiro Yamada  /* Fall through.  */
2254*0a9064fbSMasahiro Yamada#endif
2255*0a9064fbSMasahiro Yamada
2256*0a9064fbSMasahiro Yamadayyreturn:
2257*0a9064fbSMasahiro Yamada  if (yychar != YYEMPTY)
2258*0a9064fbSMasahiro Yamada    {
2259*0a9064fbSMasahiro Yamada      /* Make sure we have latest lookahead translation.  See comments at
2260*0a9064fbSMasahiro Yamada         user semantic actions for why this is necessary.  */
2261*0a9064fbSMasahiro Yamada      yytoken = YYTRANSLATE (yychar);
2262*0a9064fbSMasahiro Yamada      yydestruct ("Cleanup: discarding lookahead",
2263*0a9064fbSMasahiro Yamada                  yytoken, &yylval);
2264*0a9064fbSMasahiro Yamada    }
2265*0a9064fbSMasahiro Yamada  /* Do not reclaim the symbols of the rule which action triggered
2266*0a9064fbSMasahiro Yamada     this YYABORT or YYACCEPT.  */
2267*0a9064fbSMasahiro Yamada  YYPOPSTACK (yylen);
2268*0a9064fbSMasahiro Yamada  YY_STACK_PRINT (yyss, yyssp);
2269*0a9064fbSMasahiro Yamada  while (yyssp != yyss)
2270*0a9064fbSMasahiro Yamada    {
2271*0a9064fbSMasahiro Yamada      yydestruct ("Cleanup: popping",
2272*0a9064fbSMasahiro Yamada		  yystos[*yyssp], yyvsp);
2273*0a9064fbSMasahiro Yamada      YYPOPSTACK (1);
2274*0a9064fbSMasahiro Yamada    }
2275*0a9064fbSMasahiro Yamada#ifndef yyoverflow
2276*0a9064fbSMasahiro Yamada  if (yyss != yyssa)
2277*0a9064fbSMasahiro Yamada    YYSTACK_FREE (yyss);
2278*0a9064fbSMasahiro Yamada#endif
2279*0a9064fbSMasahiro Yamada#if YYERROR_VERBOSE
2280*0a9064fbSMasahiro Yamada  if (yymsg != yymsgbuf)
2281*0a9064fbSMasahiro Yamada    YYSTACK_FREE (yymsg);
2282*0a9064fbSMasahiro Yamada#endif
2283*0a9064fbSMasahiro Yamada  /* Make sure YYID is used.  */
2284*0a9064fbSMasahiro Yamada  return YYID (yyresult);
2285*0a9064fbSMasahiro Yamada}
2286*0a9064fbSMasahiro Yamada
2287*0a9064fbSMasahiro Yamada
2288*0a9064fbSMasahiro Yamada
2289*0a9064fbSMasahiro Yamada
2290*0a9064fbSMasahiro Yamada
2291*0a9064fbSMasahiro Yamadavoid conf_parse(const char *name)
2292*0a9064fbSMasahiro Yamada{
2293*0a9064fbSMasahiro Yamada	struct symbol *sym;
2294*0a9064fbSMasahiro Yamada	int i;
2295*0a9064fbSMasahiro Yamada
2296*0a9064fbSMasahiro Yamada	zconf_initscan(name);
2297*0a9064fbSMasahiro Yamada
2298*0a9064fbSMasahiro Yamada	sym_init();
2299*0a9064fbSMasahiro Yamada	_menu_init();
2300*0a9064fbSMasahiro Yamada	rootmenu.prompt = menu_add_prompt(P_MENU, "Linux Kernel Configuration", NULL);
2301*0a9064fbSMasahiro Yamada
2302*0a9064fbSMasahiro Yamada	if (getenv("ZCONF_DEBUG"))
2303*0a9064fbSMasahiro Yamada		zconfdebug = 1;
2304*0a9064fbSMasahiro Yamada	zconfparse();
2305*0a9064fbSMasahiro Yamada	if (zconfnerrs)
2306*0a9064fbSMasahiro Yamada		exit(1);
2307*0a9064fbSMasahiro Yamada	if (!modules_sym)
2308*0a9064fbSMasahiro Yamada		modules_sym = sym_find( "n" );
2309*0a9064fbSMasahiro Yamada
2310*0a9064fbSMasahiro Yamada	rootmenu.prompt->text = _(rootmenu.prompt->text);
2311*0a9064fbSMasahiro Yamada	rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text);
2312*0a9064fbSMasahiro Yamada
2313*0a9064fbSMasahiro Yamada	menu_finalize(&rootmenu);
2314*0a9064fbSMasahiro Yamada	for_all_symbols(i, sym) {
2315*0a9064fbSMasahiro Yamada		if (sym_check_deps(sym))
2316*0a9064fbSMasahiro Yamada			zconfnerrs++;
2317*0a9064fbSMasahiro Yamada	}
2318*0a9064fbSMasahiro Yamada	if (zconfnerrs)
2319*0a9064fbSMasahiro Yamada		exit(1);
2320*0a9064fbSMasahiro Yamada	sym_set_change_count(1);
2321*0a9064fbSMasahiro Yamada}
2322*0a9064fbSMasahiro Yamada
2323*0a9064fbSMasahiro Yamadastatic const char *zconf_tokenname(int token)
2324*0a9064fbSMasahiro Yamada{
2325*0a9064fbSMasahiro Yamada	switch (token) {
2326*0a9064fbSMasahiro Yamada	case T_MENU:		return "menu";
2327*0a9064fbSMasahiro Yamada	case T_ENDMENU:		return "endmenu";
2328*0a9064fbSMasahiro Yamada	case T_CHOICE:		return "choice";
2329*0a9064fbSMasahiro Yamada	case T_ENDCHOICE:	return "endchoice";
2330*0a9064fbSMasahiro Yamada	case T_IF:		return "if";
2331*0a9064fbSMasahiro Yamada	case T_ENDIF:		return "endif";
2332*0a9064fbSMasahiro Yamada	case T_DEPENDS:		return "depends";
2333*0a9064fbSMasahiro Yamada	case T_VISIBLE:		return "visible";
2334*0a9064fbSMasahiro Yamada	}
2335*0a9064fbSMasahiro Yamada	return "<token>";
2336*0a9064fbSMasahiro Yamada}
2337*0a9064fbSMasahiro Yamada
2338*0a9064fbSMasahiro Yamadastatic bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken)
2339*0a9064fbSMasahiro Yamada{
2340*0a9064fbSMasahiro Yamada	if (id->token != endtoken) {
2341*0a9064fbSMasahiro Yamada		zconf_error("unexpected '%s' within %s block",
2342*0a9064fbSMasahiro Yamada			kconf_id_strings + id->name, zconf_tokenname(starttoken));
2343*0a9064fbSMasahiro Yamada		zconfnerrs++;
2344*0a9064fbSMasahiro Yamada		return false;
2345*0a9064fbSMasahiro Yamada	}
2346*0a9064fbSMasahiro Yamada	if (current_menu->file != current_file) {
2347*0a9064fbSMasahiro Yamada		zconf_error("'%s' in different file than '%s'",
2348*0a9064fbSMasahiro Yamada			kconf_id_strings + id->name, zconf_tokenname(starttoken));
2349*0a9064fbSMasahiro Yamada		fprintf(stderr, "%s:%d: location of the '%s'\n",
2350*0a9064fbSMasahiro Yamada			current_menu->file->name, current_menu->lineno,
2351*0a9064fbSMasahiro Yamada			zconf_tokenname(starttoken));
2352*0a9064fbSMasahiro Yamada		zconfnerrs++;
2353*0a9064fbSMasahiro Yamada		return false;
2354*0a9064fbSMasahiro Yamada	}
2355*0a9064fbSMasahiro Yamada	return true;
2356*0a9064fbSMasahiro Yamada}
2357*0a9064fbSMasahiro Yamada
2358*0a9064fbSMasahiro Yamadastatic void zconfprint(const char *err, ...)
2359*0a9064fbSMasahiro Yamada{
2360*0a9064fbSMasahiro Yamada	va_list ap;
2361*0a9064fbSMasahiro Yamada
2362*0a9064fbSMasahiro Yamada	fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
2363*0a9064fbSMasahiro Yamada	va_start(ap, err);
2364*0a9064fbSMasahiro Yamada	vfprintf(stderr, err, ap);
2365*0a9064fbSMasahiro Yamada	va_end(ap);
2366*0a9064fbSMasahiro Yamada	fprintf(stderr, "\n");
2367*0a9064fbSMasahiro Yamada}
2368*0a9064fbSMasahiro Yamada
2369*0a9064fbSMasahiro Yamadastatic void zconf_error(const char *err, ...)
2370*0a9064fbSMasahiro Yamada{
2371*0a9064fbSMasahiro Yamada	va_list ap;
2372*0a9064fbSMasahiro Yamada
2373*0a9064fbSMasahiro Yamada	zconfnerrs++;
2374*0a9064fbSMasahiro Yamada	fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
2375*0a9064fbSMasahiro Yamada	va_start(ap, err);
2376*0a9064fbSMasahiro Yamada	vfprintf(stderr, err, ap);
2377*0a9064fbSMasahiro Yamada	va_end(ap);
2378*0a9064fbSMasahiro Yamada	fprintf(stderr, "\n");
2379*0a9064fbSMasahiro Yamada}
2380*0a9064fbSMasahiro Yamada
2381*0a9064fbSMasahiro Yamadastatic void zconferror(const char *err)
2382*0a9064fbSMasahiro Yamada{
2383*0a9064fbSMasahiro Yamada	fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
2384*0a9064fbSMasahiro Yamada}
2385*0a9064fbSMasahiro Yamada
2386*0a9064fbSMasahiro Yamadastatic void print_quoted_string(FILE *out, const char *str)
2387*0a9064fbSMasahiro Yamada{
2388*0a9064fbSMasahiro Yamada	const char *p;
2389*0a9064fbSMasahiro Yamada	int len;
2390*0a9064fbSMasahiro Yamada
2391*0a9064fbSMasahiro Yamada	putc('"', out);
2392*0a9064fbSMasahiro Yamada	while ((p = strchr(str, '"'))) {
2393*0a9064fbSMasahiro Yamada		len = p - str;
2394*0a9064fbSMasahiro Yamada		if (len)
2395*0a9064fbSMasahiro Yamada			fprintf(out, "%.*s", len, str);
2396*0a9064fbSMasahiro Yamada		fputs("\\\"", out);
2397*0a9064fbSMasahiro Yamada		str = p + 1;
2398*0a9064fbSMasahiro Yamada	}
2399*0a9064fbSMasahiro Yamada	fputs(str, out);
2400*0a9064fbSMasahiro Yamada	putc('"', out);
2401*0a9064fbSMasahiro Yamada}
2402*0a9064fbSMasahiro Yamada
2403*0a9064fbSMasahiro Yamadastatic void print_symbol(FILE *out, struct menu *menu)
2404*0a9064fbSMasahiro Yamada{
2405*0a9064fbSMasahiro Yamada	struct symbol *sym = menu->sym;
2406*0a9064fbSMasahiro Yamada	struct property *prop;
2407*0a9064fbSMasahiro Yamada
2408*0a9064fbSMasahiro Yamada	if (sym_is_choice(sym))
2409*0a9064fbSMasahiro Yamada		fprintf(out, "\nchoice\n");
2410*0a9064fbSMasahiro Yamada	else
2411*0a9064fbSMasahiro Yamada		fprintf(out, "\nconfig %s\n", sym->name);
2412*0a9064fbSMasahiro Yamada	switch (sym->type) {
2413*0a9064fbSMasahiro Yamada	case S_BOOLEAN:
2414*0a9064fbSMasahiro Yamada		fputs("  boolean\n", out);
2415*0a9064fbSMasahiro Yamada		break;
2416*0a9064fbSMasahiro Yamada	case S_TRISTATE:
2417*0a9064fbSMasahiro Yamada		fputs("  tristate\n", out);
2418*0a9064fbSMasahiro Yamada		break;
2419*0a9064fbSMasahiro Yamada	case S_STRING:
2420*0a9064fbSMasahiro Yamada		fputs("  string\n", out);
2421*0a9064fbSMasahiro Yamada		break;
2422*0a9064fbSMasahiro Yamada	case S_INT:
2423*0a9064fbSMasahiro Yamada		fputs("  integer\n", out);
2424*0a9064fbSMasahiro Yamada		break;
2425*0a9064fbSMasahiro Yamada	case S_HEX:
2426*0a9064fbSMasahiro Yamada		fputs("  hex\n", out);
2427*0a9064fbSMasahiro Yamada		break;
2428*0a9064fbSMasahiro Yamada	default:
2429*0a9064fbSMasahiro Yamada		fputs("  ???\n", out);
2430*0a9064fbSMasahiro Yamada		break;
2431*0a9064fbSMasahiro Yamada	}
2432*0a9064fbSMasahiro Yamada	for (prop = sym->prop; prop; prop = prop->next) {
2433*0a9064fbSMasahiro Yamada		if (prop->menu != menu)
2434*0a9064fbSMasahiro Yamada			continue;
2435*0a9064fbSMasahiro Yamada		switch (prop->type) {
2436*0a9064fbSMasahiro Yamada		case P_PROMPT:
2437*0a9064fbSMasahiro Yamada			fputs("  prompt ", out);
2438*0a9064fbSMasahiro Yamada			print_quoted_string(out, prop->text);
2439*0a9064fbSMasahiro Yamada			if (!expr_is_yes(prop->visible.expr)) {
2440*0a9064fbSMasahiro Yamada				fputs(" if ", out);
2441*0a9064fbSMasahiro Yamada				expr_fprint(prop->visible.expr, out);
2442*0a9064fbSMasahiro Yamada			}
2443*0a9064fbSMasahiro Yamada			fputc('\n', out);
2444*0a9064fbSMasahiro Yamada			break;
2445*0a9064fbSMasahiro Yamada		case P_DEFAULT:
2446*0a9064fbSMasahiro Yamada			fputs( "  default ", out);
2447*0a9064fbSMasahiro Yamada			expr_fprint(prop->expr, out);
2448*0a9064fbSMasahiro Yamada			if (!expr_is_yes(prop->visible.expr)) {
2449*0a9064fbSMasahiro Yamada				fputs(" if ", out);
2450*0a9064fbSMasahiro Yamada				expr_fprint(prop->visible.expr, out);
2451*0a9064fbSMasahiro Yamada			}
2452*0a9064fbSMasahiro Yamada			fputc('\n', out);
2453*0a9064fbSMasahiro Yamada			break;
2454*0a9064fbSMasahiro Yamada		case P_CHOICE:
2455*0a9064fbSMasahiro Yamada			fputs("  #choice value\n", out);
2456*0a9064fbSMasahiro Yamada			break;
2457*0a9064fbSMasahiro Yamada		case P_SELECT:
2458*0a9064fbSMasahiro Yamada			fputs( "  select ", out);
2459*0a9064fbSMasahiro Yamada			expr_fprint(prop->expr, out);
2460*0a9064fbSMasahiro Yamada			fputc('\n', out);
2461*0a9064fbSMasahiro Yamada			break;
2462*0a9064fbSMasahiro Yamada		case P_RANGE:
2463*0a9064fbSMasahiro Yamada			fputs( "  range ", out);
2464*0a9064fbSMasahiro Yamada			expr_fprint(prop->expr, out);
2465*0a9064fbSMasahiro Yamada			fputc('\n', out);
2466*0a9064fbSMasahiro Yamada			break;
2467*0a9064fbSMasahiro Yamada		case P_MENU:
2468*0a9064fbSMasahiro Yamada			fputs( "  menu ", out);
2469*0a9064fbSMasahiro Yamada			print_quoted_string(out, prop->text);
2470*0a9064fbSMasahiro Yamada			fputc('\n', out);
2471*0a9064fbSMasahiro Yamada			break;
2472*0a9064fbSMasahiro Yamada		default:
2473*0a9064fbSMasahiro Yamada			fprintf(out, "  unknown prop %d!\n", prop->type);
2474*0a9064fbSMasahiro Yamada			break;
2475*0a9064fbSMasahiro Yamada		}
2476*0a9064fbSMasahiro Yamada	}
2477*0a9064fbSMasahiro Yamada	if (menu->help) {
2478*0a9064fbSMasahiro Yamada		int len = strlen(menu->help);
2479*0a9064fbSMasahiro Yamada		while (menu->help[--len] == '\n')
2480*0a9064fbSMasahiro Yamada			menu->help[len] = 0;
2481*0a9064fbSMasahiro Yamada		fprintf(out, "  help\n%s\n", menu->help);
2482*0a9064fbSMasahiro Yamada	}
2483*0a9064fbSMasahiro Yamada}
2484*0a9064fbSMasahiro Yamada
2485*0a9064fbSMasahiro Yamadavoid zconfdump(FILE *out)
2486*0a9064fbSMasahiro Yamada{
2487*0a9064fbSMasahiro Yamada	struct property *prop;
2488*0a9064fbSMasahiro Yamada	struct symbol *sym;
2489*0a9064fbSMasahiro Yamada	struct menu *menu;
2490*0a9064fbSMasahiro Yamada
2491*0a9064fbSMasahiro Yamada	menu = rootmenu.list;
2492*0a9064fbSMasahiro Yamada	while (menu) {
2493*0a9064fbSMasahiro Yamada		if ((sym = menu->sym))
2494*0a9064fbSMasahiro Yamada			print_symbol(out, menu);
2495*0a9064fbSMasahiro Yamada		else if ((prop = menu->prompt)) {
2496*0a9064fbSMasahiro Yamada			switch (prop->type) {
2497*0a9064fbSMasahiro Yamada			case P_COMMENT:
2498*0a9064fbSMasahiro Yamada				fputs("\ncomment ", out);
2499*0a9064fbSMasahiro Yamada				print_quoted_string(out, prop->text);
2500*0a9064fbSMasahiro Yamada				fputs("\n", out);
2501*0a9064fbSMasahiro Yamada				break;
2502*0a9064fbSMasahiro Yamada			case P_MENU:
2503*0a9064fbSMasahiro Yamada				fputs("\nmenu ", out);
2504*0a9064fbSMasahiro Yamada				print_quoted_string(out, prop->text);
2505*0a9064fbSMasahiro Yamada				fputs("\n", out);
2506*0a9064fbSMasahiro Yamada				break;
2507*0a9064fbSMasahiro Yamada			default:
2508*0a9064fbSMasahiro Yamada				;
2509*0a9064fbSMasahiro Yamada			}
2510*0a9064fbSMasahiro Yamada			if (!expr_is_yes(prop->visible.expr)) {
2511*0a9064fbSMasahiro Yamada				fputs("  depends ", out);
2512*0a9064fbSMasahiro Yamada				expr_fprint(prop->visible.expr, out);
2513*0a9064fbSMasahiro Yamada				fputc('\n', out);
2514*0a9064fbSMasahiro Yamada			}
2515*0a9064fbSMasahiro Yamada		}
2516*0a9064fbSMasahiro Yamada
2517*0a9064fbSMasahiro Yamada		if (menu->list)
2518*0a9064fbSMasahiro Yamada			menu = menu->list;
2519*0a9064fbSMasahiro Yamada		else if (menu->next)
2520*0a9064fbSMasahiro Yamada			menu = menu->next;
2521*0a9064fbSMasahiro Yamada		else while ((menu = menu->parent)) {
2522*0a9064fbSMasahiro Yamada			if (menu->prompt && menu->prompt->type == P_MENU)
2523*0a9064fbSMasahiro Yamada				fputs("\nendmenu\n", out);
2524*0a9064fbSMasahiro Yamada			if (menu->next) {
2525*0a9064fbSMasahiro Yamada				menu = menu->next;
2526*0a9064fbSMasahiro Yamada				break;
2527*0a9064fbSMasahiro Yamada			}
2528*0a9064fbSMasahiro Yamada		}
2529*0a9064fbSMasahiro Yamada	}
2530*0a9064fbSMasahiro Yamada}
2531*0a9064fbSMasahiro Yamada
2532*0a9064fbSMasahiro Yamada#include "zconf.lex.c"
2533*0a9064fbSMasahiro Yamada#include "util.c"
2534*0a9064fbSMasahiro Yamada#include "confdata.c"
2535*0a9064fbSMasahiro Yamada#include "expr.c"
2536*0a9064fbSMasahiro Yamada#include "symbol.c"
2537*0a9064fbSMasahiro Yamada#include "menu.c"
2538*0a9064fbSMasahiro Yamada
2539