xref: /rk3399_rockchip-uboot/scripts/kconfig/zconf.tab.c_shipped (revision bf7ab1e70fd7621fea5dea07b6975c576119b86e)
1*bf7ab1e7SMasahiro Yamada/* A Bison parser, made by GNU Bison 3.0.4.  */
20a9064fbSMasahiro Yamada
30a9064fbSMasahiro Yamada/* Bison implementation for Yacc-like parsers in C
40a9064fbSMasahiro Yamada
5*bf7ab1e7SMasahiro Yamada   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
60a9064fbSMasahiro Yamada
70a9064fbSMasahiro Yamada   This program is free software: you can redistribute it and/or modify
80a9064fbSMasahiro Yamada   it under the terms of the GNU General Public License as published by
90a9064fbSMasahiro Yamada   the Free Software Foundation, either version 3 of the License, or
100a9064fbSMasahiro Yamada   (at your option) any later version.
110a9064fbSMasahiro Yamada
120a9064fbSMasahiro Yamada   This program is distributed in the hope that it will be useful,
130a9064fbSMasahiro Yamada   but WITHOUT ANY WARRANTY; without even the implied warranty of
140a9064fbSMasahiro Yamada   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
150a9064fbSMasahiro Yamada   GNU General Public License for more details.
160a9064fbSMasahiro Yamada
170a9064fbSMasahiro Yamada   You should have received a copy of the GNU General Public License
180a9064fbSMasahiro Yamada   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
190a9064fbSMasahiro Yamada
200a9064fbSMasahiro Yamada/* As a special exception, you may create a larger work that contains
210a9064fbSMasahiro Yamada   part or all of the Bison parser skeleton and distribute that work
220a9064fbSMasahiro Yamada   under terms of your choice, so long as that work isn't itself a
230a9064fbSMasahiro Yamada   parser generator using the skeleton or a modified version thereof
240a9064fbSMasahiro Yamada   as a parser skeleton.  Alternatively, if you modify or redistribute
250a9064fbSMasahiro Yamada   the parser skeleton itself, you may (at your option) remove this
260a9064fbSMasahiro Yamada   special exception, which will cause the skeleton and the resulting
270a9064fbSMasahiro Yamada   Bison output files to be licensed under the GNU General Public
280a9064fbSMasahiro Yamada   License without this special exception.
290a9064fbSMasahiro Yamada
300a9064fbSMasahiro Yamada   This special exception was added by the Free Software Foundation in
310a9064fbSMasahiro Yamada   version 2.2 of Bison.  */
320a9064fbSMasahiro Yamada
330a9064fbSMasahiro Yamada/* C LALR(1) parser skeleton written by Richard Stallman, by
340a9064fbSMasahiro Yamada   simplifying the original so-called "semantic" parser.  */
350a9064fbSMasahiro Yamada
360a9064fbSMasahiro Yamada/* All symbols defined below should begin with yy or YY, to avoid
370a9064fbSMasahiro Yamada   infringing on user name space.  This should be done even for local
380a9064fbSMasahiro Yamada   variables, as they might otherwise be expanded by user macros.
390a9064fbSMasahiro Yamada   There are some unavoidable exceptions within include files to
400a9064fbSMasahiro Yamada   define necessary library symbols; they are noted "INFRINGES ON
410a9064fbSMasahiro Yamada   USER NAME SPACE" below.  */
420a9064fbSMasahiro Yamada
430a9064fbSMasahiro Yamada/* Identify Bison output.  */
440a9064fbSMasahiro Yamada#define YYBISON 1
450a9064fbSMasahiro Yamada
460a9064fbSMasahiro Yamada/* Bison version.  */
47*bf7ab1e7SMasahiro Yamada#define YYBISON_VERSION "3.0.4"
480a9064fbSMasahiro Yamada
490a9064fbSMasahiro Yamada/* Skeleton name.  */
500a9064fbSMasahiro Yamada#define YYSKELETON_NAME "yacc.c"
510a9064fbSMasahiro Yamada
520a9064fbSMasahiro Yamada/* Pure parsers.  */
530a9064fbSMasahiro Yamada#define YYPURE 0
540a9064fbSMasahiro Yamada
550a9064fbSMasahiro Yamada/* Push parsers.  */
560a9064fbSMasahiro Yamada#define YYPUSH 0
570a9064fbSMasahiro Yamada
580a9064fbSMasahiro Yamada/* Pull parsers.  */
590a9064fbSMasahiro Yamada#define YYPULL 1
600a9064fbSMasahiro Yamada
610a9064fbSMasahiro Yamada
620a9064fbSMasahiro Yamada/* Substitute the variable and function names.  */
630a9064fbSMasahiro Yamada#define yyparse         zconfparse
640a9064fbSMasahiro Yamada#define yylex           zconflex
650a9064fbSMasahiro Yamada#define yyerror         zconferror
660a9064fbSMasahiro Yamada#define yydebug         zconfdebug
670a9064fbSMasahiro Yamada#define yynerrs         zconfnerrs
680a9064fbSMasahiro Yamada
69*bf7ab1e7SMasahiro Yamada#define yylval          zconflval
70*bf7ab1e7SMasahiro Yamada#define yychar          zconfchar
710a9064fbSMasahiro Yamada
720a9064fbSMasahiro Yamada/* Copy the first part of user declarations.  */
730a9064fbSMasahiro Yamada
740a9064fbSMasahiro Yamada
750a9064fbSMasahiro Yamada/*
760a9064fbSMasahiro Yamada * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
770a9064fbSMasahiro Yamada * Released under the terms of the GNU GPL v2.0.
780a9064fbSMasahiro Yamada */
790a9064fbSMasahiro Yamada
800a9064fbSMasahiro Yamada#include <ctype.h>
810a9064fbSMasahiro Yamada#include <stdarg.h>
820a9064fbSMasahiro Yamada#include <stdio.h>
830a9064fbSMasahiro Yamada#include <stdlib.h>
840a9064fbSMasahiro Yamada#include <string.h>
850a9064fbSMasahiro Yamada#include <stdbool.h>
860a9064fbSMasahiro Yamada
870a9064fbSMasahiro Yamada#include "lkc.h"
880a9064fbSMasahiro Yamada
890a9064fbSMasahiro Yamada#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)
900a9064fbSMasahiro Yamada
910a9064fbSMasahiro Yamada#define PRINTD		0x0001
920a9064fbSMasahiro Yamada#define DEBUG_PARSE	0x0002
930a9064fbSMasahiro Yamada
940a9064fbSMasahiro Yamadaint cdebug = PRINTD;
950a9064fbSMasahiro Yamada
960a9064fbSMasahiro Yamadaextern int zconflex(void);
970a9064fbSMasahiro Yamadastatic void zconfprint(const char *err, ...);
980a9064fbSMasahiro Yamadastatic void zconf_error(const char *err, ...);
990a9064fbSMasahiro Yamadastatic void zconferror(const char *err);
1000a9064fbSMasahiro Yamadastatic bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken);
1010a9064fbSMasahiro Yamada
1020a9064fbSMasahiro Yamadastruct symbol *symbol_hash[SYMBOL_HASHSIZE];
1030a9064fbSMasahiro Yamada
1040a9064fbSMasahiro Yamadastatic struct menu *current_menu, *current_entry;
1050a9064fbSMasahiro Yamada
1060a9064fbSMasahiro Yamada
1070a9064fbSMasahiro Yamada
1080a9064fbSMasahiro Yamada
109*bf7ab1e7SMasahiro Yamada# ifndef YY_NULLPTR
110*bf7ab1e7SMasahiro Yamada#  if defined __cplusplus && 201103L <= __cplusplus
111*bf7ab1e7SMasahiro Yamada#   define YY_NULLPTR nullptr
112*bf7ab1e7SMasahiro Yamada#  else
113*bf7ab1e7SMasahiro Yamada#   define YY_NULLPTR 0
114*bf7ab1e7SMasahiro Yamada#  endif
1150a9064fbSMasahiro Yamada# endif
1160a9064fbSMasahiro Yamada
1170a9064fbSMasahiro Yamada/* Enabling verbose error messages.  */
1180a9064fbSMasahiro Yamada#ifdef YYERROR_VERBOSE
1190a9064fbSMasahiro Yamada# undef YYERROR_VERBOSE
1200a9064fbSMasahiro Yamada# define YYERROR_VERBOSE 1
1210a9064fbSMasahiro Yamada#else
1220a9064fbSMasahiro Yamada# define YYERROR_VERBOSE 0
1230a9064fbSMasahiro Yamada#endif
1240a9064fbSMasahiro Yamada
125*bf7ab1e7SMasahiro Yamada
126*bf7ab1e7SMasahiro Yamada/* Debug traces.  */
127*bf7ab1e7SMasahiro Yamada#ifndef YYDEBUG
128*bf7ab1e7SMasahiro Yamada# define YYDEBUG 1
129*bf7ab1e7SMasahiro Yamada#endif
130*bf7ab1e7SMasahiro Yamada#if YYDEBUG
131*bf7ab1e7SMasahiro Yamadaextern int zconfdebug;
1320a9064fbSMasahiro Yamada#endif
1330a9064fbSMasahiro Yamada
134*bf7ab1e7SMasahiro Yamada/* Token type.  */
1350a9064fbSMasahiro Yamada#ifndef YYTOKENTYPE
1360a9064fbSMasahiro Yamada# define YYTOKENTYPE
137*bf7ab1e7SMasahiro Yamada  enum yytokentype
138*bf7ab1e7SMasahiro Yamada  {
1390a9064fbSMasahiro Yamada    T_MAINMENU = 258,
1400a9064fbSMasahiro Yamada    T_MENU = 259,
1410a9064fbSMasahiro Yamada    T_ENDMENU = 260,
1420a9064fbSMasahiro Yamada    T_SOURCE = 261,
1430a9064fbSMasahiro Yamada    T_CHOICE = 262,
1440a9064fbSMasahiro Yamada    T_ENDCHOICE = 263,
1450a9064fbSMasahiro Yamada    T_COMMENT = 264,
1460a9064fbSMasahiro Yamada    T_CONFIG = 265,
1470a9064fbSMasahiro Yamada    T_MENUCONFIG = 266,
1480a9064fbSMasahiro Yamada    T_HELP = 267,
1490a9064fbSMasahiro Yamada    T_HELPTEXT = 268,
1500a9064fbSMasahiro Yamada    T_IF = 269,
1510a9064fbSMasahiro Yamada    T_ENDIF = 270,
1520a9064fbSMasahiro Yamada    T_DEPENDS = 271,
1530a9064fbSMasahiro Yamada    T_OPTIONAL = 272,
1540a9064fbSMasahiro Yamada    T_PROMPT = 273,
1550a9064fbSMasahiro Yamada    T_TYPE = 274,
1560a9064fbSMasahiro Yamada    T_DEFAULT = 275,
1570a9064fbSMasahiro Yamada    T_SELECT = 276,
158*bf7ab1e7SMasahiro Yamada    T_IMPLY = 277,
159*bf7ab1e7SMasahiro Yamada    T_RANGE = 278,
160*bf7ab1e7SMasahiro Yamada    T_VISIBLE = 279,
161*bf7ab1e7SMasahiro Yamada    T_OPTION = 280,
162*bf7ab1e7SMasahiro Yamada    T_ON = 281,
163*bf7ab1e7SMasahiro Yamada    T_WORD = 282,
164*bf7ab1e7SMasahiro Yamada    T_WORD_QUOTE = 283,
165*bf7ab1e7SMasahiro Yamada    T_UNEQUAL = 284,
166*bf7ab1e7SMasahiro Yamada    T_LESS = 285,
167*bf7ab1e7SMasahiro Yamada    T_LESS_EQUAL = 286,
168*bf7ab1e7SMasahiro Yamada    T_GREATER = 287,
169*bf7ab1e7SMasahiro Yamada    T_GREATER_EQUAL = 288,
170*bf7ab1e7SMasahiro Yamada    T_CLOSE_PAREN = 289,
171*bf7ab1e7SMasahiro Yamada    T_OPEN_PAREN = 290,
172*bf7ab1e7SMasahiro Yamada    T_EOL = 291,
173*bf7ab1e7SMasahiro Yamada    T_OR = 292,
174*bf7ab1e7SMasahiro Yamada    T_AND = 293,
175*bf7ab1e7SMasahiro Yamada    T_EQUAL = 294,
176*bf7ab1e7SMasahiro Yamada    T_NOT = 295
1770a9064fbSMasahiro Yamada  };
1780a9064fbSMasahiro Yamada#endif
1790a9064fbSMasahiro Yamada
180*bf7ab1e7SMasahiro Yamada/* Value type.  */
1810a9064fbSMasahiro Yamada#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
182*bf7ab1e7SMasahiro Yamada
183*bf7ab1e7SMasahiro Yamadaunion YYSTYPE
1840a9064fbSMasahiro Yamada{
1850a9064fbSMasahiro Yamada
1860a9064fbSMasahiro Yamada
1870a9064fbSMasahiro Yamada	char *string;
1880a9064fbSMasahiro Yamada	struct file *file;
1890a9064fbSMasahiro Yamada	struct symbol *symbol;
1900a9064fbSMasahiro Yamada	struct expr *expr;
1910a9064fbSMasahiro Yamada	struct menu *menu;
1920a9064fbSMasahiro Yamada	const struct kconf_id *id;
1930a9064fbSMasahiro Yamada
1940a9064fbSMasahiro Yamada
195*bf7ab1e7SMasahiro Yamada};
1960a9064fbSMasahiro Yamada
197*bf7ab1e7SMasahiro Yamadatypedef union YYSTYPE YYSTYPE;
1980a9064fbSMasahiro Yamada# define YYSTYPE_IS_TRIVIAL 1
1990a9064fbSMasahiro Yamada# define YYSTYPE_IS_DECLARED 1
2000a9064fbSMasahiro Yamada#endif
2010a9064fbSMasahiro Yamada
2020a9064fbSMasahiro Yamada
203*bf7ab1e7SMasahiro Yamadaextern YYSTYPE zconflval;
204*bf7ab1e7SMasahiro Yamada
205*bf7ab1e7SMasahiro Yamadaint zconfparse (void);
206*bf7ab1e7SMasahiro Yamada
207*bf7ab1e7SMasahiro Yamada
208*bf7ab1e7SMasahiro Yamada
2090a9064fbSMasahiro Yamada/* Copy the second part of user declarations.  */
2100a9064fbSMasahiro Yamada
2110a9064fbSMasahiro Yamada
2120a9064fbSMasahiro Yamada/* Include zconf.hash.c here so it can see the token constants. */
2130a9064fbSMasahiro Yamada#include "zconf.hash.c"
2140a9064fbSMasahiro Yamada
2150a9064fbSMasahiro Yamada
2160a9064fbSMasahiro Yamada
2170a9064fbSMasahiro Yamada#ifdef short
2180a9064fbSMasahiro Yamada# undef short
2190a9064fbSMasahiro Yamada#endif
2200a9064fbSMasahiro Yamada
2210a9064fbSMasahiro Yamada#ifdef YYTYPE_UINT8
2220a9064fbSMasahiro Yamadatypedef YYTYPE_UINT8 yytype_uint8;
2230a9064fbSMasahiro Yamada#else
2240a9064fbSMasahiro Yamadatypedef unsigned char yytype_uint8;
2250a9064fbSMasahiro Yamada#endif
2260a9064fbSMasahiro Yamada
2270a9064fbSMasahiro Yamada#ifdef YYTYPE_INT8
2280a9064fbSMasahiro Yamadatypedef YYTYPE_INT8 yytype_int8;
2290a9064fbSMasahiro Yamada#else
230*bf7ab1e7SMasahiro Yamadatypedef signed char yytype_int8;
2310a9064fbSMasahiro Yamada#endif
2320a9064fbSMasahiro Yamada
2330a9064fbSMasahiro Yamada#ifdef YYTYPE_UINT16
2340a9064fbSMasahiro Yamadatypedef YYTYPE_UINT16 yytype_uint16;
2350a9064fbSMasahiro Yamada#else
2360a9064fbSMasahiro Yamadatypedef unsigned short int yytype_uint16;
2370a9064fbSMasahiro Yamada#endif
2380a9064fbSMasahiro Yamada
2390a9064fbSMasahiro Yamada#ifdef YYTYPE_INT16
2400a9064fbSMasahiro Yamadatypedef YYTYPE_INT16 yytype_int16;
2410a9064fbSMasahiro Yamada#else
2420a9064fbSMasahiro Yamadatypedef short int yytype_int16;
2430a9064fbSMasahiro Yamada#endif
2440a9064fbSMasahiro Yamada
2450a9064fbSMasahiro Yamada#ifndef YYSIZE_T
2460a9064fbSMasahiro Yamada# ifdef __SIZE_TYPE__
2470a9064fbSMasahiro Yamada#  define YYSIZE_T __SIZE_TYPE__
2480a9064fbSMasahiro Yamada# elif defined size_t
2490a9064fbSMasahiro Yamada#  define YYSIZE_T size_t
250*bf7ab1e7SMasahiro Yamada# elif ! defined YYSIZE_T
2510a9064fbSMasahiro Yamada#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
2520a9064fbSMasahiro Yamada#  define YYSIZE_T size_t
2530a9064fbSMasahiro Yamada# else
2540a9064fbSMasahiro Yamada#  define YYSIZE_T unsigned int
2550a9064fbSMasahiro Yamada# endif
2560a9064fbSMasahiro Yamada#endif
2570a9064fbSMasahiro Yamada
2580a9064fbSMasahiro Yamada#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
2590a9064fbSMasahiro Yamada
2600a9064fbSMasahiro Yamada#ifndef YY_
2610a9064fbSMasahiro Yamada# if defined YYENABLE_NLS && YYENABLE_NLS
2620a9064fbSMasahiro Yamada#  if ENABLE_NLS
2630a9064fbSMasahiro Yamada#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
264*bf7ab1e7SMasahiro Yamada#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
2650a9064fbSMasahiro Yamada#  endif
2660a9064fbSMasahiro Yamada# endif
2670a9064fbSMasahiro Yamada# ifndef YY_
268*bf7ab1e7SMasahiro Yamada#  define YY_(Msgid) Msgid
269*bf7ab1e7SMasahiro Yamada# endif
270*bf7ab1e7SMasahiro Yamada#endif
271*bf7ab1e7SMasahiro Yamada
272*bf7ab1e7SMasahiro Yamada#ifndef YY_ATTRIBUTE
273*bf7ab1e7SMasahiro Yamada# if (defined __GNUC__                                               \
274*bf7ab1e7SMasahiro Yamada      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
275*bf7ab1e7SMasahiro Yamada     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
276*bf7ab1e7SMasahiro Yamada#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
277*bf7ab1e7SMasahiro Yamada# else
278*bf7ab1e7SMasahiro Yamada#  define YY_ATTRIBUTE(Spec) /* empty */
279*bf7ab1e7SMasahiro Yamada# endif
280*bf7ab1e7SMasahiro Yamada#endif
281*bf7ab1e7SMasahiro Yamada
282*bf7ab1e7SMasahiro Yamada#ifndef YY_ATTRIBUTE_PURE
283*bf7ab1e7SMasahiro Yamada# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
284*bf7ab1e7SMasahiro Yamada#endif
285*bf7ab1e7SMasahiro Yamada
286*bf7ab1e7SMasahiro Yamada#ifndef YY_ATTRIBUTE_UNUSED
287*bf7ab1e7SMasahiro Yamada# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
288*bf7ab1e7SMasahiro Yamada#endif
289*bf7ab1e7SMasahiro Yamada
290*bf7ab1e7SMasahiro Yamada#if !defined _Noreturn \
291*bf7ab1e7SMasahiro Yamada     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
292*bf7ab1e7SMasahiro Yamada# if defined _MSC_VER && 1200 <= _MSC_VER
293*bf7ab1e7SMasahiro Yamada#  define _Noreturn __declspec (noreturn)
294*bf7ab1e7SMasahiro Yamada# else
295*bf7ab1e7SMasahiro Yamada#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
2960a9064fbSMasahiro Yamada# endif
2970a9064fbSMasahiro Yamada#endif
2980a9064fbSMasahiro Yamada
2990a9064fbSMasahiro Yamada/* Suppress unused-variable warnings by "using" E.  */
3000a9064fbSMasahiro Yamada#if ! defined lint || defined __GNUC__
301*bf7ab1e7SMasahiro Yamada# define YYUSE(E) ((void) (E))
3020a9064fbSMasahiro Yamada#else
303*bf7ab1e7SMasahiro Yamada# define YYUSE(E) /* empty */
3040a9064fbSMasahiro Yamada#endif
3050a9064fbSMasahiro Yamada
306*bf7ab1e7SMasahiro Yamada#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
307*bf7ab1e7SMasahiro Yamada/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
308*bf7ab1e7SMasahiro Yamada# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
309*bf7ab1e7SMasahiro Yamada    _Pragma ("GCC diagnostic push") \
310*bf7ab1e7SMasahiro Yamada    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
311*bf7ab1e7SMasahiro Yamada    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
312*bf7ab1e7SMasahiro Yamada# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
313*bf7ab1e7SMasahiro Yamada    _Pragma ("GCC diagnostic pop")
3140a9064fbSMasahiro Yamada#else
315*bf7ab1e7SMasahiro Yamada# define YY_INITIAL_VALUE(Value) Value
3160a9064fbSMasahiro Yamada#endif
317*bf7ab1e7SMasahiro Yamada#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
318*bf7ab1e7SMasahiro Yamada# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
319*bf7ab1e7SMasahiro Yamada# define YY_IGNORE_MAYBE_UNINITIALIZED_END
3200a9064fbSMasahiro Yamada#endif
321*bf7ab1e7SMasahiro Yamada#ifndef YY_INITIAL_VALUE
322*bf7ab1e7SMasahiro Yamada# define YY_INITIAL_VALUE(Value) /* Nothing. */
323*bf7ab1e7SMasahiro Yamada#endif
324*bf7ab1e7SMasahiro Yamada
3250a9064fbSMasahiro Yamada
3260a9064fbSMasahiro Yamada#if ! defined yyoverflow || YYERROR_VERBOSE
3270a9064fbSMasahiro Yamada
3280a9064fbSMasahiro Yamada/* The parser invokes alloca or malloc; define the necessary symbols.  */
3290a9064fbSMasahiro Yamada
3300a9064fbSMasahiro Yamada# ifdef YYSTACK_USE_ALLOCA
3310a9064fbSMasahiro Yamada#  if YYSTACK_USE_ALLOCA
3320a9064fbSMasahiro Yamada#   ifdef __GNUC__
3330a9064fbSMasahiro Yamada#    define YYSTACK_ALLOC __builtin_alloca
3340a9064fbSMasahiro Yamada#   elif defined __BUILTIN_VA_ARG_INCR
3350a9064fbSMasahiro Yamada#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
3360a9064fbSMasahiro Yamada#   elif defined _AIX
3370a9064fbSMasahiro Yamada#    define YYSTACK_ALLOC __alloca
3380a9064fbSMasahiro Yamada#   elif defined _MSC_VER
3390a9064fbSMasahiro Yamada#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
3400a9064fbSMasahiro Yamada#    define alloca _alloca
3410a9064fbSMasahiro Yamada#   else
3420a9064fbSMasahiro Yamada#    define YYSTACK_ALLOC alloca
343*bf7ab1e7SMasahiro Yamada#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
3440a9064fbSMasahiro Yamada#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
345*bf7ab1e7SMasahiro Yamada      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
3460a9064fbSMasahiro Yamada#     ifndef EXIT_SUCCESS
3470a9064fbSMasahiro Yamada#      define EXIT_SUCCESS 0
3480a9064fbSMasahiro Yamada#     endif
3490a9064fbSMasahiro Yamada#    endif
3500a9064fbSMasahiro Yamada#   endif
3510a9064fbSMasahiro Yamada#  endif
3520a9064fbSMasahiro Yamada# endif
3530a9064fbSMasahiro Yamada
3540a9064fbSMasahiro Yamada# ifdef YYSTACK_ALLOC
355*bf7ab1e7SMasahiro Yamada   /* Pacify GCC's 'empty if-body' warning.  */
356*bf7ab1e7SMasahiro Yamada#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
3570a9064fbSMasahiro Yamada#  ifndef YYSTACK_ALLOC_MAXIMUM
3580a9064fbSMasahiro Yamada    /* The OS might guarantee only one guard page at the bottom of the stack,
3590a9064fbSMasahiro Yamada       and a page size can be as small as 4096 bytes.  So we cannot safely
3600a9064fbSMasahiro Yamada       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
3610a9064fbSMasahiro Yamada       to allow for a few compiler-allocated temporary stack slots.  */
3620a9064fbSMasahiro Yamada#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
3630a9064fbSMasahiro Yamada#  endif
3640a9064fbSMasahiro Yamada# else
3650a9064fbSMasahiro Yamada#  define YYSTACK_ALLOC YYMALLOC
3660a9064fbSMasahiro Yamada#  define YYSTACK_FREE YYFREE
3670a9064fbSMasahiro Yamada#  ifndef YYSTACK_ALLOC_MAXIMUM
3680a9064fbSMasahiro Yamada#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
3690a9064fbSMasahiro Yamada#  endif
3700a9064fbSMasahiro Yamada#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
3710a9064fbSMasahiro Yamada       && ! ((defined YYMALLOC || defined malloc) \
3720a9064fbSMasahiro Yamada             && (defined YYFREE || defined free)))
3730a9064fbSMasahiro Yamada#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
3740a9064fbSMasahiro Yamada#   ifndef EXIT_SUCCESS
3750a9064fbSMasahiro Yamada#    define EXIT_SUCCESS 0
3760a9064fbSMasahiro Yamada#   endif
3770a9064fbSMasahiro Yamada#  endif
3780a9064fbSMasahiro Yamada#  ifndef YYMALLOC
3790a9064fbSMasahiro Yamada#   define YYMALLOC malloc
380*bf7ab1e7SMasahiro Yamada#   if ! defined malloc && ! defined EXIT_SUCCESS
3810a9064fbSMasahiro Yamadavoid *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
3820a9064fbSMasahiro Yamada#   endif
3830a9064fbSMasahiro Yamada#  endif
3840a9064fbSMasahiro Yamada#  ifndef YYFREE
3850a9064fbSMasahiro Yamada#   define YYFREE free
386*bf7ab1e7SMasahiro Yamada#   if ! defined free && ! defined EXIT_SUCCESS
3870a9064fbSMasahiro Yamadavoid free (void *); /* INFRINGES ON USER NAME SPACE */
3880a9064fbSMasahiro Yamada#   endif
3890a9064fbSMasahiro Yamada#  endif
3900a9064fbSMasahiro Yamada# endif
3910a9064fbSMasahiro Yamada#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
3920a9064fbSMasahiro Yamada
3930a9064fbSMasahiro Yamada
3940a9064fbSMasahiro Yamada#if (! defined yyoverflow \
3950a9064fbSMasahiro Yamada     && (! defined __cplusplus \
3960a9064fbSMasahiro Yamada         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
3970a9064fbSMasahiro Yamada
3980a9064fbSMasahiro Yamada/* A type that is properly aligned for any stack member.  */
3990a9064fbSMasahiro Yamadaunion yyalloc
4000a9064fbSMasahiro Yamada{
4010a9064fbSMasahiro Yamada  yytype_int16 yyss_alloc;
4020a9064fbSMasahiro Yamada  YYSTYPE yyvs_alloc;
4030a9064fbSMasahiro Yamada};
4040a9064fbSMasahiro Yamada
4050a9064fbSMasahiro Yamada/* The size of the maximum gap between one aligned stack and the next.  */
4060a9064fbSMasahiro Yamada# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
4070a9064fbSMasahiro Yamada
4080a9064fbSMasahiro Yamada/* The size of an array large to enough to hold all stacks, each with
4090a9064fbSMasahiro Yamada   N elements.  */
4100a9064fbSMasahiro Yamada# define YYSTACK_BYTES(N) \
4110a9064fbSMasahiro Yamada     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
4120a9064fbSMasahiro Yamada      + YYSTACK_GAP_MAXIMUM)
4130a9064fbSMasahiro Yamada
4140a9064fbSMasahiro Yamada# define YYCOPY_NEEDED 1
4150a9064fbSMasahiro Yamada
4160a9064fbSMasahiro Yamada/* Relocate STACK from its old location to the new one.  The
4170a9064fbSMasahiro Yamada   local variables YYSIZE and YYSTACKSIZE give the old and new number of
4180a9064fbSMasahiro Yamada   elements in the stack, and YYPTR gives the new location of the
4190a9064fbSMasahiro Yamada   stack.  Advance YYPTR to a properly aligned location for the next
4200a9064fbSMasahiro Yamada   stack.  */
4210a9064fbSMasahiro Yamada# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
4220a9064fbSMasahiro Yamada    do                                                                  \
4230a9064fbSMasahiro Yamada      {                                                                 \
4240a9064fbSMasahiro Yamada        YYSIZE_T yynewbytes;                                            \
4250a9064fbSMasahiro Yamada        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
4260a9064fbSMasahiro Yamada        Stack = &yyptr->Stack_alloc;                                    \
4270a9064fbSMasahiro Yamada        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
4280a9064fbSMasahiro Yamada        yyptr += yynewbytes / sizeof (*yyptr);                          \
4290a9064fbSMasahiro Yamada      }                                                                 \
430*bf7ab1e7SMasahiro Yamada    while (0)
4310a9064fbSMasahiro Yamada
4320a9064fbSMasahiro Yamada#endif
4330a9064fbSMasahiro Yamada
4340a9064fbSMasahiro Yamada#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
435*bf7ab1e7SMasahiro Yamada/* Copy COUNT objects from SRC to DST.  The source and destination do
4360a9064fbSMasahiro Yamada   not overlap.  */
4370a9064fbSMasahiro Yamada# ifndef YYCOPY
4380a9064fbSMasahiro Yamada#  if defined __GNUC__ && 1 < __GNUC__
439*bf7ab1e7SMasahiro Yamada#   define YYCOPY(Dst, Src, Count) \
440*bf7ab1e7SMasahiro Yamada      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
4410a9064fbSMasahiro Yamada#  else
442*bf7ab1e7SMasahiro Yamada#   define YYCOPY(Dst, Src, Count)              \
4430a9064fbSMasahiro Yamada      do                                        \
4440a9064fbSMasahiro Yamada        {                                       \
4450a9064fbSMasahiro Yamada          YYSIZE_T yyi;                         \
4460a9064fbSMasahiro Yamada          for (yyi = 0; yyi < (Count); yyi++)   \
447*bf7ab1e7SMasahiro Yamada            (Dst)[yyi] = (Src)[yyi];            \
4480a9064fbSMasahiro Yamada        }                                       \
449*bf7ab1e7SMasahiro Yamada      while (0)
4500a9064fbSMasahiro Yamada#  endif
4510a9064fbSMasahiro Yamada# endif
4520a9064fbSMasahiro Yamada#endif /* !YYCOPY_NEEDED */
4530a9064fbSMasahiro Yamada
4540a9064fbSMasahiro Yamada/* YYFINAL -- State number of the termination state.  */
4550a9064fbSMasahiro Yamada#define YYFINAL  11
4560a9064fbSMasahiro Yamada/* YYLAST -- Last index in YYTABLE.  */
457*bf7ab1e7SMasahiro Yamada#define YYLAST   301
4580a9064fbSMasahiro Yamada
4590a9064fbSMasahiro Yamada/* YYNTOKENS -- Number of terminals.  */
460*bf7ab1e7SMasahiro Yamada#define YYNTOKENS  41
4610a9064fbSMasahiro Yamada/* YYNNTS -- Number of nonterminals.  */
4620a9064fbSMasahiro Yamada#define YYNNTS  50
4630a9064fbSMasahiro Yamada/* YYNRULES -- Number of rules.  */
464*bf7ab1e7SMasahiro Yamada#define YYNRULES  124
465*bf7ab1e7SMasahiro Yamada/* YYNSTATES -- Number of states.  */
466*bf7ab1e7SMasahiro Yamada#define YYNSTATES  204
4670a9064fbSMasahiro Yamada
468*bf7ab1e7SMasahiro Yamada/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
469*bf7ab1e7SMasahiro Yamada   by yylex, with out-of-bounds checking.  */
4700a9064fbSMasahiro Yamada#define YYUNDEFTOK  2
471*bf7ab1e7SMasahiro Yamada#define YYMAXUTOK   295
4720a9064fbSMasahiro Yamada
4730a9064fbSMasahiro Yamada#define YYTRANSLATE(YYX)                                                \
4740a9064fbSMasahiro Yamada  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
4750a9064fbSMasahiro Yamada
476*bf7ab1e7SMasahiro Yamada/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
477*bf7ab1e7SMasahiro Yamada   as returned by yylex, without out-of-bounds checking.  */
4780a9064fbSMasahiro Yamadastatic const yytype_uint8 yytranslate[] =
4790a9064fbSMasahiro Yamada{
4800a9064fbSMasahiro Yamada       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
4810a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
4820a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
4830a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
4840a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
4850a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
4860a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
4870a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
4880a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
4890a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
4900a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
4910a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
4920a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
4930a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
4940a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
4950a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
4960a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
4970a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
4980a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
4990a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
5000a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
5010a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
5020a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
5030a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
5040a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
5050a9064fbSMasahiro Yamada       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
5060a9064fbSMasahiro Yamada       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
5070a9064fbSMasahiro Yamada      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
5080a9064fbSMasahiro Yamada      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
509*bf7ab1e7SMasahiro Yamada      35,    36,    37,    38,    39,    40
5100a9064fbSMasahiro Yamada};
5110a9064fbSMasahiro Yamada
5120a9064fbSMasahiro Yamada#if YYDEBUG
513*bf7ab1e7SMasahiro Yamada  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
5140a9064fbSMasahiro Yamadastatic const yytype_uint16 yyrline[] =
5150a9064fbSMasahiro Yamada{
516*bf7ab1e7SMasahiro Yamada       0,   109,   109,   109,   111,   111,   113,   115,   116,   117,
517*bf7ab1e7SMasahiro Yamada     118,   119,   120,   124,   128,   128,   128,   128,   128,   128,
518*bf7ab1e7SMasahiro Yamada     128,   128,   128,   132,   133,   134,   135,   136,   137,   141,
519*bf7ab1e7SMasahiro Yamada     142,   148,   156,   162,   170,   180,   182,   183,   184,   185,
520*bf7ab1e7SMasahiro Yamada     186,   187,   190,   198,   204,   214,   220,   226,   232,   235,
521*bf7ab1e7SMasahiro Yamada     237,   248,   249,   254,   263,   268,   276,   279,   281,   282,
522*bf7ab1e7SMasahiro Yamada     283,   284,   285,   288,   294,   305,   311,   321,   323,   328,
523*bf7ab1e7SMasahiro Yamada     336,   344,   347,   349,   350,   351,   356,   363,   370,   375,
524*bf7ab1e7SMasahiro Yamada     383,   386,   388,   389,   390,   393,   401,   408,   415,   421,
525*bf7ab1e7SMasahiro Yamada     428,   430,   431,   432,   435,   443,   445,   446,   449,   456,
526*bf7ab1e7SMasahiro Yamada     458,   463,   464,   467,   468,   469,   473,   474,   477,   478,
527*bf7ab1e7SMasahiro Yamada     481,   482,   483,   484,   485,   486,   487,   488,   489,   490,
528*bf7ab1e7SMasahiro Yamada     491,   494,   495,   498,   499
5290a9064fbSMasahiro Yamada};
5300a9064fbSMasahiro Yamada#endif
5310a9064fbSMasahiro Yamada
532*bf7ab1e7SMasahiro Yamada#if YYDEBUG || YYERROR_VERBOSE || 0
5330a9064fbSMasahiro Yamada/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
5340a9064fbSMasahiro Yamada   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
5350a9064fbSMasahiro Yamadastatic const char *const yytname[] =
5360a9064fbSMasahiro Yamada{
5370a9064fbSMasahiro Yamada  "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU",
5380a9064fbSMasahiro Yamada  "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG",
5390a9064fbSMasahiro Yamada  "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS",
540*bf7ab1e7SMasahiro Yamada  "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_IMPLY",
541*bf7ab1e7SMasahiro Yamada  "T_RANGE", "T_VISIBLE", "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE",
542*bf7ab1e7SMasahiro Yamada  "T_UNEQUAL", "T_LESS", "T_LESS_EQUAL", "T_GREATER", "T_GREATER_EQUAL",
5430a9064fbSMasahiro Yamada  "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL",
5440a9064fbSMasahiro Yamada  "T_NOT", "$accept", "input", "start", "stmt_list", "option_name",
5450a9064fbSMasahiro Yamada  "common_stmt", "option_error", "config_entry_start", "config_stmt",
5460a9064fbSMasahiro Yamada  "menuconfig_entry_start", "menuconfig_stmt", "config_option_list",
5470a9064fbSMasahiro Yamada  "config_option", "symbol_option", "symbol_option_list",
5480a9064fbSMasahiro Yamada  "symbol_option_arg", "choice", "choice_entry", "choice_end",
5490a9064fbSMasahiro Yamada  "choice_stmt", "choice_option_list", "choice_option", "choice_block",
5500a9064fbSMasahiro Yamada  "if_entry", "if_end", "if_stmt", "if_block", "mainmenu_stmt", "menu",
5510a9064fbSMasahiro Yamada  "menu_entry", "menu_end", "menu_stmt", "menu_block", "source_stmt",
5520a9064fbSMasahiro Yamada  "comment", "comment_stmt", "help_start", "help", "depends_list",
5530a9064fbSMasahiro Yamada  "depends", "visibility_list", "visible", "prompt_stmt_opt", "prompt",
554*bf7ab1e7SMasahiro Yamada  "end", "nl", "if_expr", "expr", "symbol", "word_opt", YY_NULLPTR
5550a9064fbSMasahiro Yamada};
5560a9064fbSMasahiro Yamada#endif
5570a9064fbSMasahiro Yamada
5580a9064fbSMasahiro Yamada# ifdef YYPRINT
559*bf7ab1e7SMasahiro Yamada/* YYTOKNUM[NUM] -- (External) token number corresponding to the
560*bf7ab1e7SMasahiro Yamada   (internal) symbol number NUM (which must be that of a token).  */
5610a9064fbSMasahiro Yamadastatic const yytype_uint16 yytoknum[] =
5620a9064fbSMasahiro Yamada{
5630a9064fbSMasahiro Yamada       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
5640a9064fbSMasahiro Yamada     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
5650a9064fbSMasahiro Yamada     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
566*bf7ab1e7SMasahiro Yamada     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
567*bf7ab1e7SMasahiro Yamada     295
5680a9064fbSMasahiro Yamada};
5690a9064fbSMasahiro Yamada# endif
5700a9064fbSMasahiro Yamada
571*bf7ab1e7SMasahiro Yamada#define YYPACT_NINF -92
5720a9064fbSMasahiro Yamada
573*bf7ab1e7SMasahiro Yamada#define yypact_value_is_default(Yystate) \
574*bf7ab1e7SMasahiro Yamada  (!!((Yystate) == (-92)))
5750a9064fbSMasahiro Yamada
576*bf7ab1e7SMasahiro Yamada#define YYTABLE_NINF -88
5770a9064fbSMasahiro Yamada
578*bf7ab1e7SMasahiro Yamada#define yytable_value_is_error(Yytable_value) \
579*bf7ab1e7SMasahiro Yamada  0
5800a9064fbSMasahiro Yamada
5810a9064fbSMasahiro Yamada  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
5820a9064fbSMasahiro Yamada     STATE-NUM.  */
5830a9064fbSMasahiro Yamadastatic const yytype_int16 yypact[] =
5840a9064fbSMasahiro Yamada{
585*bf7ab1e7SMasahiro Yamada      17,    41,   -92,    15,   -92,   150,   -92,    19,   -92,   -92,
586*bf7ab1e7SMasahiro Yamada     -13,   -92,    28,    41,    38,    41,    50,    47,    41,    79,
587*bf7ab1e7SMasahiro Yamada      82,    44,    76,   -92,   -92,   -92,   -92,   -92,   -92,   -92,
588*bf7ab1e7SMasahiro Yamada     -92,   -92,   118,   -92,   129,   -92,   -92,   -92,   -92,   -92,
589*bf7ab1e7SMasahiro Yamada     -92,   -92,   -92,   -92,   -92,   -92,   -92,   -92,   -92,   -92,
590*bf7ab1e7SMasahiro Yamada     -92,   -92,   184,   -92,   -92,   107,   -92,   111,   -92,   113,
591*bf7ab1e7SMasahiro Yamada     -92,   116,   -92,   139,   140,   151,   -92,   -92,    44,    44,
592*bf7ab1e7SMasahiro Yamada     142,   256,   -92,   160,   173,    27,   117,    80,    51,   255,
593*bf7ab1e7SMasahiro Yamada     -15,   255,   217,   -92,   -92,   -92,   -92,   -92,   -92,    -8,
594*bf7ab1e7SMasahiro Yamada     -92,    44,    44,   107,    87,    87,    87,    87,    87,    87,
595*bf7ab1e7SMasahiro Yamada     -92,   -92,   174,   176,   187,    41,    41,    44,   188,   189,
596*bf7ab1e7SMasahiro Yamada      87,   -92,   213,   -92,   -92,   -92,   -92,   206,   -92,   -92,
597*bf7ab1e7SMasahiro Yamada     193,    41,    41,   203,   -92,   -92,   -92,   -92,   -92,   -92,
598*bf7ab1e7SMasahiro Yamada     -92,   -92,   -92,   -92,   -92,   -92,   -92,   229,   -92,   241,
599*bf7ab1e7SMasahiro Yamada     -92,   -92,   -92,   -92,   -92,   -92,   -92,   -92,   -92,   -92,
600*bf7ab1e7SMasahiro Yamada     216,   -92,   -92,   -92,   -92,   -92,   -92,   -92,   -92,   -92,
601*bf7ab1e7SMasahiro Yamada      44,   229,   222,   229,    64,   229,   229,    87,    31,   231,
602*bf7ab1e7SMasahiro Yamada     -92,   -92,   229,   236,   229,    44,   -92,   145,   242,   -92,
603*bf7ab1e7SMasahiro Yamada     -92,   243,   244,   245,   229,   251,   -92,   -92,   247,   -92,
604*bf7ab1e7SMasahiro Yamada     257,   125,   -92,   -92,   -92,   -92,   -92,   260,    41,   -92,
605*bf7ab1e7SMasahiro Yamada     -92,   -92,   -92,   -92
606*bf7ab1e7SMasahiro Yamada};
607*bf7ab1e7SMasahiro Yamada
608*bf7ab1e7SMasahiro Yamada  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
609*bf7ab1e7SMasahiro Yamada     Performed when YYTABLE does not specify something else to do.  Zero
610*bf7ab1e7SMasahiro Yamada     means the default is an error.  */
611*bf7ab1e7SMasahiro Yamadastatic const yytype_uint8 yydefact[] =
612*bf7ab1e7SMasahiro Yamada{
613*bf7ab1e7SMasahiro Yamada       6,     0,   106,     0,     3,     0,     6,     6,   101,   102,
614*bf7ab1e7SMasahiro Yamada       0,     1,     0,     0,     0,     0,   123,     0,     0,     0,
615*bf7ab1e7SMasahiro Yamada       0,     0,     0,    14,    19,    15,    16,    21,    17,    18,
616*bf7ab1e7SMasahiro Yamada      20,    22,     0,    23,     0,     7,    35,    26,    35,    27,
617*bf7ab1e7SMasahiro Yamada      57,    67,     8,    72,    24,    95,    81,     9,    28,    90,
618*bf7ab1e7SMasahiro Yamada      25,    10,     0,   107,     2,    76,    13,     0,   103,     0,
619*bf7ab1e7SMasahiro Yamada     124,     0,   104,     0,     0,     0,   121,   122,     0,     0,
620*bf7ab1e7SMasahiro Yamada       0,   110,   105,     0,     0,     0,     0,     0,     0,     0,
621*bf7ab1e7SMasahiro Yamada      90,     0,     0,    77,    85,    53,    86,    31,    33,     0,
622*bf7ab1e7SMasahiro Yamada     118,     0,     0,    69,     0,     0,     0,     0,     0,     0,
623*bf7ab1e7SMasahiro Yamada      11,    12,     0,     0,     0,     0,    99,     0,     0,     0,
624*bf7ab1e7SMasahiro Yamada       0,    49,     0,    41,    40,    36,    37,     0,    39,    38,
625*bf7ab1e7SMasahiro Yamada       0,     0,    99,     0,    61,    62,    58,    60,    59,    68,
626*bf7ab1e7SMasahiro Yamada      56,    55,    73,    75,    71,    74,    70,   108,    97,     0,
627*bf7ab1e7SMasahiro Yamada      96,    82,    84,    80,    83,    79,    92,    93,    91,   117,
628*bf7ab1e7SMasahiro Yamada     119,   120,   116,   111,   112,   113,   114,   115,    30,    88,
629*bf7ab1e7SMasahiro Yamada       0,   108,     0,   108,   108,   108,   108,     0,     0,     0,
630*bf7ab1e7SMasahiro Yamada      89,    65,   108,     0,   108,     0,    98,     0,     0,    42,
631*bf7ab1e7SMasahiro Yamada     100,     0,     0,     0,   108,    51,    48,    29,     0,    64,
632*bf7ab1e7SMasahiro Yamada       0,   109,    94,    43,    44,    45,    46,     0,     0,    50,
633*bf7ab1e7SMasahiro Yamada      63,    66,    47,    52
6340a9064fbSMasahiro Yamada};
6350a9064fbSMasahiro Yamada
6360a9064fbSMasahiro Yamada  /* YYPGOTO[NTERM-NUM].  */
6370a9064fbSMasahiro Yamadastatic const yytype_int16 yypgoto[] =
6380a9064fbSMasahiro Yamada{
639*bf7ab1e7SMasahiro Yamada     -92,   -92,   285,   291,   -92,    32,   -66,   -92,   -92,   -92,
640*bf7ab1e7SMasahiro Yamada     -92,   261,   -92,   -92,   -92,   -92,   -92,   -92,   -92,     1,
641*bf7ab1e7SMasahiro Yamada     -92,   -92,   -92,   -92,   -92,   -92,   -92,   -92,   -92,   -92,
642*bf7ab1e7SMasahiro Yamada     -92,    24,   -92,   -92,   -92,   -92,   -92,   221,   220,   -64,
643*bf7ab1e7SMasahiro Yamada     -92,   -92,   179,    -1,    67,     0,   110,   -67,   -91,   -92
6440a9064fbSMasahiro Yamada};
6450a9064fbSMasahiro Yamada
646*bf7ab1e7SMasahiro Yamada  /* YYDEFGOTO[NTERM-NUM].  */
647*bf7ab1e7SMasahiro Yamadastatic const yytype_int16 yydefgoto[] =
648*bf7ab1e7SMasahiro Yamada{
649*bf7ab1e7SMasahiro Yamada      -1,     3,     4,     5,    34,    35,   114,    36,    37,    38,
650*bf7ab1e7SMasahiro Yamada      39,    75,   115,   116,   168,   199,    40,    41,   130,    42,
651*bf7ab1e7SMasahiro Yamada      77,   126,    78,    43,   134,    44,    79,     6,    45,    46,
652*bf7ab1e7SMasahiro Yamada     143,    47,    81,    48,    49,    50,   117,   118,    82,   119,
653*bf7ab1e7SMasahiro Yamada      80,   140,   162,   163,    51,     7,   176,    70,    71,    61
654*bf7ab1e7SMasahiro Yamada};
655*bf7ab1e7SMasahiro Yamada
656*bf7ab1e7SMasahiro Yamada  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
657*bf7ab1e7SMasahiro Yamada     positive, shift that token.  If negative, reduce the rule whose
6580a9064fbSMasahiro Yamada     number is the opposite.  If YYTABLE_NINF, syntax error.  */
6590a9064fbSMasahiro Yamadastatic const yytype_int16 yytable[] =
6600a9064fbSMasahiro Yamada{
661*bf7ab1e7SMasahiro Yamada      10,    89,    90,   152,   153,   154,   155,   156,   157,   137,
662*bf7ab1e7SMasahiro Yamada      55,   125,    57,   128,    59,    11,   147,    63,   148,   167,
663*bf7ab1e7SMasahiro Yamada       1,   138,     1,     2,   150,   151,   149,   -32,   102,    91,
664*bf7ab1e7SMasahiro Yamada      92,   -32,   -32,   -32,   -32,   -32,   -32,   -32,   -32,   103,
665*bf7ab1e7SMasahiro Yamada     164,   -32,   -32,   104,   -32,   105,   106,   107,   108,   109,
666*bf7ab1e7SMasahiro Yamada     110,   -32,   111,     2,   112,    53,    14,    15,   185,    17,
667*bf7ab1e7SMasahiro Yamada      18,    19,    20,   113,    56,    21,    22,   186,     8,     9,
668*bf7ab1e7SMasahiro Yamada      93,    66,    67,   147,    58,   148,   184,    60,   175,    68,
669*bf7ab1e7SMasahiro Yamada     133,   102,   142,    62,    69,   -54,   -54,    33,   -54,   -54,
670*bf7ab1e7SMasahiro Yamada     -54,   -54,   103,   177,   -54,   -54,   104,   120,   121,   122,
671*bf7ab1e7SMasahiro Yamada     123,    91,    92,   135,   161,   144,    64,   112,   191,    65,
672*bf7ab1e7SMasahiro Yamada     129,   132,    72,   141,    66,    67,   124,   -34,   102,    73,
673*bf7ab1e7SMasahiro Yamada     172,   -34,   -34,   -34,   -34,   -34,   -34,   -34,   -34,   103,
674*bf7ab1e7SMasahiro Yamada      74,   -34,   -34,   104,   -34,   105,   106,   107,   108,   109,
675*bf7ab1e7SMasahiro Yamada     110,   -34,   111,    53,   112,   131,   136,    83,   145,    84,
676*bf7ab1e7SMasahiro Yamada      -5,    12,    85,   113,    13,    14,    15,    16,    17,    18,
677*bf7ab1e7SMasahiro Yamada      19,    20,    91,    92,    21,    22,    23,    24,    25,    26,
678*bf7ab1e7SMasahiro Yamada      27,    28,    29,    30,    31,    86,    87,    32,     2,    91,
679*bf7ab1e7SMasahiro Yamada      92,   192,    91,    92,    -4,    12,    33,    88,    13,    14,
680*bf7ab1e7SMasahiro Yamada      15,    16,    17,    18,    19,    20,   100,   203,    21,    22,
681*bf7ab1e7SMasahiro Yamada      23,    24,    25,    26,    27,    28,    29,    30,    31,   101,
682*bf7ab1e7SMasahiro Yamada     158,    32,   159,   160,   169,   165,   166,   -87,   102,   170,
683*bf7ab1e7SMasahiro Yamada      33,   -87,   -87,   -87,   -87,   -87,   -87,   -87,   -87,   171,
684*bf7ab1e7SMasahiro Yamada     174,   -87,   -87,   104,   -87,   -87,   -87,   -87,   -87,   -87,
685*bf7ab1e7SMasahiro Yamada     -87,   -87,   102,   175,   112,   -78,   -78,   -78,   -78,   -78,
686*bf7ab1e7SMasahiro Yamada     -78,   -78,   -78,   146,    92,   -78,   -78,   104,   179,    13,
687*bf7ab1e7SMasahiro Yamada      14,    15,    16,    17,    18,    19,    20,   187,   112,    21,
688*bf7ab1e7SMasahiro Yamada      22,   178,   189,   180,   181,   182,   183,   146,   193,   194,
689*bf7ab1e7SMasahiro Yamada     195,   196,   188,   200,   190,    94,    95,    96,    97,    98,
690*bf7ab1e7SMasahiro Yamada     198,    33,    54,   201,   197,    99,   202,    52,   127,    76,
691*bf7ab1e7SMasahiro Yamada     139,   173
6920a9064fbSMasahiro Yamada};
6930a9064fbSMasahiro Yamada
694*bf7ab1e7SMasahiro Yamadastatic const yytype_uint8 yycheck[] =
6950a9064fbSMasahiro Yamada{
696*bf7ab1e7SMasahiro Yamada       1,    68,    69,    94,    95,    96,    97,    98,    99,    24,
697*bf7ab1e7SMasahiro Yamada      10,    77,    13,    77,    15,     0,    82,    18,    82,   110,
698*bf7ab1e7SMasahiro Yamada       3,    36,     3,    36,    91,    92,    34,     0,     1,    37,
699*bf7ab1e7SMasahiro Yamada      38,     4,     5,     6,     7,     8,     9,    10,    11,    12,
700*bf7ab1e7SMasahiro Yamada     107,    14,    15,    16,    17,    18,    19,    20,    21,    22,
701*bf7ab1e7SMasahiro Yamada      23,    24,    25,    36,    27,    36,     5,     6,    27,     8,
702*bf7ab1e7SMasahiro Yamada       9,    10,    11,    36,    36,    14,    15,    36,    27,    28,
703*bf7ab1e7SMasahiro Yamada      70,    27,    28,   139,    36,   139,   167,    27,    14,    35,
704*bf7ab1e7SMasahiro Yamada      79,     1,    81,    36,    40,     5,     6,    36,     8,     9,
705*bf7ab1e7SMasahiro Yamada      10,    11,    12,   160,    14,    15,    16,    17,    18,    19,
706*bf7ab1e7SMasahiro Yamada      20,    37,    38,    79,   105,    81,    27,    27,   175,    27,
707*bf7ab1e7SMasahiro Yamada      78,    79,    36,    81,    27,    28,    36,     0,     1,     1,
708*bf7ab1e7SMasahiro Yamada     121,     4,     5,     6,     7,     8,     9,    10,    11,    12,
709*bf7ab1e7SMasahiro Yamada       1,    14,    15,    16,    17,    18,    19,    20,    21,    22,
710*bf7ab1e7SMasahiro Yamada      23,    24,    25,    36,    27,    78,    79,    36,    81,    36,
711*bf7ab1e7SMasahiro Yamada       0,     1,    36,    36,     4,     5,     6,     7,     8,     9,
712*bf7ab1e7SMasahiro Yamada      10,    11,    37,    38,    14,    15,    16,    17,    18,    19,
713*bf7ab1e7SMasahiro Yamada      20,    21,    22,    23,    24,    36,    36,    27,    36,    37,
714*bf7ab1e7SMasahiro Yamada      38,    36,    37,    38,     0,     1,    36,    36,     4,     5,
715*bf7ab1e7SMasahiro Yamada       6,     7,     8,     9,    10,    11,    36,   198,    14,    15,
716*bf7ab1e7SMasahiro Yamada      16,    17,    18,    19,    20,    21,    22,    23,    24,    36,
717*bf7ab1e7SMasahiro Yamada      36,    27,    36,    26,     1,    27,    27,     0,     1,    13,
718*bf7ab1e7SMasahiro Yamada      36,     4,     5,     6,     7,     8,     9,    10,    11,    36,
719*bf7ab1e7SMasahiro Yamada      27,    14,    15,    16,    17,    18,    19,    20,    21,    22,
720*bf7ab1e7SMasahiro Yamada      23,    24,     1,    14,    27,     4,     5,     6,     7,     8,
721*bf7ab1e7SMasahiro Yamada       9,    10,    11,    36,    38,    14,    15,    16,    36,     4,
722*bf7ab1e7SMasahiro Yamada       5,     6,     7,     8,     9,    10,    11,    36,    27,    14,
723*bf7ab1e7SMasahiro Yamada      15,   161,    36,   163,   164,   165,   166,    36,    36,    36,
724*bf7ab1e7SMasahiro Yamada      36,    36,   172,    36,   174,    29,    30,    31,    32,    33,
725*bf7ab1e7SMasahiro Yamada      39,    36,     7,    36,   184,    39,    36,     6,    77,    38,
726*bf7ab1e7SMasahiro Yamada      80,   122
7270a9064fbSMasahiro Yamada};
7280a9064fbSMasahiro Yamada
7290a9064fbSMasahiro Yamada  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
7300a9064fbSMasahiro Yamada     symbol of state STATE-NUM.  */
7310a9064fbSMasahiro Yamadastatic const yytype_uint8 yystos[] =
7320a9064fbSMasahiro Yamada{
733*bf7ab1e7SMasahiro Yamada       0,     3,    36,    42,    43,    44,    68,    86,    27,    28,
734*bf7ab1e7SMasahiro Yamada      84,     0,     1,     4,     5,     6,     7,     8,     9,    10,
7350a9064fbSMasahiro Yamada      11,    14,    15,    16,    17,    18,    19,    20,    21,    22,
736*bf7ab1e7SMasahiro Yamada      23,    24,    27,    36,    45,    46,    48,    49,    50,    51,
737*bf7ab1e7SMasahiro Yamada      57,    58,    60,    64,    66,    69,    70,    72,    74,    75,
738*bf7ab1e7SMasahiro Yamada      76,    85,    44,    36,    43,    86,    36,    84,    36,    84,
739*bf7ab1e7SMasahiro Yamada      27,    90,    36,    84,    27,    27,    27,    28,    35,    40,
740*bf7ab1e7SMasahiro Yamada      88,    89,    36,     1,     1,    52,    52,    61,    63,    67,
741*bf7ab1e7SMasahiro Yamada      81,    73,    79,    36,    36,    36,    36,    36,    36,    88,
742*bf7ab1e7SMasahiro Yamada      88,    37,    38,    86,    29,    30,    31,    32,    33,    39,
743*bf7ab1e7SMasahiro Yamada      36,    36,     1,    12,    16,    18,    19,    20,    21,    22,
744*bf7ab1e7SMasahiro Yamada      23,    25,    27,    36,    47,    53,    54,    77,    78,    80,
745*bf7ab1e7SMasahiro Yamada      17,    18,    19,    20,    36,    47,    62,    78,    80,    46,
746*bf7ab1e7SMasahiro Yamada      59,    85,    46,    60,    65,    72,    85,    24,    36,    79,
747*bf7ab1e7SMasahiro Yamada      82,    46,    60,    71,    72,    85,    36,    47,    80,    34,
748*bf7ab1e7SMasahiro Yamada      88,    88,    89,    89,    89,    89,    89,    89,    36,    36,
749*bf7ab1e7SMasahiro Yamada      26,    84,    83,    84,    88,    27,    27,    89,    55,     1,
750*bf7ab1e7SMasahiro Yamada      13,    36,    84,    83,    27,    14,    87,    88,    87,    36,
751*bf7ab1e7SMasahiro Yamada      87,    87,    87,    87,    89,    27,    36,    36,    87,    36,
752*bf7ab1e7SMasahiro Yamada      87,    88,    36,    36,    36,    36,    36,    87,    39,    56,
753*bf7ab1e7SMasahiro Yamada      36,    36,    36,    84
7540a9064fbSMasahiro Yamada};
7550a9064fbSMasahiro Yamada
756*bf7ab1e7SMasahiro Yamada  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
757*bf7ab1e7SMasahiro Yamadastatic const yytype_uint8 yyr1[] =
758*bf7ab1e7SMasahiro Yamada{
759*bf7ab1e7SMasahiro Yamada       0,    41,    42,    42,    43,    43,    44,    44,    44,    44,
760*bf7ab1e7SMasahiro Yamada      44,    44,    44,    44,    45,    45,    45,    45,    45,    45,
761*bf7ab1e7SMasahiro Yamada      45,    45,    45,    46,    46,    46,    46,    46,    46,    47,
762*bf7ab1e7SMasahiro Yamada      47,    48,    49,    50,    51,    52,    52,    52,    52,    52,
763*bf7ab1e7SMasahiro Yamada      52,    52,    53,    53,    53,    53,    53,    53,    54,    55,
764*bf7ab1e7SMasahiro Yamada      55,    56,    56,    57,    58,    59,    60,    61,    61,    61,
765*bf7ab1e7SMasahiro Yamada      61,    61,    61,    62,    62,    62,    62,    63,    63,    64,
766*bf7ab1e7SMasahiro Yamada      65,    66,    67,    67,    67,    67,    68,    69,    70,    71,
767*bf7ab1e7SMasahiro Yamada      72,    73,    73,    73,    73,    74,    75,    76,    77,    78,
768*bf7ab1e7SMasahiro Yamada      79,    79,    79,    79,    80,    81,    81,    81,    82,    83,
769*bf7ab1e7SMasahiro Yamada      83,    84,    84,    85,    85,    85,    86,    86,    87,    87,
770*bf7ab1e7SMasahiro Yamada      88,    88,    88,    88,    88,    88,    88,    88,    88,    88,
771*bf7ab1e7SMasahiro Yamada      88,    89,    89,    90,    90
772*bf7ab1e7SMasahiro Yamada};
773*bf7ab1e7SMasahiro Yamada
774*bf7ab1e7SMasahiro Yamada  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
775*bf7ab1e7SMasahiro Yamadastatic const yytype_uint8 yyr2[] =
776*bf7ab1e7SMasahiro Yamada{
777*bf7ab1e7SMasahiro Yamada       0,     2,     2,     1,     2,     1,     0,     2,     2,     2,
778*bf7ab1e7SMasahiro Yamada       2,     4,     4,     3,     1,     1,     1,     1,     1,     1,
779*bf7ab1e7SMasahiro Yamada       1,     1,     1,     1,     1,     1,     1,     1,     1,     3,
780*bf7ab1e7SMasahiro Yamada       2,     3,     2,     3,     2,     0,     2,     2,     2,     2,
781*bf7ab1e7SMasahiro Yamada       2,     2,     3,     4,     4,     4,     4,     5,     3,     0,
782*bf7ab1e7SMasahiro Yamada       3,     0,     2,     3,     2,     1,     3,     0,     2,     2,
783*bf7ab1e7SMasahiro Yamada       2,     2,     2,     4,     3,     2,     4,     0,     2,     3,
784*bf7ab1e7SMasahiro Yamada       1,     3,     0,     2,     2,     2,     3,     3,     3,     1,
785*bf7ab1e7SMasahiro Yamada       3,     0,     2,     2,     2,     3,     3,     2,     2,     2,
786*bf7ab1e7SMasahiro Yamada       0,     2,     2,     2,     4,     0,     2,     2,     2,     0,
787*bf7ab1e7SMasahiro Yamada       2,     1,     1,     2,     2,     2,     1,     2,     0,     2,
788*bf7ab1e7SMasahiro Yamada       1,     3,     3,     3,     3,     3,     3,     3,     2,     3,
789*bf7ab1e7SMasahiro Yamada       3,     1,     1,     0,     1
790*bf7ab1e7SMasahiro Yamada};
791*bf7ab1e7SMasahiro Yamada
792*bf7ab1e7SMasahiro Yamada
7930a9064fbSMasahiro Yamada#define yyerrok         (yyerrstatus = 0)
7940a9064fbSMasahiro Yamada#define yyclearin       (yychar = YYEMPTY)
7950a9064fbSMasahiro Yamada#define YYEMPTY         (-2)
7960a9064fbSMasahiro Yamada#define YYEOF           0
7970a9064fbSMasahiro Yamada
7980a9064fbSMasahiro Yamada#define YYACCEPT        goto yyacceptlab
7990a9064fbSMasahiro Yamada#define YYABORT         goto yyabortlab
8000a9064fbSMasahiro Yamada#define YYERROR         goto yyerrorlab
8010a9064fbSMasahiro Yamada
8020a9064fbSMasahiro Yamada
8030a9064fbSMasahiro Yamada#define YYRECOVERING()  (!!yyerrstatus)
8040a9064fbSMasahiro Yamada
8050a9064fbSMasahiro Yamada#define YYBACKUP(Token, Value)                                  \
8060a9064fbSMasahiro Yamadado                                                              \
807*bf7ab1e7SMasahiro Yamada  if (yychar == YYEMPTY)                                        \
8080a9064fbSMasahiro Yamada    {                                                           \
8090a9064fbSMasahiro Yamada      yychar = (Token);                                         \
8100a9064fbSMasahiro Yamada      yylval = (Value);                                         \
811*bf7ab1e7SMasahiro Yamada      YYPOPSTACK (yylen);                                       \
812*bf7ab1e7SMasahiro Yamada      yystate = *yyssp;                                         \
8130a9064fbSMasahiro Yamada      goto yybackup;                                            \
8140a9064fbSMasahiro Yamada    }                                                           \
8150a9064fbSMasahiro Yamada  else                                                          \
8160a9064fbSMasahiro Yamada    {                                                           \
8170a9064fbSMasahiro Yamada      yyerror (YY_("syntax error: cannot back up")); \
8180a9064fbSMasahiro Yamada      YYERROR;                                                  \
8190a9064fbSMasahiro Yamada    }                                                           \
820*bf7ab1e7SMasahiro Yamadawhile (0)
8210a9064fbSMasahiro Yamada
822*bf7ab1e7SMasahiro Yamada/* Error token number */
8230a9064fbSMasahiro Yamada#define YYTERROR        1
8240a9064fbSMasahiro Yamada#define YYERRCODE       256
8250a9064fbSMasahiro Yamada
8260a9064fbSMasahiro Yamada
8270a9064fbSMasahiro Yamada
8280a9064fbSMasahiro Yamada/* Enable debugging if requested.  */
8290a9064fbSMasahiro Yamada#if YYDEBUG
8300a9064fbSMasahiro Yamada
8310a9064fbSMasahiro Yamada# ifndef YYFPRINTF
8320a9064fbSMasahiro Yamada#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
8330a9064fbSMasahiro Yamada#  define YYFPRINTF fprintf
8340a9064fbSMasahiro Yamada# endif
8350a9064fbSMasahiro Yamada
8360a9064fbSMasahiro Yamada# define YYDPRINTF(Args)                        \
8370a9064fbSMasahiro Yamadado {                                            \
8380a9064fbSMasahiro Yamada  if (yydebug)                                  \
8390a9064fbSMasahiro Yamada    YYFPRINTF Args;                             \
840*bf7ab1e7SMasahiro Yamada} while (0)
841*bf7ab1e7SMasahiro Yamada
842*bf7ab1e7SMasahiro Yamada/* This macro is provided for backward compatibility. */
843*bf7ab1e7SMasahiro Yamada#ifndef YY_LOCATION_PRINT
844*bf7ab1e7SMasahiro Yamada# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
845*bf7ab1e7SMasahiro Yamada#endif
846*bf7ab1e7SMasahiro Yamada
8470a9064fbSMasahiro Yamada
8480a9064fbSMasahiro Yamada# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
8490a9064fbSMasahiro Yamadado {                                                                      \
8500a9064fbSMasahiro Yamada  if (yydebug)                                                            \
8510a9064fbSMasahiro Yamada    {                                                                     \
8520a9064fbSMasahiro Yamada      YYFPRINTF (stderr, "%s ", Title);                                   \
8530a9064fbSMasahiro Yamada      yy_symbol_print (stderr,                                            \
8540a9064fbSMasahiro Yamada                  Type, Value); \
8550a9064fbSMasahiro Yamada      YYFPRINTF (stderr, "\n");                                           \
8560a9064fbSMasahiro Yamada    }                                                                     \
857*bf7ab1e7SMasahiro Yamada} while (0)
8580a9064fbSMasahiro Yamada
8590a9064fbSMasahiro Yamada
860*bf7ab1e7SMasahiro Yamada/*----------------------------------------.
861*bf7ab1e7SMasahiro Yamada| Print this symbol's value on YYOUTPUT.  |
862*bf7ab1e7SMasahiro Yamada`----------------------------------------*/
8630a9064fbSMasahiro Yamada
8640a9064fbSMasahiro Yamadastatic void
8650a9064fbSMasahiro Yamadayy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
8660a9064fbSMasahiro Yamada{
867*bf7ab1e7SMasahiro Yamada  FILE *yyo = yyoutput;
868*bf7ab1e7SMasahiro Yamada  YYUSE (yyo);
8690a9064fbSMasahiro Yamada  if (!yyvaluep)
8700a9064fbSMasahiro Yamada    return;
8710a9064fbSMasahiro Yamada# ifdef YYPRINT
8720a9064fbSMasahiro Yamada  if (yytype < YYNTOKENS)
8730a9064fbSMasahiro Yamada    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
8740a9064fbSMasahiro Yamada# endif
875*bf7ab1e7SMasahiro Yamada  YYUSE (yytype);
8760a9064fbSMasahiro Yamada}
8770a9064fbSMasahiro Yamada
8780a9064fbSMasahiro Yamada
8790a9064fbSMasahiro Yamada/*--------------------------------.
8800a9064fbSMasahiro Yamada| Print this symbol on YYOUTPUT.  |
8810a9064fbSMasahiro Yamada`--------------------------------*/
8820a9064fbSMasahiro Yamada
8830a9064fbSMasahiro Yamadastatic void
8840a9064fbSMasahiro Yamadayy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
8850a9064fbSMasahiro Yamada{
886*bf7ab1e7SMasahiro Yamada  YYFPRINTF (yyoutput, "%s %s (",
887*bf7ab1e7SMasahiro Yamada             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
8880a9064fbSMasahiro Yamada
8890a9064fbSMasahiro Yamada  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
8900a9064fbSMasahiro Yamada  YYFPRINTF (yyoutput, ")");
8910a9064fbSMasahiro Yamada}
8920a9064fbSMasahiro Yamada
8930a9064fbSMasahiro Yamada/*------------------------------------------------------------------.
8940a9064fbSMasahiro Yamada| yy_stack_print -- Print the state stack from its BOTTOM up to its |
8950a9064fbSMasahiro Yamada| TOP (included).                                                   |
8960a9064fbSMasahiro Yamada`------------------------------------------------------------------*/
8970a9064fbSMasahiro Yamada
8980a9064fbSMasahiro Yamadastatic void
8990a9064fbSMasahiro Yamadayy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
9000a9064fbSMasahiro Yamada{
9010a9064fbSMasahiro Yamada  YYFPRINTF (stderr, "Stack now");
9020a9064fbSMasahiro Yamada  for (; yybottom <= yytop; yybottom++)
9030a9064fbSMasahiro Yamada    {
9040a9064fbSMasahiro Yamada      int yybot = *yybottom;
9050a9064fbSMasahiro Yamada      YYFPRINTF (stderr, " %d", yybot);
9060a9064fbSMasahiro Yamada    }
9070a9064fbSMasahiro Yamada  YYFPRINTF (stderr, "\n");
9080a9064fbSMasahiro Yamada}
9090a9064fbSMasahiro Yamada
9100a9064fbSMasahiro Yamada# define YY_STACK_PRINT(Bottom, Top)                            \
9110a9064fbSMasahiro Yamadado {                                                            \
9120a9064fbSMasahiro Yamada  if (yydebug)                                                  \
9130a9064fbSMasahiro Yamada    yy_stack_print ((Bottom), (Top));                           \
914*bf7ab1e7SMasahiro Yamada} while (0)
9150a9064fbSMasahiro Yamada
9160a9064fbSMasahiro Yamada
9170a9064fbSMasahiro Yamada/*------------------------------------------------.
9180a9064fbSMasahiro Yamada| Report that the YYRULE is going to be reduced.  |
9190a9064fbSMasahiro Yamada`------------------------------------------------*/
9200a9064fbSMasahiro Yamada
9210a9064fbSMasahiro Yamadastatic void
922*bf7ab1e7SMasahiro Yamadayy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
9230a9064fbSMasahiro Yamada{
924*bf7ab1e7SMasahiro Yamada  unsigned long int yylno = yyrline[yyrule];
9250a9064fbSMasahiro Yamada  int yynrhs = yyr2[yyrule];
9260a9064fbSMasahiro Yamada  int yyi;
9270a9064fbSMasahiro Yamada  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
9280a9064fbSMasahiro Yamada             yyrule - 1, yylno);
9290a9064fbSMasahiro Yamada  /* The symbols being reduced.  */
9300a9064fbSMasahiro Yamada  for (yyi = 0; yyi < yynrhs; yyi++)
9310a9064fbSMasahiro Yamada    {
9320a9064fbSMasahiro Yamada      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
933*bf7ab1e7SMasahiro Yamada      yy_symbol_print (stderr,
934*bf7ab1e7SMasahiro Yamada                       yystos[yyssp[yyi + 1 - yynrhs]],
9350a9064fbSMasahiro Yamada                       &(yyvsp[(yyi + 1) - (yynrhs)])
9360a9064fbSMasahiro Yamada                                              );
9370a9064fbSMasahiro Yamada      YYFPRINTF (stderr, "\n");
9380a9064fbSMasahiro Yamada    }
9390a9064fbSMasahiro Yamada}
9400a9064fbSMasahiro Yamada
9410a9064fbSMasahiro Yamada# define YY_REDUCE_PRINT(Rule)          \
9420a9064fbSMasahiro Yamadado {                                    \
9430a9064fbSMasahiro Yamada  if (yydebug)                          \
944*bf7ab1e7SMasahiro Yamada    yy_reduce_print (yyssp, yyvsp, Rule); \
945*bf7ab1e7SMasahiro Yamada} while (0)
9460a9064fbSMasahiro Yamada
9470a9064fbSMasahiro Yamada/* Nonzero means print parse trace.  It is left uninitialized so that
9480a9064fbSMasahiro Yamada   multiple parsers can coexist.  */
9490a9064fbSMasahiro Yamadaint yydebug;
9500a9064fbSMasahiro Yamada#else /* !YYDEBUG */
9510a9064fbSMasahiro Yamada# define YYDPRINTF(Args)
9520a9064fbSMasahiro Yamada# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
9530a9064fbSMasahiro Yamada# define YY_STACK_PRINT(Bottom, Top)
9540a9064fbSMasahiro Yamada# define YY_REDUCE_PRINT(Rule)
9550a9064fbSMasahiro Yamada#endif /* !YYDEBUG */
9560a9064fbSMasahiro Yamada
9570a9064fbSMasahiro Yamada
9580a9064fbSMasahiro Yamada/* YYINITDEPTH -- initial size of the parser's stacks.  */
9590a9064fbSMasahiro Yamada#ifndef YYINITDEPTH
9600a9064fbSMasahiro Yamada# define YYINITDEPTH 200
9610a9064fbSMasahiro Yamada#endif
9620a9064fbSMasahiro Yamada
9630a9064fbSMasahiro Yamada/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
9640a9064fbSMasahiro Yamada   if the built-in stack extension method is used).
9650a9064fbSMasahiro Yamada
9660a9064fbSMasahiro Yamada   Do not make this value too large; the results are undefined if
9670a9064fbSMasahiro Yamada   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
9680a9064fbSMasahiro Yamada   evaluated with infinite-precision integer arithmetic.  */
9690a9064fbSMasahiro Yamada
9700a9064fbSMasahiro Yamada#ifndef YYMAXDEPTH
9710a9064fbSMasahiro Yamada# define YYMAXDEPTH 10000
9720a9064fbSMasahiro Yamada#endif
9730a9064fbSMasahiro Yamada
9740a9064fbSMasahiro Yamada
9750a9064fbSMasahiro Yamada#if YYERROR_VERBOSE
9760a9064fbSMasahiro Yamada
9770a9064fbSMasahiro Yamada# ifndef yystrlen
9780a9064fbSMasahiro Yamada#  if defined __GLIBC__ && defined _STRING_H
9790a9064fbSMasahiro Yamada#   define yystrlen strlen
9800a9064fbSMasahiro Yamada#  else
9810a9064fbSMasahiro Yamada/* Return the length of YYSTR.  */
9820a9064fbSMasahiro Yamadastatic YYSIZE_T
9830a9064fbSMasahiro Yamadayystrlen (const char *yystr)
9840a9064fbSMasahiro Yamada{
9850a9064fbSMasahiro Yamada  YYSIZE_T yylen;
9860a9064fbSMasahiro Yamada  for (yylen = 0; yystr[yylen]; yylen++)
9870a9064fbSMasahiro Yamada    continue;
9880a9064fbSMasahiro Yamada  return yylen;
9890a9064fbSMasahiro Yamada}
9900a9064fbSMasahiro Yamada#  endif
9910a9064fbSMasahiro Yamada# endif
9920a9064fbSMasahiro Yamada
9930a9064fbSMasahiro Yamada# ifndef yystpcpy
9940a9064fbSMasahiro Yamada#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
9950a9064fbSMasahiro Yamada#   define yystpcpy stpcpy
9960a9064fbSMasahiro Yamada#  else
9970a9064fbSMasahiro Yamada/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
9980a9064fbSMasahiro Yamada   YYDEST.  */
9990a9064fbSMasahiro Yamadastatic char *
10000a9064fbSMasahiro Yamadayystpcpy (char *yydest, const char *yysrc)
10010a9064fbSMasahiro Yamada{
10020a9064fbSMasahiro Yamada  char *yyd = yydest;
10030a9064fbSMasahiro Yamada  const char *yys = yysrc;
10040a9064fbSMasahiro Yamada
10050a9064fbSMasahiro Yamada  while ((*yyd++ = *yys++) != '\0')
10060a9064fbSMasahiro Yamada    continue;
10070a9064fbSMasahiro Yamada
10080a9064fbSMasahiro Yamada  return yyd - 1;
10090a9064fbSMasahiro Yamada}
10100a9064fbSMasahiro Yamada#  endif
10110a9064fbSMasahiro Yamada# endif
10120a9064fbSMasahiro Yamada
10130a9064fbSMasahiro Yamada# ifndef yytnamerr
10140a9064fbSMasahiro Yamada/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
10150a9064fbSMasahiro Yamada   quotes and backslashes, so that it's suitable for yyerror.  The
10160a9064fbSMasahiro Yamada   heuristic is that double-quoting is unnecessary unless the string
10170a9064fbSMasahiro Yamada   contains an apostrophe, a comma, or backslash (other than
10180a9064fbSMasahiro Yamada   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
10190a9064fbSMasahiro Yamada   null, do not copy; instead, return the length of what the result
10200a9064fbSMasahiro Yamada   would have been.  */
10210a9064fbSMasahiro Yamadastatic YYSIZE_T
10220a9064fbSMasahiro Yamadayytnamerr (char *yyres, const char *yystr)
10230a9064fbSMasahiro Yamada{
10240a9064fbSMasahiro Yamada  if (*yystr == '"')
10250a9064fbSMasahiro Yamada    {
10260a9064fbSMasahiro Yamada      YYSIZE_T yyn = 0;
10270a9064fbSMasahiro Yamada      char const *yyp = yystr;
10280a9064fbSMasahiro Yamada
10290a9064fbSMasahiro Yamada      for (;;)
10300a9064fbSMasahiro Yamada        switch (*++yyp)
10310a9064fbSMasahiro Yamada          {
10320a9064fbSMasahiro Yamada          case '\'':
10330a9064fbSMasahiro Yamada          case ',':
10340a9064fbSMasahiro Yamada            goto do_not_strip_quotes;
10350a9064fbSMasahiro Yamada
10360a9064fbSMasahiro Yamada          case '\\':
10370a9064fbSMasahiro Yamada            if (*++yyp != '\\')
10380a9064fbSMasahiro Yamada              goto do_not_strip_quotes;
10390a9064fbSMasahiro Yamada            /* Fall through.  */
10400a9064fbSMasahiro Yamada          default:
10410a9064fbSMasahiro Yamada            if (yyres)
10420a9064fbSMasahiro Yamada              yyres[yyn] = *yyp;
10430a9064fbSMasahiro Yamada            yyn++;
10440a9064fbSMasahiro Yamada            break;
10450a9064fbSMasahiro Yamada
10460a9064fbSMasahiro Yamada          case '"':
10470a9064fbSMasahiro Yamada            if (yyres)
10480a9064fbSMasahiro Yamada              yyres[yyn] = '\0';
10490a9064fbSMasahiro Yamada            return yyn;
10500a9064fbSMasahiro Yamada          }
10510a9064fbSMasahiro Yamada    do_not_strip_quotes: ;
10520a9064fbSMasahiro Yamada    }
10530a9064fbSMasahiro Yamada
10540a9064fbSMasahiro Yamada  if (! yyres)
10550a9064fbSMasahiro Yamada    return yystrlen (yystr);
10560a9064fbSMasahiro Yamada
10570a9064fbSMasahiro Yamada  return yystpcpy (yyres, yystr) - yyres;
10580a9064fbSMasahiro Yamada}
10590a9064fbSMasahiro Yamada# endif
10600a9064fbSMasahiro Yamada
10610a9064fbSMasahiro Yamada/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
10620a9064fbSMasahiro Yamada   about the unexpected token YYTOKEN for the state stack whose top is
10630a9064fbSMasahiro Yamada   YYSSP.
10640a9064fbSMasahiro Yamada
10650a9064fbSMasahiro Yamada   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
10660a9064fbSMasahiro Yamada   not large enough to hold the message.  In that case, also set
10670a9064fbSMasahiro Yamada   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
10680a9064fbSMasahiro Yamada   required number of bytes is too large to store.  */
10690a9064fbSMasahiro Yamadastatic int
10700a9064fbSMasahiro Yamadayysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
10710a9064fbSMasahiro Yamada                yytype_int16 *yyssp, int yytoken)
10720a9064fbSMasahiro Yamada{
1073*bf7ab1e7SMasahiro Yamada  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
10740a9064fbSMasahiro Yamada  YYSIZE_T yysize = yysize0;
10750a9064fbSMasahiro Yamada  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
10760a9064fbSMasahiro Yamada  /* Internationalized format string. */
1077*bf7ab1e7SMasahiro Yamada  const char *yyformat = YY_NULLPTR;
10780a9064fbSMasahiro Yamada  /* Arguments of yyformat. */
10790a9064fbSMasahiro Yamada  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
10800a9064fbSMasahiro Yamada  /* Number of reported tokens (one for the "unexpected", one per
10810a9064fbSMasahiro Yamada     "expected"). */
10820a9064fbSMasahiro Yamada  int yycount = 0;
10830a9064fbSMasahiro Yamada
10840a9064fbSMasahiro Yamada  /* There are many possibilities here to consider:
10850a9064fbSMasahiro Yamada     - If this state is a consistent state with a default action, then
10860a9064fbSMasahiro Yamada       the only way this function was invoked is if the default action
10870a9064fbSMasahiro Yamada       is an error action.  In that case, don't check for expected
10880a9064fbSMasahiro Yamada       tokens because there are none.
10890a9064fbSMasahiro Yamada     - The only way there can be no lookahead present (in yychar) is if
10900a9064fbSMasahiro Yamada       this state is a consistent state with a default action.  Thus,
10910a9064fbSMasahiro Yamada       detecting the absence of a lookahead is sufficient to determine
10920a9064fbSMasahiro Yamada       that there is no unexpected or expected token to report.  In that
10930a9064fbSMasahiro Yamada       case, just report a simple "syntax error".
10940a9064fbSMasahiro Yamada     - Don't assume there isn't a lookahead just because this state is a
10950a9064fbSMasahiro Yamada       consistent state with a default action.  There might have been a
10960a9064fbSMasahiro Yamada       previous inconsistent state, consistent state with a non-default
10970a9064fbSMasahiro Yamada       action, or user semantic action that manipulated yychar.
10980a9064fbSMasahiro Yamada     - Of course, the expected token list depends on states to have
10990a9064fbSMasahiro Yamada       correct lookahead information, and it depends on the parser not
11000a9064fbSMasahiro Yamada       to perform extra reductions after fetching a lookahead from the
11010a9064fbSMasahiro Yamada       scanner and before detecting a syntax error.  Thus, state merging
11020a9064fbSMasahiro Yamada       (from LALR or IELR) and default reductions corrupt the expected
11030a9064fbSMasahiro Yamada       token list.  However, the list is correct for canonical LR with
11040a9064fbSMasahiro Yamada       one exception: it will still contain any token that will not be
11050a9064fbSMasahiro Yamada       accepted due to an error action in a later state.
11060a9064fbSMasahiro Yamada  */
11070a9064fbSMasahiro Yamada  if (yytoken != YYEMPTY)
11080a9064fbSMasahiro Yamada    {
11090a9064fbSMasahiro Yamada      int yyn = yypact[*yyssp];
11100a9064fbSMasahiro Yamada      yyarg[yycount++] = yytname[yytoken];
11110a9064fbSMasahiro Yamada      if (!yypact_value_is_default (yyn))
11120a9064fbSMasahiro Yamada        {
11130a9064fbSMasahiro Yamada          /* Start YYX at -YYN if negative to avoid negative indexes in
11140a9064fbSMasahiro Yamada             YYCHECK.  In other words, skip the first -YYN actions for
11150a9064fbSMasahiro Yamada             this state because they are default actions.  */
11160a9064fbSMasahiro Yamada          int yyxbegin = yyn < 0 ? -yyn : 0;
11170a9064fbSMasahiro Yamada          /* Stay within bounds of both yycheck and yytname.  */
11180a9064fbSMasahiro Yamada          int yychecklim = YYLAST - yyn + 1;
11190a9064fbSMasahiro Yamada          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
11200a9064fbSMasahiro Yamada          int yyx;
11210a9064fbSMasahiro Yamada
11220a9064fbSMasahiro Yamada          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
11230a9064fbSMasahiro Yamada            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
11240a9064fbSMasahiro Yamada                && !yytable_value_is_error (yytable[yyx + yyn]))
11250a9064fbSMasahiro Yamada              {
11260a9064fbSMasahiro Yamada                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
11270a9064fbSMasahiro Yamada                  {
11280a9064fbSMasahiro Yamada                    yycount = 1;
11290a9064fbSMasahiro Yamada                    yysize = yysize0;
11300a9064fbSMasahiro Yamada                    break;
11310a9064fbSMasahiro Yamada                  }
11320a9064fbSMasahiro Yamada                yyarg[yycount++] = yytname[yyx];
1133*bf7ab1e7SMasahiro Yamada                {
1134*bf7ab1e7SMasahiro Yamada                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
11350a9064fbSMasahiro Yamada                  if (! (yysize <= yysize1
11360a9064fbSMasahiro Yamada                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
11370a9064fbSMasahiro Yamada                    return 2;
11380a9064fbSMasahiro Yamada                  yysize = yysize1;
11390a9064fbSMasahiro Yamada                }
11400a9064fbSMasahiro Yamada              }
11410a9064fbSMasahiro Yamada        }
1142*bf7ab1e7SMasahiro Yamada    }
11430a9064fbSMasahiro Yamada
11440a9064fbSMasahiro Yamada  switch (yycount)
11450a9064fbSMasahiro Yamada    {
11460a9064fbSMasahiro Yamada# define YYCASE_(N, S)                      \
11470a9064fbSMasahiro Yamada      case N:                               \
11480a9064fbSMasahiro Yamada        yyformat = S;                       \
11490a9064fbSMasahiro Yamada      break
11500a9064fbSMasahiro Yamada      YYCASE_(0, YY_("syntax error"));
11510a9064fbSMasahiro Yamada      YYCASE_(1, YY_("syntax error, unexpected %s"));
11520a9064fbSMasahiro Yamada      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
11530a9064fbSMasahiro Yamada      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
11540a9064fbSMasahiro Yamada      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
11550a9064fbSMasahiro Yamada      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
11560a9064fbSMasahiro Yamada# undef YYCASE_
11570a9064fbSMasahiro Yamada    }
11580a9064fbSMasahiro Yamada
1159*bf7ab1e7SMasahiro Yamada  {
1160*bf7ab1e7SMasahiro Yamada    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
11610a9064fbSMasahiro Yamada    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
11620a9064fbSMasahiro Yamada      return 2;
11630a9064fbSMasahiro Yamada    yysize = yysize1;
1164*bf7ab1e7SMasahiro Yamada  }
11650a9064fbSMasahiro Yamada
11660a9064fbSMasahiro Yamada  if (*yymsg_alloc < yysize)
11670a9064fbSMasahiro Yamada    {
11680a9064fbSMasahiro Yamada      *yymsg_alloc = 2 * yysize;
11690a9064fbSMasahiro Yamada      if (! (yysize <= *yymsg_alloc
11700a9064fbSMasahiro Yamada             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
11710a9064fbSMasahiro Yamada        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
11720a9064fbSMasahiro Yamada      return 1;
11730a9064fbSMasahiro Yamada    }
11740a9064fbSMasahiro Yamada
11750a9064fbSMasahiro Yamada  /* Avoid sprintf, as that infringes on the user's name space.
11760a9064fbSMasahiro Yamada     Don't have undefined behavior even if the translation
11770a9064fbSMasahiro Yamada     produced a string with the wrong number of "%s"s.  */
11780a9064fbSMasahiro Yamada  {
11790a9064fbSMasahiro Yamada    char *yyp = *yymsg;
11800a9064fbSMasahiro Yamada    int yyi = 0;
11810a9064fbSMasahiro Yamada    while ((*yyp = *yyformat) != '\0')
11820a9064fbSMasahiro Yamada      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
11830a9064fbSMasahiro Yamada        {
11840a9064fbSMasahiro Yamada          yyp += yytnamerr (yyp, yyarg[yyi++]);
11850a9064fbSMasahiro Yamada          yyformat += 2;
11860a9064fbSMasahiro Yamada        }
11870a9064fbSMasahiro Yamada      else
11880a9064fbSMasahiro Yamada        {
11890a9064fbSMasahiro Yamada          yyp++;
11900a9064fbSMasahiro Yamada          yyformat++;
11910a9064fbSMasahiro Yamada        }
11920a9064fbSMasahiro Yamada  }
11930a9064fbSMasahiro Yamada  return 0;
11940a9064fbSMasahiro Yamada}
11950a9064fbSMasahiro Yamada#endif /* YYERROR_VERBOSE */
11960a9064fbSMasahiro Yamada
11970a9064fbSMasahiro Yamada/*-----------------------------------------------.
11980a9064fbSMasahiro Yamada| Release the memory associated to this symbol.  |
11990a9064fbSMasahiro Yamada`-----------------------------------------------*/
12000a9064fbSMasahiro Yamada
12010a9064fbSMasahiro Yamadastatic void
12020a9064fbSMasahiro Yamadayydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
12030a9064fbSMasahiro Yamada{
12040a9064fbSMasahiro Yamada  YYUSE (yyvaluep);
12050a9064fbSMasahiro Yamada  if (!yymsg)
12060a9064fbSMasahiro Yamada    yymsg = "Deleting";
12070a9064fbSMasahiro Yamada  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
12080a9064fbSMasahiro Yamada
1209*bf7ab1e7SMasahiro Yamada  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
12100a9064fbSMasahiro Yamada  switch (yytype)
12110a9064fbSMasahiro Yamada    {
1212*bf7ab1e7SMasahiro Yamada          case 58: /* choice_entry  */
12130a9064fbSMasahiro Yamada
12140a9064fbSMasahiro Yamada      {
12150a9064fbSMasahiro Yamada	fprintf(stderr, "%s:%d: missing end statement for this entry\n",
1216*bf7ab1e7SMasahiro Yamada		((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno);
1217*bf7ab1e7SMasahiro Yamada	if (current_menu == ((*yyvaluep).menu))
12180a9064fbSMasahiro Yamada		menu_end_menu();
1219*bf7ab1e7SMasahiro Yamada}
12200a9064fbSMasahiro Yamada
12210a9064fbSMasahiro Yamada        break;
1222*bf7ab1e7SMasahiro Yamada
1223*bf7ab1e7SMasahiro Yamada    case 64: /* if_entry  */
12240a9064fbSMasahiro Yamada
12250a9064fbSMasahiro Yamada      {
12260a9064fbSMasahiro Yamada	fprintf(stderr, "%s:%d: missing end statement for this entry\n",
1227*bf7ab1e7SMasahiro Yamada		((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno);
1228*bf7ab1e7SMasahiro Yamada	if (current_menu == ((*yyvaluep).menu))
12290a9064fbSMasahiro Yamada		menu_end_menu();
1230*bf7ab1e7SMasahiro Yamada}
12310a9064fbSMasahiro Yamada
12320a9064fbSMasahiro Yamada        break;
1233*bf7ab1e7SMasahiro Yamada
1234*bf7ab1e7SMasahiro Yamada    case 70: /* menu_entry  */
12350a9064fbSMasahiro Yamada
12360a9064fbSMasahiro Yamada      {
12370a9064fbSMasahiro Yamada	fprintf(stderr, "%s:%d: missing end statement for this entry\n",
1238*bf7ab1e7SMasahiro Yamada		((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno);
1239*bf7ab1e7SMasahiro Yamada	if (current_menu == ((*yyvaluep).menu))
12400a9064fbSMasahiro Yamada		menu_end_menu();
1241*bf7ab1e7SMasahiro Yamada}
12420a9064fbSMasahiro Yamada
12430a9064fbSMasahiro Yamada        break;
12440a9064fbSMasahiro Yamada
1245*bf7ab1e7SMasahiro Yamada
12460a9064fbSMasahiro Yamada      default:
12470a9064fbSMasahiro Yamada        break;
12480a9064fbSMasahiro Yamada    }
1249*bf7ab1e7SMasahiro Yamada  YY_IGNORE_MAYBE_UNINITIALIZED_END
12500a9064fbSMasahiro Yamada}
12510a9064fbSMasahiro Yamada
12520a9064fbSMasahiro Yamada
12530a9064fbSMasahiro Yamada
12540a9064fbSMasahiro Yamada
12550a9064fbSMasahiro Yamada/* The lookahead symbol.  */
12560a9064fbSMasahiro Yamadaint yychar;
12570a9064fbSMasahiro Yamada
12580a9064fbSMasahiro Yamada/* The semantic value of the lookahead symbol.  */
12590a9064fbSMasahiro YamadaYYSTYPE yylval;
12600a9064fbSMasahiro Yamada/* Number of syntax errors so far.  */
12610a9064fbSMasahiro Yamadaint yynerrs;
12620a9064fbSMasahiro Yamada
12630a9064fbSMasahiro Yamada
12640a9064fbSMasahiro Yamada/*----------.
12650a9064fbSMasahiro Yamada| yyparse.  |
12660a9064fbSMasahiro Yamada`----------*/
12670a9064fbSMasahiro Yamada
12680a9064fbSMasahiro Yamadaint
12690a9064fbSMasahiro Yamadayyparse (void)
12700a9064fbSMasahiro Yamada{
12710a9064fbSMasahiro Yamada    int yystate;
12720a9064fbSMasahiro Yamada    /* Number of tokens to shift before error messages enabled.  */
12730a9064fbSMasahiro Yamada    int yyerrstatus;
12740a9064fbSMasahiro Yamada
12750a9064fbSMasahiro Yamada    /* The stacks and their tools:
1276*bf7ab1e7SMasahiro Yamada       'yyss': related to states.
1277*bf7ab1e7SMasahiro Yamada       'yyvs': related to semantic values.
12780a9064fbSMasahiro Yamada
1279*bf7ab1e7SMasahiro Yamada       Refer to the stacks through separate pointers, to allow yyoverflow
12800a9064fbSMasahiro Yamada       to reallocate them elsewhere.  */
12810a9064fbSMasahiro Yamada
12820a9064fbSMasahiro Yamada    /* The state stack.  */
12830a9064fbSMasahiro Yamada    yytype_int16 yyssa[YYINITDEPTH];
12840a9064fbSMasahiro Yamada    yytype_int16 *yyss;
12850a9064fbSMasahiro Yamada    yytype_int16 *yyssp;
12860a9064fbSMasahiro Yamada
12870a9064fbSMasahiro Yamada    /* The semantic value stack.  */
12880a9064fbSMasahiro Yamada    YYSTYPE yyvsa[YYINITDEPTH];
12890a9064fbSMasahiro Yamada    YYSTYPE *yyvs;
12900a9064fbSMasahiro Yamada    YYSTYPE *yyvsp;
12910a9064fbSMasahiro Yamada
12920a9064fbSMasahiro Yamada    YYSIZE_T yystacksize;
12930a9064fbSMasahiro Yamada
12940a9064fbSMasahiro Yamada  int yyn;
12950a9064fbSMasahiro Yamada  int yyresult;
12960a9064fbSMasahiro Yamada  /* Lookahead token as an internal (translated) token number.  */
1297*bf7ab1e7SMasahiro Yamada  int yytoken = 0;
12980a9064fbSMasahiro Yamada  /* The variables used to return semantic value and location from the
12990a9064fbSMasahiro Yamada     action routines.  */
13000a9064fbSMasahiro Yamada  YYSTYPE yyval;
13010a9064fbSMasahiro Yamada
13020a9064fbSMasahiro Yamada#if YYERROR_VERBOSE
13030a9064fbSMasahiro Yamada  /* Buffer for error messages, and its allocated size.  */
13040a9064fbSMasahiro Yamada  char yymsgbuf[128];
13050a9064fbSMasahiro Yamada  char *yymsg = yymsgbuf;
13060a9064fbSMasahiro Yamada  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
13070a9064fbSMasahiro Yamada#endif
13080a9064fbSMasahiro Yamada
13090a9064fbSMasahiro Yamada#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
13100a9064fbSMasahiro Yamada
13110a9064fbSMasahiro Yamada  /* The number of symbols on the RHS of the reduced rule.
13120a9064fbSMasahiro Yamada     Keep to zero when no symbol should be popped.  */
13130a9064fbSMasahiro Yamada  int yylen = 0;
13140a9064fbSMasahiro Yamada
1315*bf7ab1e7SMasahiro Yamada  yyssp = yyss = yyssa;
1316*bf7ab1e7SMasahiro Yamada  yyvsp = yyvs = yyvsa;
13170a9064fbSMasahiro Yamada  yystacksize = YYINITDEPTH;
13180a9064fbSMasahiro Yamada
13190a9064fbSMasahiro Yamada  YYDPRINTF ((stderr, "Starting parse\n"));
13200a9064fbSMasahiro Yamada
13210a9064fbSMasahiro Yamada  yystate = 0;
13220a9064fbSMasahiro Yamada  yyerrstatus = 0;
13230a9064fbSMasahiro Yamada  yynerrs = 0;
13240a9064fbSMasahiro Yamada  yychar = YYEMPTY; /* Cause a token to be read.  */
13250a9064fbSMasahiro Yamada  goto yysetstate;
13260a9064fbSMasahiro Yamada
13270a9064fbSMasahiro Yamada/*------------------------------------------------------------.
13280a9064fbSMasahiro Yamada| yynewstate -- Push a new state, which is found in yystate.  |
13290a9064fbSMasahiro Yamada`------------------------------------------------------------*/
13300a9064fbSMasahiro Yamada yynewstate:
13310a9064fbSMasahiro Yamada  /* In all cases, when you get here, the value and location stacks
13320a9064fbSMasahiro Yamada     have just been pushed.  So pushing a state here evens the stacks.  */
13330a9064fbSMasahiro Yamada  yyssp++;
13340a9064fbSMasahiro Yamada
13350a9064fbSMasahiro Yamada yysetstate:
13360a9064fbSMasahiro Yamada  *yyssp = yystate;
13370a9064fbSMasahiro Yamada
13380a9064fbSMasahiro Yamada  if (yyss + yystacksize - 1 <= yyssp)
13390a9064fbSMasahiro Yamada    {
13400a9064fbSMasahiro Yamada      /* Get the current used size of the three stacks, in elements.  */
13410a9064fbSMasahiro Yamada      YYSIZE_T yysize = yyssp - yyss + 1;
13420a9064fbSMasahiro Yamada
13430a9064fbSMasahiro Yamada#ifdef yyoverflow
13440a9064fbSMasahiro Yamada      {
13450a9064fbSMasahiro Yamada        /* Give user a chance to reallocate the stack.  Use copies of
13460a9064fbSMasahiro Yamada           these so that the &'s don't force the real ones into
13470a9064fbSMasahiro Yamada           memory.  */
13480a9064fbSMasahiro Yamada        YYSTYPE *yyvs1 = yyvs;
13490a9064fbSMasahiro Yamada        yytype_int16 *yyss1 = yyss;
13500a9064fbSMasahiro Yamada
13510a9064fbSMasahiro Yamada        /* Each stack pointer address is followed by the size of the
13520a9064fbSMasahiro Yamada           data in use in that stack, in bytes.  This used to be a
13530a9064fbSMasahiro Yamada           conditional around just the two extra args, but that might
13540a9064fbSMasahiro Yamada           be undefined if yyoverflow is a macro.  */
13550a9064fbSMasahiro Yamada        yyoverflow (YY_("memory exhausted"),
13560a9064fbSMasahiro Yamada                    &yyss1, yysize * sizeof (*yyssp),
13570a9064fbSMasahiro Yamada                    &yyvs1, yysize * sizeof (*yyvsp),
13580a9064fbSMasahiro Yamada                    &yystacksize);
13590a9064fbSMasahiro Yamada
13600a9064fbSMasahiro Yamada        yyss = yyss1;
13610a9064fbSMasahiro Yamada        yyvs = yyvs1;
13620a9064fbSMasahiro Yamada      }
13630a9064fbSMasahiro Yamada#else /* no yyoverflow */
13640a9064fbSMasahiro Yamada# ifndef YYSTACK_RELOCATE
13650a9064fbSMasahiro Yamada      goto yyexhaustedlab;
13660a9064fbSMasahiro Yamada# else
13670a9064fbSMasahiro Yamada      /* Extend the stack our own way.  */
13680a9064fbSMasahiro Yamada      if (YYMAXDEPTH <= yystacksize)
13690a9064fbSMasahiro Yamada        goto yyexhaustedlab;
13700a9064fbSMasahiro Yamada      yystacksize *= 2;
13710a9064fbSMasahiro Yamada      if (YYMAXDEPTH < yystacksize)
13720a9064fbSMasahiro Yamada        yystacksize = YYMAXDEPTH;
13730a9064fbSMasahiro Yamada
13740a9064fbSMasahiro Yamada      {
13750a9064fbSMasahiro Yamada        yytype_int16 *yyss1 = yyss;
13760a9064fbSMasahiro Yamada        union yyalloc *yyptr =
13770a9064fbSMasahiro Yamada          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
13780a9064fbSMasahiro Yamada        if (! yyptr)
13790a9064fbSMasahiro Yamada          goto yyexhaustedlab;
13800a9064fbSMasahiro Yamada        YYSTACK_RELOCATE (yyss_alloc, yyss);
13810a9064fbSMasahiro Yamada        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
13820a9064fbSMasahiro Yamada#  undef YYSTACK_RELOCATE
13830a9064fbSMasahiro Yamada        if (yyss1 != yyssa)
13840a9064fbSMasahiro Yamada          YYSTACK_FREE (yyss1);
13850a9064fbSMasahiro Yamada      }
13860a9064fbSMasahiro Yamada# endif
13870a9064fbSMasahiro Yamada#endif /* no yyoverflow */
13880a9064fbSMasahiro Yamada
13890a9064fbSMasahiro Yamada      yyssp = yyss + yysize - 1;
13900a9064fbSMasahiro Yamada      yyvsp = yyvs + yysize - 1;
13910a9064fbSMasahiro Yamada
13920a9064fbSMasahiro Yamada      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
13930a9064fbSMasahiro Yamada                  (unsigned long int) yystacksize));
13940a9064fbSMasahiro Yamada
13950a9064fbSMasahiro Yamada      if (yyss + yystacksize - 1 <= yyssp)
13960a9064fbSMasahiro Yamada        YYABORT;
13970a9064fbSMasahiro Yamada    }
13980a9064fbSMasahiro Yamada
13990a9064fbSMasahiro Yamada  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
14000a9064fbSMasahiro Yamada
14010a9064fbSMasahiro Yamada  if (yystate == YYFINAL)
14020a9064fbSMasahiro Yamada    YYACCEPT;
14030a9064fbSMasahiro Yamada
14040a9064fbSMasahiro Yamada  goto yybackup;
14050a9064fbSMasahiro Yamada
14060a9064fbSMasahiro Yamada/*-----------.
14070a9064fbSMasahiro Yamada| yybackup.  |
14080a9064fbSMasahiro Yamada`-----------*/
14090a9064fbSMasahiro Yamadayybackup:
14100a9064fbSMasahiro Yamada
14110a9064fbSMasahiro Yamada  /* Do appropriate processing given the current state.  Read a
14120a9064fbSMasahiro Yamada     lookahead token if we need one and don't already have one.  */
14130a9064fbSMasahiro Yamada
14140a9064fbSMasahiro Yamada  /* First try to decide what to do without reference to lookahead token.  */
14150a9064fbSMasahiro Yamada  yyn = yypact[yystate];
14160a9064fbSMasahiro Yamada  if (yypact_value_is_default (yyn))
14170a9064fbSMasahiro Yamada    goto yydefault;
14180a9064fbSMasahiro Yamada
14190a9064fbSMasahiro Yamada  /* Not known => get a lookahead token if don't already have one.  */
14200a9064fbSMasahiro Yamada
14210a9064fbSMasahiro Yamada  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
14220a9064fbSMasahiro Yamada  if (yychar == YYEMPTY)
14230a9064fbSMasahiro Yamada    {
14240a9064fbSMasahiro Yamada      YYDPRINTF ((stderr, "Reading a token: "));
1425*bf7ab1e7SMasahiro Yamada      yychar = yylex ();
14260a9064fbSMasahiro Yamada    }
14270a9064fbSMasahiro Yamada
14280a9064fbSMasahiro Yamada  if (yychar <= YYEOF)
14290a9064fbSMasahiro Yamada    {
14300a9064fbSMasahiro Yamada      yychar = yytoken = YYEOF;
14310a9064fbSMasahiro Yamada      YYDPRINTF ((stderr, "Now at end of input.\n"));
14320a9064fbSMasahiro Yamada    }
14330a9064fbSMasahiro Yamada  else
14340a9064fbSMasahiro Yamada    {
14350a9064fbSMasahiro Yamada      yytoken = YYTRANSLATE (yychar);
14360a9064fbSMasahiro Yamada      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
14370a9064fbSMasahiro Yamada    }
14380a9064fbSMasahiro Yamada
14390a9064fbSMasahiro Yamada  /* If the proper action on seeing token YYTOKEN is to reduce or to
14400a9064fbSMasahiro Yamada     detect an error, take that action.  */
14410a9064fbSMasahiro Yamada  yyn += yytoken;
14420a9064fbSMasahiro Yamada  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
14430a9064fbSMasahiro Yamada    goto yydefault;
14440a9064fbSMasahiro Yamada  yyn = yytable[yyn];
14450a9064fbSMasahiro Yamada  if (yyn <= 0)
14460a9064fbSMasahiro Yamada    {
14470a9064fbSMasahiro Yamada      if (yytable_value_is_error (yyn))
14480a9064fbSMasahiro Yamada        goto yyerrlab;
14490a9064fbSMasahiro Yamada      yyn = -yyn;
14500a9064fbSMasahiro Yamada      goto yyreduce;
14510a9064fbSMasahiro Yamada    }
14520a9064fbSMasahiro Yamada
14530a9064fbSMasahiro Yamada  /* Count tokens shifted since error; after three, turn off error
14540a9064fbSMasahiro Yamada     status.  */
14550a9064fbSMasahiro Yamada  if (yyerrstatus)
14560a9064fbSMasahiro Yamada    yyerrstatus--;
14570a9064fbSMasahiro Yamada
14580a9064fbSMasahiro Yamada  /* Shift the lookahead token.  */
14590a9064fbSMasahiro Yamada  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
14600a9064fbSMasahiro Yamada
14610a9064fbSMasahiro Yamada  /* Discard the shifted token.  */
14620a9064fbSMasahiro Yamada  yychar = YYEMPTY;
14630a9064fbSMasahiro Yamada
14640a9064fbSMasahiro Yamada  yystate = yyn;
1465*bf7ab1e7SMasahiro Yamada  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
14660a9064fbSMasahiro Yamada  *++yyvsp = yylval;
1467*bf7ab1e7SMasahiro Yamada  YY_IGNORE_MAYBE_UNINITIALIZED_END
14680a9064fbSMasahiro Yamada
14690a9064fbSMasahiro Yamada  goto yynewstate;
14700a9064fbSMasahiro Yamada
14710a9064fbSMasahiro Yamada
14720a9064fbSMasahiro Yamada/*-----------------------------------------------------------.
14730a9064fbSMasahiro Yamada| yydefault -- do the default action for the current state.  |
14740a9064fbSMasahiro Yamada`-----------------------------------------------------------*/
14750a9064fbSMasahiro Yamadayydefault:
14760a9064fbSMasahiro Yamada  yyn = yydefact[yystate];
14770a9064fbSMasahiro Yamada  if (yyn == 0)
14780a9064fbSMasahiro Yamada    goto yyerrlab;
14790a9064fbSMasahiro Yamada  goto yyreduce;
14800a9064fbSMasahiro Yamada
14810a9064fbSMasahiro Yamada
14820a9064fbSMasahiro Yamada/*-----------------------------.
14830a9064fbSMasahiro Yamada| yyreduce -- Do a reduction.  |
14840a9064fbSMasahiro Yamada`-----------------------------*/
14850a9064fbSMasahiro Yamadayyreduce:
14860a9064fbSMasahiro Yamada  /* yyn is the number of a rule to reduce with.  */
14870a9064fbSMasahiro Yamada  yylen = yyr2[yyn];
14880a9064fbSMasahiro Yamada
14890a9064fbSMasahiro Yamada  /* If YYLEN is nonzero, implement the default value of the action:
1490*bf7ab1e7SMasahiro Yamada     '$$ = $1'.
14910a9064fbSMasahiro Yamada
14920a9064fbSMasahiro Yamada     Otherwise, the following line sets YYVAL to garbage.
14930a9064fbSMasahiro Yamada     This behavior is undocumented and Bison
14940a9064fbSMasahiro Yamada     users should not rely upon it.  Assigning to YYVAL
14950a9064fbSMasahiro Yamada     unconditionally makes the parser a bit smaller, and it avoids a
14960a9064fbSMasahiro Yamada     GCC warning that YYVAL may be used uninitialized.  */
14970a9064fbSMasahiro Yamada  yyval = yyvsp[1-yylen];
14980a9064fbSMasahiro Yamada
14990a9064fbSMasahiro Yamada
15000a9064fbSMasahiro Yamada  YY_REDUCE_PRINT (yyn);
15010a9064fbSMasahiro Yamada  switch (yyn)
15020a9064fbSMasahiro Yamada    {
15030a9064fbSMasahiro Yamada        case 10:
15040a9064fbSMasahiro Yamada
15050a9064fbSMasahiro Yamada    { zconf_error("unexpected end statement"); }
1506*bf7ab1e7SMasahiro Yamada
15070a9064fbSMasahiro Yamada    break;
15080a9064fbSMasahiro Yamada
15090a9064fbSMasahiro Yamada  case 11:
15100a9064fbSMasahiro Yamada
1511*bf7ab1e7SMasahiro Yamada    { zconf_error("unknown statement \"%s\"", (yyvsp[-2].string)); }
1512*bf7ab1e7SMasahiro Yamada
15130a9064fbSMasahiro Yamada    break;
15140a9064fbSMasahiro Yamada
15150a9064fbSMasahiro Yamada  case 12:
15160a9064fbSMasahiro Yamada
15170a9064fbSMasahiro Yamada    {
1518*bf7ab1e7SMasahiro Yamada	zconf_error("unexpected option \"%s\"", kconf_id_strings + (yyvsp[-2].id)->name);
15190a9064fbSMasahiro Yamada}
1520*bf7ab1e7SMasahiro Yamada
15210a9064fbSMasahiro Yamada    break;
15220a9064fbSMasahiro Yamada
15230a9064fbSMasahiro Yamada  case 13:
15240a9064fbSMasahiro Yamada
15250a9064fbSMasahiro Yamada    { zconf_error("invalid statement"); }
15260a9064fbSMasahiro Yamada
15270a9064fbSMasahiro Yamada    break;
15280a9064fbSMasahiro Yamada
15290a9064fbSMasahiro Yamada  case 29:
15300a9064fbSMasahiro Yamada
1531*bf7ab1e7SMasahiro Yamada    { zconf_error("unknown option \"%s\"", (yyvsp[-2].string)); }
1532*bf7ab1e7SMasahiro Yamada
15330a9064fbSMasahiro Yamada    break;
15340a9064fbSMasahiro Yamada
15350a9064fbSMasahiro Yamada  case 30:
15360a9064fbSMasahiro Yamada
1537*bf7ab1e7SMasahiro Yamada    { zconf_error("invalid option"); }
1538*bf7ab1e7SMasahiro Yamada
15390a9064fbSMasahiro Yamada    break;
15400a9064fbSMasahiro Yamada
15410a9064fbSMasahiro Yamada  case 31:
15420a9064fbSMasahiro Yamada
15430a9064fbSMasahiro Yamada    {
1544*bf7ab1e7SMasahiro Yamada	struct symbol *sym = sym_lookup((yyvsp[-1].string), 0);
1545*bf7ab1e7SMasahiro Yamada	sym->flags |= SYMBOL_OPTIONAL;
1546*bf7ab1e7SMasahiro Yamada	menu_add_entry(sym);
1547*bf7ab1e7SMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].string));
15480a9064fbSMasahiro Yamada}
1549*bf7ab1e7SMasahiro Yamada
15500a9064fbSMasahiro Yamada    break;
15510a9064fbSMasahiro Yamada
15520a9064fbSMasahiro Yamada  case 32:
15530a9064fbSMasahiro Yamada
15540a9064fbSMasahiro Yamada    {
1555*bf7ab1e7SMasahiro Yamada	menu_end_entry();
1556*bf7ab1e7SMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
15570a9064fbSMasahiro Yamada}
1558*bf7ab1e7SMasahiro Yamada
15590a9064fbSMasahiro Yamada    break;
15600a9064fbSMasahiro Yamada
15610a9064fbSMasahiro Yamada  case 33:
15620a9064fbSMasahiro Yamada
15630a9064fbSMasahiro Yamada    {
1564*bf7ab1e7SMasahiro Yamada	struct symbol *sym = sym_lookup((yyvsp[-1].string), 0);
1565*bf7ab1e7SMasahiro Yamada	sym->flags |= SYMBOL_OPTIONAL;
1566*bf7ab1e7SMasahiro Yamada	menu_add_entry(sym);
1567*bf7ab1e7SMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].string));
1568*bf7ab1e7SMasahiro Yamada}
1569*bf7ab1e7SMasahiro Yamada
1570*bf7ab1e7SMasahiro Yamada    break;
1571*bf7ab1e7SMasahiro Yamada
1572*bf7ab1e7SMasahiro Yamada  case 34:
1573*bf7ab1e7SMasahiro Yamada
1574*bf7ab1e7SMasahiro Yamada    {
15750a9064fbSMasahiro Yamada	if (current_entry->prompt)
15760a9064fbSMasahiro Yamada		current_entry->prompt->type = P_MENU;
15770a9064fbSMasahiro Yamada	else
15780a9064fbSMasahiro Yamada		zconfprint("warning: menuconfig statement without prompt");
15790a9064fbSMasahiro Yamada	menu_end_entry();
15800a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
15810a9064fbSMasahiro Yamada}
15820a9064fbSMasahiro Yamada
15830a9064fbSMasahiro Yamada    break;
15840a9064fbSMasahiro Yamada
15850a9064fbSMasahiro Yamada  case 42:
15860a9064fbSMasahiro Yamada
15870a9064fbSMasahiro Yamada    {
1588*bf7ab1e7SMasahiro Yamada	menu_set_type((yyvsp[-2].id)->stype);
1589*bf7ab1e7SMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
1590*bf7ab1e7SMasahiro Yamada		zconf_curname(), zconf_lineno(),
1591*bf7ab1e7SMasahiro Yamada		(yyvsp[-2].id)->stype);
15920a9064fbSMasahiro Yamada}
1593*bf7ab1e7SMasahiro Yamada
15940a9064fbSMasahiro Yamada    break;
15950a9064fbSMasahiro Yamada
15960a9064fbSMasahiro Yamada  case 43:
15970a9064fbSMasahiro Yamada
15980a9064fbSMasahiro Yamada    {
1599*bf7ab1e7SMasahiro Yamada	menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr));
1600*bf7ab1e7SMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
16010a9064fbSMasahiro Yamada}
1602*bf7ab1e7SMasahiro Yamada
16030a9064fbSMasahiro Yamada    break;
16040a9064fbSMasahiro Yamada
16050a9064fbSMasahiro Yamada  case 44:
16060a9064fbSMasahiro Yamada
16070a9064fbSMasahiro Yamada    {
1608*bf7ab1e7SMasahiro Yamada	menu_add_expr(P_DEFAULT, (yyvsp[-2].expr), (yyvsp[-1].expr));
1609*bf7ab1e7SMasahiro Yamada	if ((yyvsp[-3].id)->stype != S_UNKNOWN)
1610*bf7ab1e7SMasahiro Yamada		menu_set_type((yyvsp[-3].id)->stype);
1611*bf7ab1e7SMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:default(%u)\n",
1612*bf7ab1e7SMasahiro Yamada		zconf_curname(), zconf_lineno(),
1613*bf7ab1e7SMasahiro Yamada		(yyvsp[-3].id)->stype);
16140a9064fbSMasahiro Yamada}
1615*bf7ab1e7SMasahiro Yamada
16160a9064fbSMasahiro Yamada    break;
16170a9064fbSMasahiro Yamada
16180a9064fbSMasahiro Yamada  case 45:
16190a9064fbSMasahiro Yamada
16200a9064fbSMasahiro Yamada    {
1621*bf7ab1e7SMasahiro Yamada	menu_add_symbol(P_SELECT, sym_lookup((yyvsp[-2].string), 0), (yyvsp[-1].expr));
1622*bf7ab1e7SMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno());
16230a9064fbSMasahiro Yamada}
1624*bf7ab1e7SMasahiro Yamada
16250a9064fbSMasahiro Yamada    break;
16260a9064fbSMasahiro Yamada
1627*bf7ab1e7SMasahiro Yamada  case 46:
16280a9064fbSMasahiro Yamada
16290a9064fbSMasahiro Yamada    {
1630*bf7ab1e7SMasahiro Yamada	menu_add_symbol(P_IMPLY, sym_lookup((yyvsp[-2].string), 0), (yyvsp[-1].expr));
1631*bf7ab1e7SMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:imply\n", zconf_curname(), zconf_lineno());
16320a9064fbSMasahiro Yamada}
1633*bf7ab1e7SMasahiro Yamada
16340a9064fbSMasahiro Yamada    break;
16350a9064fbSMasahiro Yamada
1636*bf7ab1e7SMasahiro Yamada  case 47:
16370a9064fbSMasahiro Yamada
1638*bf7ab1e7SMasahiro Yamada    {
1639*bf7ab1e7SMasahiro Yamada	menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[-3].symbol), (yyvsp[-2].symbol)), (yyvsp[-1].expr));
1640*bf7ab1e7SMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
1641*bf7ab1e7SMasahiro Yamada}
1642*bf7ab1e7SMasahiro Yamada
16430a9064fbSMasahiro Yamada    break;
16440a9064fbSMasahiro Yamada
16450a9064fbSMasahiro Yamada  case 50:
16460a9064fbSMasahiro Yamada
1647*bf7ab1e7SMasahiro Yamada    {
1648*bf7ab1e7SMasahiro Yamada	const struct kconf_id *id = kconf_id_lookup((yyvsp[-1].string), strlen((yyvsp[-1].string)));
1649*bf7ab1e7SMasahiro Yamada	if (id && id->flags & TF_OPTION)
1650*bf7ab1e7SMasahiro Yamada		menu_add_option(id->token, (yyvsp[0].string));
1651*bf7ab1e7SMasahiro Yamada	else
1652*bf7ab1e7SMasahiro Yamada		zconfprint("warning: ignoring unknown option %s", (yyvsp[-1].string));
1653*bf7ab1e7SMasahiro Yamada	free((yyvsp[-1].string));
1654*bf7ab1e7SMasahiro Yamada}
1655*bf7ab1e7SMasahiro Yamada
16560a9064fbSMasahiro Yamada    break;
16570a9064fbSMasahiro Yamada
16580a9064fbSMasahiro Yamada  case 51:
16590a9064fbSMasahiro Yamada
1660*bf7ab1e7SMasahiro Yamada    { (yyval.string) = NULL; }
1661*bf7ab1e7SMasahiro Yamada
16620a9064fbSMasahiro Yamada    break;
16630a9064fbSMasahiro Yamada
16640a9064fbSMasahiro Yamada  case 52:
16650a9064fbSMasahiro Yamada
1666*bf7ab1e7SMasahiro Yamada    { (yyval.string) = (yyvsp[0].string); }
1667*bf7ab1e7SMasahiro Yamada
16680a9064fbSMasahiro Yamada    break;
16690a9064fbSMasahiro Yamada
16700a9064fbSMasahiro Yamada  case 53:
16710a9064fbSMasahiro Yamada
16720a9064fbSMasahiro Yamada    {
1673*bf7ab1e7SMasahiro Yamada	struct symbol *sym = sym_lookup((yyvsp[-1].string), SYMBOL_CHOICE);
1674*bf7ab1e7SMasahiro Yamada	sym->flags |= SYMBOL_AUTO;
1675*bf7ab1e7SMasahiro Yamada	menu_add_entry(sym);
1676*bf7ab1e7SMasahiro Yamada	menu_add_expr(P_CHOICE, NULL, NULL);
1677*bf7ab1e7SMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
1678*bf7ab1e7SMasahiro Yamada}
1679*bf7ab1e7SMasahiro Yamada
1680*bf7ab1e7SMasahiro Yamada    break;
1681*bf7ab1e7SMasahiro Yamada
1682*bf7ab1e7SMasahiro Yamada  case 54:
1683*bf7ab1e7SMasahiro Yamada
1684*bf7ab1e7SMasahiro Yamada    {
1685*bf7ab1e7SMasahiro Yamada	(yyval.menu) = menu_add_menu();
1686*bf7ab1e7SMasahiro Yamada}
1687*bf7ab1e7SMasahiro Yamada
1688*bf7ab1e7SMasahiro Yamada    break;
1689*bf7ab1e7SMasahiro Yamada
1690*bf7ab1e7SMasahiro Yamada  case 55:
1691*bf7ab1e7SMasahiro Yamada
1692*bf7ab1e7SMasahiro Yamada    {
1693*bf7ab1e7SMasahiro Yamada	if (zconf_endtoken((yyvsp[0].id), T_CHOICE, T_ENDCHOICE)) {
16940a9064fbSMasahiro Yamada		menu_end_menu();
16950a9064fbSMasahiro Yamada		printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno());
16960a9064fbSMasahiro Yamada	}
16970a9064fbSMasahiro Yamada}
16980a9064fbSMasahiro Yamada
16990a9064fbSMasahiro Yamada    break;
17000a9064fbSMasahiro Yamada
17010a9064fbSMasahiro Yamada  case 63:
17020a9064fbSMasahiro Yamada
17030a9064fbSMasahiro Yamada    {
1704*bf7ab1e7SMasahiro Yamada	menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr));
1705*bf7ab1e7SMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
17060a9064fbSMasahiro Yamada}
1707*bf7ab1e7SMasahiro Yamada
17080a9064fbSMasahiro Yamada    break;
17090a9064fbSMasahiro Yamada
17100a9064fbSMasahiro Yamada  case 64:
17110a9064fbSMasahiro Yamada
17120a9064fbSMasahiro Yamada    {
1713*bf7ab1e7SMasahiro Yamada	if ((yyvsp[-2].id)->stype == S_BOOLEAN || (yyvsp[-2].id)->stype == S_TRISTATE) {
1714*bf7ab1e7SMasahiro Yamada		menu_set_type((yyvsp[-2].id)->stype);
1715*bf7ab1e7SMasahiro Yamada		printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
1716*bf7ab1e7SMasahiro Yamada			zconf_curname(), zconf_lineno(),
1717*bf7ab1e7SMasahiro Yamada			(yyvsp[-2].id)->stype);
1718*bf7ab1e7SMasahiro Yamada	} else
1719*bf7ab1e7SMasahiro Yamada		YYERROR;
1720*bf7ab1e7SMasahiro Yamada}
1721*bf7ab1e7SMasahiro Yamada
1722*bf7ab1e7SMasahiro Yamada    break;
1723*bf7ab1e7SMasahiro Yamada
1724*bf7ab1e7SMasahiro Yamada  case 65:
1725*bf7ab1e7SMasahiro Yamada
1726*bf7ab1e7SMasahiro Yamada    {
1727*bf7ab1e7SMasahiro Yamada	current_entry->sym->flags |= SYMBOL_OPTIONAL;
1728*bf7ab1e7SMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
1729*bf7ab1e7SMasahiro Yamada}
1730*bf7ab1e7SMasahiro Yamada
1731*bf7ab1e7SMasahiro Yamada    break;
1732*bf7ab1e7SMasahiro Yamada
1733*bf7ab1e7SMasahiro Yamada  case 66:
1734*bf7ab1e7SMasahiro Yamada
1735*bf7ab1e7SMasahiro Yamada    {
1736*bf7ab1e7SMasahiro Yamada	if ((yyvsp[-3].id)->stype == S_UNKNOWN) {
1737*bf7ab1e7SMasahiro Yamada		menu_add_symbol(P_DEFAULT, sym_lookup((yyvsp[-2].string), 0), (yyvsp[-1].expr));
17380a9064fbSMasahiro Yamada		printd(DEBUG_PARSE, "%s:%d:default\n",
17390a9064fbSMasahiro Yamada			zconf_curname(), zconf_lineno());
17400a9064fbSMasahiro Yamada	} else
17410a9064fbSMasahiro Yamada		YYERROR;
17420a9064fbSMasahiro Yamada}
1743*bf7ab1e7SMasahiro Yamada
17440a9064fbSMasahiro Yamada    break;
17450a9064fbSMasahiro Yamada
1746*bf7ab1e7SMasahiro Yamada  case 69:
17470a9064fbSMasahiro Yamada
17480a9064fbSMasahiro Yamada    {
17490a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
17500a9064fbSMasahiro Yamada	menu_add_entry(NULL);
1751*bf7ab1e7SMasahiro Yamada	menu_add_dep((yyvsp[-1].expr));
17520a9064fbSMasahiro Yamada	(yyval.menu) = menu_add_menu();
17530a9064fbSMasahiro Yamada}
1754*bf7ab1e7SMasahiro Yamada
17550a9064fbSMasahiro Yamada    break;
17560a9064fbSMasahiro Yamada
1757*bf7ab1e7SMasahiro Yamada  case 70:
17580a9064fbSMasahiro Yamada
17590a9064fbSMasahiro Yamada    {
1760*bf7ab1e7SMasahiro Yamada	if (zconf_endtoken((yyvsp[0].id), T_IF, T_ENDIF)) {
17610a9064fbSMasahiro Yamada		menu_end_menu();
17620a9064fbSMasahiro Yamada		printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno());
17630a9064fbSMasahiro Yamada	}
17640a9064fbSMasahiro Yamada}
17650a9064fbSMasahiro Yamada
17660a9064fbSMasahiro Yamada    break;
17670a9064fbSMasahiro Yamada
17680a9064fbSMasahiro Yamada  case 76:
17690a9064fbSMasahiro Yamada
17700a9064fbSMasahiro Yamada    {
1771*bf7ab1e7SMasahiro Yamada	menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL);
17720a9064fbSMasahiro Yamada}
1773*bf7ab1e7SMasahiro Yamada
17740a9064fbSMasahiro Yamada    break;
17750a9064fbSMasahiro Yamada
17760a9064fbSMasahiro Yamada  case 77:
17770a9064fbSMasahiro Yamada
17780a9064fbSMasahiro Yamada    {
1779*bf7ab1e7SMasahiro Yamada	menu_add_entry(NULL);
1780*bf7ab1e7SMasahiro Yamada	menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL);
1781*bf7ab1e7SMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
1782*bf7ab1e7SMasahiro Yamada}
1783*bf7ab1e7SMasahiro Yamada
1784*bf7ab1e7SMasahiro Yamada    break;
1785*bf7ab1e7SMasahiro Yamada
1786*bf7ab1e7SMasahiro Yamada  case 78:
1787*bf7ab1e7SMasahiro Yamada
1788*bf7ab1e7SMasahiro Yamada    {
1789*bf7ab1e7SMasahiro Yamada	(yyval.menu) = menu_add_menu();
1790*bf7ab1e7SMasahiro Yamada}
1791*bf7ab1e7SMasahiro Yamada
1792*bf7ab1e7SMasahiro Yamada    break;
1793*bf7ab1e7SMasahiro Yamada
1794*bf7ab1e7SMasahiro Yamada  case 79:
1795*bf7ab1e7SMasahiro Yamada
1796*bf7ab1e7SMasahiro Yamada    {
1797*bf7ab1e7SMasahiro Yamada	if (zconf_endtoken((yyvsp[0].id), T_MENU, T_ENDMENU)) {
17980a9064fbSMasahiro Yamada		menu_end_menu();
17990a9064fbSMasahiro Yamada		printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno());
18000a9064fbSMasahiro Yamada	}
18010a9064fbSMasahiro Yamada}
18020a9064fbSMasahiro Yamada
18030a9064fbSMasahiro Yamada    break;
18040a9064fbSMasahiro Yamada
18050a9064fbSMasahiro Yamada  case 85:
18060a9064fbSMasahiro Yamada
18070a9064fbSMasahiro Yamada    {
1808*bf7ab1e7SMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].string));
1809*bf7ab1e7SMasahiro Yamada	zconf_nextfile((yyvsp[-1].string));
18100a9064fbSMasahiro Yamada}
1811*bf7ab1e7SMasahiro Yamada
18120a9064fbSMasahiro Yamada    break;
18130a9064fbSMasahiro Yamada
18140a9064fbSMasahiro Yamada  case 86:
18150a9064fbSMasahiro Yamada
18160a9064fbSMasahiro Yamada    {
1817*bf7ab1e7SMasahiro Yamada	menu_add_entry(NULL);
1818*bf7ab1e7SMasahiro Yamada	menu_add_prompt(P_COMMENT, (yyvsp[-1].string), NULL);
1819*bf7ab1e7SMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());
18200a9064fbSMasahiro Yamada}
1821*bf7ab1e7SMasahiro Yamada
18220a9064fbSMasahiro Yamada    break;
18230a9064fbSMasahiro Yamada
18240a9064fbSMasahiro Yamada  case 87:
18250a9064fbSMasahiro Yamada
18260a9064fbSMasahiro Yamada    {
1827*bf7ab1e7SMasahiro Yamada	menu_end_entry();
18280a9064fbSMasahiro Yamada}
1829*bf7ab1e7SMasahiro Yamada
18300a9064fbSMasahiro Yamada    break;
18310a9064fbSMasahiro Yamada
1832*bf7ab1e7SMasahiro Yamada  case 88:
18330a9064fbSMasahiro Yamada
18340a9064fbSMasahiro Yamada    {
1835*bf7ab1e7SMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
1836*bf7ab1e7SMasahiro Yamada	zconf_starthelp();
1837*bf7ab1e7SMasahiro Yamada}
1838*bf7ab1e7SMasahiro Yamada
1839*bf7ab1e7SMasahiro Yamada    break;
1840*bf7ab1e7SMasahiro Yamada
1841*bf7ab1e7SMasahiro Yamada  case 89:
1842*bf7ab1e7SMasahiro Yamada
1843*bf7ab1e7SMasahiro Yamada    {
1844*bf7ab1e7SMasahiro Yamada	current_entry->help = (yyvsp[0].string);
1845*bf7ab1e7SMasahiro Yamada}
1846*bf7ab1e7SMasahiro Yamada
1847*bf7ab1e7SMasahiro Yamada    break;
1848*bf7ab1e7SMasahiro Yamada
1849*bf7ab1e7SMasahiro Yamada  case 94:
1850*bf7ab1e7SMasahiro Yamada
1851*bf7ab1e7SMasahiro Yamada    {
1852*bf7ab1e7SMasahiro Yamada	menu_add_dep((yyvsp[-1].expr));
18530a9064fbSMasahiro Yamada	printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
18540a9064fbSMasahiro Yamada}
18550a9064fbSMasahiro Yamada
18560a9064fbSMasahiro Yamada    break;
18570a9064fbSMasahiro Yamada
18580a9064fbSMasahiro Yamada  case 98:
18590a9064fbSMasahiro Yamada
18600a9064fbSMasahiro Yamada    {
1861*bf7ab1e7SMasahiro Yamada	menu_add_visibility((yyvsp[0].expr));
18620a9064fbSMasahiro Yamada}
1863*bf7ab1e7SMasahiro Yamada
18640a9064fbSMasahiro Yamada    break;
18650a9064fbSMasahiro Yamada
1866*bf7ab1e7SMasahiro Yamada  case 100:
18670a9064fbSMasahiro Yamada
1868*bf7ab1e7SMasahiro Yamada    {
1869*bf7ab1e7SMasahiro Yamada	menu_add_prompt(P_PROMPT, (yyvsp[-1].string), (yyvsp[0].expr));
1870*bf7ab1e7SMasahiro Yamada}
18710a9064fbSMasahiro Yamada
18720a9064fbSMasahiro Yamada    break;
18730a9064fbSMasahiro Yamada
18740a9064fbSMasahiro Yamada  case 103:
18750a9064fbSMasahiro Yamada
1876*bf7ab1e7SMasahiro Yamada    { (yyval.id) = (yyvsp[-1].id); }
1877*bf7ab1e7SMasahiro Yamada
18780a9064fbSMasahiro Yamada    break;
18790a9064fbSMasahiro Yamada
1880*bf7ab1e7SMasahiro Yamada  case 104:
18810a9064fbSMasahiro Yamada
1882*bf7ab1e7SMasahiro Yamada    { (yyval.id) = (yyvsp[-1].id); }
1883*bf7ab1e7SMasahiro Yamada
18840a9064fbSMasahiro Yamada    break;
18850a9064fbSMasahiro Yamada
1886*bf7ab1e7SMasahiro Yamada  case 105:
18870a9064fbSMasahiro Yamada
1888*bf7ab1e7SMasahiro Yamada    { (yyval.id) = (yyvsp[-1].id); }
1889*bf7ab1e7SMasahiro Yamada
18900a9064fbSMasahiro Yamada    break;
18910a9064fbSMasahiro Yamada
18920a9064fbSMasahiro Yamada  case 108:
18930a9064fbSMasahiro Yamada
1894*bf7ab1e7SMasahiro Yamada    { (yyval.expr) = NULL; }
1895*bf7ab1e7SMasahiro Yamada
18960a9064fbSMasahiro Yamada    break;
18970a9064fbSMasahiro Yamada
18980a9064fbSMasahiro Yamada  case 109:
18990a9064fbSMasahiro Yamada
1900*bf7ab1e7SMasahiro Yamada    { (yyval.expr) = (yyvsp[0].expr); }
1901*bf7ab1e7SMasahiro Yamada
19020a9064fbSMasahiro Yamada    break;
19030a9064fbSMasahiro Yamada
19040a9064fbSMasahiro Yamada  case 110:
19050a9064fbSMasahiro Yamada
1906*bf7ab1e7SMasahiro Yamada    { (yyval.expr) = expr_alloc_symbol((yyvsp[0].symbol)); }
1907*bf7ab1e7SMasahiro Yamada
19080a9064fbSMasahiro Yamada    break;
19090a9064fbSMasahiro Yamada
19100a9064fbSMasahiro Yamada  case 111:
19110a9064fbSMasahiro Yamada
1912*bf7ab1e7SMasahiro Yamada    { (yyval.expr) = expr_alloc_comp(E_LTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); }
1913*bf7ab1e7SMasahiro Yamada
19140a9064fbSMasahiro Yamada    break;
19150a9064fbSMasahiro Yamada
19160a9064fbSMasahiro Yamada  case 112:
19170a9064fbSMasahiro Yamada
1918*bf7ab1e7SMasahiro Yamada    { (yyval.expr) = expr_alloc_comp(E_LEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); }
1919*bf7ab1e7SMasahiro Yamada
19200a9064fbSMasahiro Yamada    break;
19210a9064fbSMasahiro Yamada
19220a9064fbSMasahiro Yamada  case 113:
19230a9064fbSMasahiro Yamada
1924*bf7ab1e7SMasahiro Yamada    { (yyval.expr) = expr_alloc_comp(E_GTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); }
1925*bf7ab1e7SMasahiro Yamada
19260a9064fbSMasahiro Yamada    break;
19270a9064fbSMasahiro Yamada
19280a9064fbSMasahiro Yamada  case 114:
19290a9064fbSMasahiro Yamada
1930*bf7ab1e7SMasahiro Yamada    { (yyval.expr) = expr_alloc_comp(E_GEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); }
1931*bf7ab1e7SMasahiro Yamada
19320a9064fbSMasahiro Yamada    break;
19330a9064fbSMasahiro Yamada
19340a9064fbSMasahiro Yamada  case 115:
19350a9064fbSMasahiro Yamada
1936*bf7ab1e7SMasahiro Yamada    { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); }
1937*bf7ab1e7SMasahiro Yamada
19380a9064fbSMasahiro Yamada    break;
19390a9064fbSMasahiro Yamada
19400a9064fbSMasahiro Yamada  case 116:
19410a9064fbSMasahiro Yamada
1942*bf7ab1e7SMasahiro Yamada    { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); }
1943*bf7ab1e7SMasahiro Yamada
19440a9064fbSMasahiro Yamada    break;
19450a9064fbSMasahiro Yamada
19460a9064fbSMasahiro Yamada  case 117:
19470a9064fbSMasahiro Yamada
1948*bf7ab1e7SMasahiro Yamada    { (yyval.expr) = (yyvsp[-1].expr); }
1949*bf7ab1e7SMasahiro Yamada
1950*bf7ab1e7SMasahiro Yamada    break;
1951*bf7ab1e7SMasahiro Yamada
1952*bf7ab1e7SMasahiro Yamada  case 118:
1953*bf7ab1e7SMasahiro Yamada
1954*bf7ab1e7SMasahiro Yamada    { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[0].expr)); }
1955*bf7ab1e7SMasahiro Yamada
1956*bf7ab1e7SMasahiro Yamada    break;
1957*bf7ab1e7SMasahiro Yamada
1958*bf7ab1e7SMasahiro Yamada  case 119:
1959*bf7ab1e7SMasahiro Yamada
1960*bf7ab1e7SMasahiro Yamada    { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
1961*bf7ab1e7SMasahiro Yamada
1962*bf7ab1e7SMasahiro Yamada    break;
1963*bf7ab1e7SMasahiro Yamada
1964*bf7ab1e7SMasahiro Yamada  case 120:
1965*bf7ab1e7SMasahiro Yamada
1966*bf7ab1e7SMasahiro Yamada    { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
1967*bf7ab1e7SMasahiro Yamada
1968*bf7ab1e7SMasahiro Yamada    break;
1969*bf7ab1e7SMasahiro Yamada
1970*bf7ab1e7SMasahiro Yamada  case 121:
1971*bf7ab1e7SMasahiro Yamada
1972*bf7ab1e7SMasahiro Yamada    { (yyval.symbol) = sym_lookup((yyvsp[0].string), 0); free((yyvsp[0].string)); }
1973*bf7ab1e7SMasahiro Yamada
1974*bf7ab1e7SMasahiro Yamada    break;
1975*bf7ab1e7SMasahiro Yamada
1976*bf7ab1e7SMasahiro Yamada  case 122:
1977*bf7ab1e7SMasahiro Yamada
1978*bf7ab1e7SMasahiro Yamada    { (yyval.symbol) = sym_lookup((yyvsp[0].string), SYMBOL_CONST); free((yyvsp[0].string)); }
1979*bf7ab1e7SMasahiro Yamada
1980*bf7ab1e7SMasahiro Yamada    break;
1981*bf7ab1e7SMasahiro Yamada
1982*bf7ab1e7SMasahiro Yamada  case 123:
1983*bf7ab1e7SMasahiro Yamada
19840a9064fbSMasahiro Yamada    { (yyval.string) = NULL; }
1985*bf7ab1e7SMasahiro Yamada
19860a9064fbSMasahiro Yamada    break;
19870a9064fbSMasahiro Yamada
19880a9064fbSMasahiro Yamada
19890a9064fbSMasahiro Yamada
19900a9064fbSMasahiro Yamada      default: break;
19910a9064fbSMasahiro Yamada    }
19920a9064fbSMasahiro Yamada  /* User semantic actions sometimes alter yychar, and that requires
19930a9064fbSMasahiro Yamada     that yytoken be updated with the new translation.  We take the
19940a9064fbSMasahiro Yamada     approach of translating immediately before every use of yytoken.
19950a9064fbSMasahiro Yamada     One alternative is translating here after every semantic action,
19960a9064fbSMasahiro Yamada     but that translation would be missed if the semantic action invokes
19970a9064fbSMasahiro Yamada     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
19980a9064fbSMasahiro Yamada     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
19990a9064fbSMasahiro Yamada     incorrect destructor might then be invoked immediately.  In the
20000a9064fbSMasahiro Yamada     case of YYERROR or YYBACKUP, subsequent parser actions might lead
20010a9064fbSMasahiro Yamada     to an incorrect destructor call or verbose syntax error message
20020a9064fbSMasahiro Yamada     before the lookahead is translated.  */
20030a9064fbSMasahiro Yamada  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
20040a9064fbSMasahiro Yamada
20050a9064fbSMasahiro Yamada  YYPOPSTACK (yylen);
20060a9064fbSMasahiro Yamada  yylen = 0;
20070a9064fbSMasahiro Yamada  YY_STACK_PRINT (yyss, yyssp);
20080a9064fbSMasahiro Yamada
20090a9064fbSMasahiro Yamada  *++yyvsp = yyval;
20100a9064fbSMasahiro Yamada
2011*bf7ab1e7SMasahiro Yamada  /* Now 'shift' the result of the reduction.  Determine what state
20120a9064fbSMasahiro Yamada     that goes to, based on the state we popped back to and the rule
20130a9064fbSMasahiro Yamada     number reduced by.  */
20140a9064fbSMasahiro Yamada
20150a9064fbSMasahiro Yamada  yyn = yyr1[yyn];
20160a9064fbSMasahiro Yamada
20170a9064fbSMasahiro Yamada  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
20180a9064fbSMasahiro Yamada  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
20190a9064fbSMasahiro Yamada    yystate = yytable[yystate];
20200a9064fbSMasahiro Yamada  else
20210a9064fbSMasahiro Yamada    yystate = yydefgoto[yyn - YYNTOKENS];
20220a9064fbSMasahiro Yamada
20230a9064fbSMasahiro Yamada  goto yynewstate;
20240a9064fbSMasahiro Yamada
20250a9064fbSMasahiro Yamada
2026*bf7ab1e7SMasahiro Yamada/*--------------------------------------.
2027*bf7ab1e7SMasahiro Yamada| yyerrlab -- here on detecting error.  |
2028*bf7ab1e7SMasahiro Yamada`--------------------------------------*/
20290a9064fbSMasahiro Yamadayyerrlab:
20300a9064fbSMasahiro Yamada  /* Make sure we have latest lookahead translation.  See comments at
20310a9064fbSMasahiro Yamada     user semantic actions for why this is necessary.  */
20320a9064fbSMasahiro Yamada  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
20330a9064fbSMasahiro Yamada
20340a9064fbSMasahiro Yamada  /* If not already recovering from an error, report this error.  */
20350a9064fbSMasahiro Yamada  if (!yyerrstatus)
20360a9064fbSMasahiro Yamada    {
20370a9064fbSMasahiro Yamada      ++yynerrs;
20380a9064fbSMasahiro Yamada#if ! YYERROR_VERBOSE
20390a9064fbSMasahiro Yamada      yyerror (YY_("syntax error"));
20400a9064fbSMasahiro Yamada#else
20410a9064fbSMasahiro Yamada# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
20420a9064fbSMasahiro Yamada                                        yyssp, yytoken)
20430a9064fbSMasahiro Yamada      {
20440a9064fbSMasahiro Yamada        char const *yymsgp = YY_("syntax error");
20450a9064fbSMasahiro Yamada        int yysyntax_error_status;
20460a9064fbSMasahiro Yamada        yysyntax_error_status = YYSYNTAX_ERROR;
20470a9064fbSMasahiro Yamada        if (yysyntax_error_status == 0)
20480a9064fbSMasahiro Yamada          yymsgp = yymsg;
20490a9064fbSMasahiro Yamada        else if (yysyntax_error_status == 1)
20500a9064fbSMasahiro Yamada          {
20510a9064fbSMasahiro Yamada            if (yymsg != yymsgbuf)
20520a9064fbSMasahiro Yamada              YYSTACK_FREE (yymsg);
20530a9064fbSMasahiro Yamada            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
20540a9064fbSMasahiro Yamada            if (!yymsg)
20550a9064fbSMasahiro Yamada              {
20560a9064fbSMasahiro Yamada                yymsg = yymsgbuf;
20570a9064fbSMasahiro Yamada                yymsg_alloc = sizeof yymsgbuf;
20580a9064fbSMasahiro Yamada                yysyntax_error_status = 2;
20590a9064fbSMasahiro Yamada              }
20600a9064fbSMasahiro Yamada            else
20610a9064fbSMasahiro Yamada              {
20620a9064fbSMasahiro Yamada                yysyntax_error_status = YYSYNTAX_ERROR;
20630a9064fbSMasahiro Yamada                yymsgp = yymsg;
20640a9064fbSMasahiro Yamada              }
20650a9064fbSMasahiro Yamada          }
20660a9064fbSMasahiro Yamada        yyerror (yymsgp);
20670a9064fbSMasahiro Yamada        if (yysyntax_error_status == 2)
20680a9064fbSMasahiro Yamada          goto yyexhaustedlab;
20690a9064fbSMasahiro Yamada      }
20700a9064fbSMasahiro Yamada# undef YYSYNTAX_ERROR
20710a9064fbSMasahiro Yamada#endif
20720a9064fbSMasahiro Yamada    }
20730a9064fbSMasahiro Yamada
20740a9064fbSMasahiro Yamada
20750a9064fbSMasahiro Yamada
20760a9064fbSMasahiro Yamada  if (yyerrstatus == 3)
20770a9064fbSMasahiro Yamada    {
20780a9064fbSMasahiro Yamada      /* If just tried and failed to reuse lookahead token after an
20790a9064fbSMasahiro Yamada         error, discard it.  */
20800a9064fbSMasahiro Yamada
20810a9064fbSMasahiro Yamada      if (yychar <= YYEOF)
20820a9064fbSMasahiro Yamada        {
20830a9064fbSMasahiro Yamada          /* Return failure if at end of input.  */
20840a9064fbSMasahiro Yamada          if (yychar == YYEOF)
20850a9064fbSMasahiro Yamada            YYABORT;
20860a9064fbSMasahiro Yamada        }
20870a9064fbSMasahiro Yamada      else
20880a9064fbSMasahiro Yamada        {
20890a9064fbSMasahiro Yamada          yydestruct ("Error: discarding",
20900a9064fbSMasahiro Yamada                      yytoken, &yylval);
20910a9064fbSMasahiro Yamada          yychar = YYEMPTY;
20920a9064fbSMasahiro Yamada        }
20930a9064fbSMasahiro Yamada    }
20940a9064fbSMasahiro Yamada
20950a9064fbSMasahiro Yamada  /* Else will try to reuse lookahead token after shifting the error
20960a9064fbSMasahiro Yamada     token.  */
20970a9064fbSMasahiro Yamada  goto yyerrlab1;
20980a9064fbSMasahiro Yamada
20990a9064fbSMasahiro Yamada
21000a9064fbSMasahiro Yamada/*---------------------------------------------------.
21010a9064fbSMasahiro Yamada| yyerrorlab -- error raised explicitly by YYERROR.  |
21020a9064fbSMasahiro Yamada`---------------------------------------------------*/
21030a9064fbSMasahiro Yamadayyerrorlab:
21040a9064fbSMasahiro Yamada
21050a9064fbSMasahiro Yamada  /* Pacify compilers like GCC when the user code never invokes
21060a9064fbSMasahiro Yamada     YYERROR and the label yyerrorlab therefore never appears in user
21070a9064fbSMasahiro Yamada     code.  */
21080a9064fbSMasahiro Yamada  if (/*CONSTCOND*/ 0)
21090a9064fbSMasahiro Yamada     goto yyerrorlab;
21100a9064fbSMasahiro Yamada
2111*bf7ab1e7SMasahiro Yamada  /* Do not reclaim the symbols of the rule whose action triggered
21120a9064fbSMasahiro Yamada     this YYERROR.  */
21130a9064fbSMasahiro Yamada  YYPOPSTACK (yylen);
21140a9064fbSMasahiro Yamada  yylen = 0;
21150a9064fbSMasahiro Yamada  YY_STACK_PRINT (yyss, yyssp);
21160a9064fbSMasahiro Yamada  yystate = *yyssp;
21170a9064fbSMasahiro Yamada  goto yyerrlab1;
21180a9064fbSMasahiro Yamada
21190a9064fbSMasahiro Yamada
21200a9064fbSMasahiro Yamada/*-------------------------------------------------------------.
21210a9064fbSMasahiro Yamada| yyerrlab1 -- common code for both syntax error and YYERROR.  |
21220a9064fbSMasahiro Yamada`-------------------------------------------------------------*/
21230a9064fbSMasahiro Yamadayyerrlab1:
21240a9064fbSMasahiro Yamada  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
21250a9064fbSMasahiro Yamada
21260a9064fbSMasahiro Yamada  for (;;)
21270a9064fbSMasahiro Yamada    {
21280a9064fbSMasahiro Yamada      yyn = yypact[yystate];
21290a9064fbSMasahiro Yamada      if (!yypact_value_is_default (yyn))
21300a9064fbSMasahiro Yamada        {
21310a9064fbSMasahiro Yamada          yyn += YYTERROR;
21320a9064fbSMasahiro Yamada          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
21330a9064fbSMasahiro Yamada            {
21340a9064fbSMasahiro Yamada              yyn = yytable[yyn];
21350a9064fbSMasahiro Yamada              if (0 < yyn)
21360a9064fbSMasahiro Yamada                break;
21370a9064fbSMasahiro Yamada            }
21380a9064fbSMasahiro Yamada        }
21390a9064fbSMasahiro Yamada
21400a9064fbSMasahiro Yamada      /* Pop the current state because it cannot handle the error token.  */
21410a9064fbSMasahiro Yamada      if (yyssp == yyss)
21420a9064fbSMasahiro Yamada        YYABORT;
21430a9064fbSMasahiro Yamada
21440a9064fbSMasahiro Yamada
21450a9064fbSMasahiro Yamada      yydestruct ("Error: popping",
21460a9064fbSMasahiro Yamada                  yystos[yystate], yyvsp);
21470a9064fbSMasahiro Yamada      YYPOPSTACK (1);
21480a9064fbSMasahiro Yamada      yystate = *yyssp;
21490a9064fbSMasahiro Yamada      YY_STACK_PRINT (yyss, yyssp);
21500a9064fbSMasahiro Yamada    }
21510a9064fbSMasahiro Yamada
2152*bf7ab1e7SMasahiro Yamada  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
21530a9064fbSMasahiro Yamada  *++yyvsp = yylval;
2154*bf7ab1e7SMasahiro Yamada  YY_IGNORE_MAYBE_UNINITIALIZED_END
21550a9064fbSMasahiro Yamada
21560a9064fbSMasahiro Yamada
21570a9064fbSMasahiro Yamada  /* Shift the error token.  */
21580a9064fbSMasahiro Yamada  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
21590a9064fbSMasahiro Yamada
21600a9064fbSMasahiro Yamada  yystate = yyn;
21610a9064fbSMasahiro Yamada  goto yynewstate;
21620a9064fbSMasahiro Yamada
21630a9064fbSMasahiro Yamada
21640a9064fbSMasahiro Yamada/*-------------------------------------.
21650a9064fbSMasahiro Yamada| yyacceptlab -- YYACCEPT comes here.  |
21660a9064fbSMasahiro Yamada`-------------------------------------*/
21670a9064fbSMasahiro Yamadayyacceptlab:
21680a9064fbSMasahiro Yamada  yyresult = 0;
21690a9064fbSMasahiro Yamada  goto yyreturn;
21700a9064fbSMasahiro Yamada
21710a9064fbSMasahiro Yamada/*-----------------------------------.
21720a9064fbSMasahiro Yamada| yyabortlab -- YYABORT comes here.  |
21730a9064fbSMasahiro Yamada`-----------------------------------*/
21740a9064fbSMasahiro Yamadayyabortlab:
21750a9064fbSMasahiro Yamada  yyresult = 1;
21760a9064fbSMasahiro Yamada  goto yyreturn;
21770a9064fbSMasahiro Yamada
2178*bf7ab1e7SMasahiro Yamada#if !defined yyoverflow || YYERROR_VERBOSE
21790a9064fbSMasahiro Yamada/*-------------------------------------------------.
21800a9064fbSMasahiro Yamada| yyexhaustedlab -- memory exhaustion comes here.  |
21810a9064fbSMasahiro Yamada`-------------------------------------------------*/
21820a9064fbSMasahiro Yamadayyexhaustedlab:
21830a9064fbSMasahiro Yamada  yyerror (YY_("memory exhausted"));
21840a9064fbSMasahiro Yamada  yyresult = 2;
21850a9064fbSMasahiro Yamada  /* Fall through.  */
21860a9064fbSMasahiro Yamada#endif
21870a9064fbSMasahiro Yamada
21880a9064fbSMasahiro Yamadayyreturn:
21890a9064fbSMasahiro Yamada  if (yychar != YYEMPTY)
21900a9064fbSMasahiro Yamada    {
21910a9064fbSMasahiro Yamada      /* Make sure we have latest lookahead translation.  See comments at
21920a9064fbSMasahiro Yamada         user semantic actions for why this is necessary.  */
21930a9064fbSMasahiro Yamada      yytoken = YYTRANSLATE (yychar);
21940a9064fbSMasahiro Yamada      yydestruct ("Cleanup: discarding lookahead",
21950a9064fbSMasahiro Yamada                  yytoken, &yylval);
21960a9064fbSMasahiro Yamada    }
2197*bf7ab1e7SMasahiro Yamada  /* Do not reclaim the symbols of the rule whose action triggered
21980a9064fbSMasahiro Yamada     this YYABORT or YYACCEPT.  */
21990a9064fbSMasahiro Yamada  YYPOPSTACK (yylen);
22000a9064fbSMasahiro Yamada  YY_STACK_PRINT (yyss, yyssp);
22010a9064fbSMasahiro Yamada  while (yyssp != yyss)
22020a9064fbSMasahiro Yamada    {
22030a9064fbSMasahiro Yamada      yydestruct ("Cleanup: popping",
22040a9064fbSMasahiro Yamada                  yystos[*yyssp], yyvsp);
22050a9064fbSMasahiro Yamada      YYPOPSTACK (1);
22060a9064fbSMasahiro Yamada    }
22070a9064fbSMasahiro Yamada#ifndef yyoverflow
22080a9064fbSMasahiro Yamada  if (yyss != yyssa)
22090a9064fbSMasahiro Yamada    YYSTACK_FREE (yyss);
22100a9064fbSMasahiro Yamada#endif
22110a9064fbSMasahiro Yamada#if YYERROR_VERBOSE
22120a9064fbSMasahiro Yamada  if (yymsg != yymsgbuf)
22130a9064fbSMasahiro Yamada    YYSTACK_FREE (yymsg);
22140a9064fbSMasahiro Yamada#endif
2215*bf7ab1e7SMasahiro Yamada  return yyresult;
22160a9064fbSMasahiro Yamada}
22170a9064fbSMasahiro Yamada
22180a9064fbSMasahiro Yamada
22190a9064fbSMasahiro Yamada
22200a9064fbSMasahiro Yamadavoid conf_parse(const char *name)
22210a9064fbSMasahiro Yamada{
22220a9064fbSMasahiro Yamada	struct symbol *sym;
22230a9064fbSMasahiro Yamada	int i;
22240a9064fbSMasahiro Yamada
22250a9064fbSMasahiro Yamada	zconf_initscan(name);
22260a9064fbSMasahiro Yamada
22270a9064fbSMasahiro Yamada	sym_init();
22280a9064fbSMasahiro Yamada	_menu_init();
22290a9064fbSMasahiro Yamada	rootmenu.prompt = menu_add_prompt(P_MENU, "Linux Kernel Configuration", NULL);
22300a9064fbSMasahiro Yamada
22310a9064fbSMasahiro Yamada	if (getenv("ZCONF_DEBUG"))
22320a9064fbSMasahiro Yamada		zconfdebug = 1;
22330a9064fbSMasahiro Yamada	zconfparse();
22340a9064fbSMasahiro Yamada	if (zconfnerrs)
22350a9064fbSMasahiro Yamada		exit(1);
22360a9064fbSMasahiro Yamada	if (!modules_sym)
22370a9064fbSMasahiro Yamada		modules_sym = sym_find( "n" );
22380a9064fbSMasahiro Yamada
22390a9064fbSMasahiro Yamada	rootmenu.prompt->text = _(rootmenu.prompt->text);
22400a9064fbSMasahiro Yamada	rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text);
22410a9064fbSMasahiro Yamada
22420a9064fbSMasahiro Yamada	menu_finalize(&rootmenu);
22430a9064fbSMasahiro Yamada	for_all_symbols(i, sym) {
22440a9064fbSMasahiro Yamada		if (sym_check_deps(sym))
22450a9064fbSMasahiro Yamada			zconfnerrs++;
22460a9064fbSMasahiro Yamada	}
22470a9064fbSMasahiro Yamada	if (zconfnerrs)
22480a9064fbSMasahiro Yamada		exit(1);
22490a9064fbSMasahiro Yamada	sym_set_change_count(1);
22500a9064fbSMasahiro Yamada}
22510a9064fbSMasahiro Yamada
22520a9064fbSMasahiro Yamadastatic const char *zconf_tokenname(int token)
22530a9064fbSMasahiro Yamada{
22540a9064fbSMasahiro Yamada	switch (token) {
22550a9064fbSMasahiro Yamada	case T_MENU:		return "menu";
22560a9064fbSMasahiro Yamada	case T_ENDMENU:		return "endmenu";
22570a9064fbSMasahiro Yamada	case T_CHOICE:		return "choice";
22580a9064fbSMasahiro Yamada	case T_ENDCHOICE:	return "endchoice";
22590a9064fbSMasahiro Yamada	case T_IF:		return "if";
22600a9064fbSMasahiro Yamada	case T_ENDIF:		return "endif";
22610a9064fbSMasahiro Yamada	case T_DEPENDS:		return "depends";
22620a9064fbSMasahiro Yamada	case T_VISIBLE:		return "visible";
22630a9064fbSMasahiro Yamada	}
22640a9064fbSMasahiro Yamada	return "<token>";
22650a9064fbSMasahiro Yamada}
22660a9064fbSMasahiro Yamada
22670a9064fbSMasahiro Yamadastatic bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken)
22680a9064fbSMasahiro Yamada{
22690a9064fbSMasahiro Yamada	if (id->token != endtoken) {
22700a9064fbSMasahiro Yamada		zconf_error("unexpected '%s' within %s block",
22710a9064fbSMasahiro Yamada			kconf_id_strings + id->name, zconf_tokenname(starttoken));
22720a9064fbSMasahiro Yamada		zconfnerrs++;
22730a9064fbSMasahiro Yamada		return false;
22740a9064fbSMasahiro Yamada	}
22750a9064fbSMasahiro Yamada	if (current_menu->file != current_file) {
22760a9064fbSMasahiro Yamada		zconf_error("'%s' in different file than '%s'",
22770a9064fbSMasahiro Yamada			kconf_id_strings + id->name, zconf_tokenname(starttoken));
22780a9064fbSMasahiro Yamada		fprintf(stderr, "%s:%d: location of the '%s'\n",
22790a9064fbSMasahiro Yamada			current_menu->file->name, current_menu->lineno,
22800a9064fbSMasahiro Yamada			zconf_tokenname(starttoken));
22810a9064fbSMasahiro Yamada		zconfnerrs++;
22820a9064fbSMasahiro Yamada		return false;
22830a9064fbSMasahiro Yamada	}
22840a9064fbSMasahiro Yamada	return true;
22850a9064fbSMasahiro Yamada}
22860a9064fbSMasahiro Yamada
22870a9064fbSMasahiro Yamadastatic void zconfprint(const char *err, ...)
22880a9064fbSMasahiro Yamada{
22890a9064fbSMasahiro Yamada	va_list ap;
22900a9064fbSMasahiro Yamada
22910a9064fbSMasahiro Yamada	fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
22920a9064fbSMasahiro Yamada	va_start(ap, err);
22930a9064fbSMasahiro Yamada	vfprintf(stderr, err, ap);
22940a9064fbSMasahiro Yamada	va_end(ap);
22950a9064fbSMasahiro Yamada	fprintf(stderr, "\n");
22960a9064fbSMasahiro Yamada}
22970a9064fbSMasahiro Yamada
22980a9064fbSMasahiro Yamadastatic void zconf_error(const char *err, ...)
22990a9064fbSMasahiro Yamada{
23000a9064fbSMasahiro Yamada	va_list ap;
23010a9064fbSMasahiro Yamada
23020a9064fbSMasahiro Yamada	zconfnerrs++;
23030a9064fbSMasahiro Yamada	fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
23040a9064fbSMasahiro Yamada	va_start(ap, err);
23050a9064fbSMasahiro Yamada	vfprintf(stderr, err, ap);
23060a9064fbSMasahiro Yamada	va_end(ap);
23070a9064fbSMasahiro Yamada	fprintf(stderr, "\n");
23080a9064fbSMasahiro Yamada}
23090a9064fbSMasahiro Yamada
23100a9064fbSMasahiro Yamadastatic void zconferror(const char *err)
23110a9064fbSMasahiro Yamada{
23120a9064fbSMasahiro Yamada	fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
23130a9064fbSMasahiro Yamada}
23140a9064fbSMasahiro Yamada
23150a9064fbSMasahiro Yamadastatic void print_quoted_string(FILE *out, const char *str)
23160a9064fbSMasahiro Yamada{
23170a9064fbSMasahiro Yamada	const char *p;
23180a9064fbSMasahiro Yamada	int len;
23190a9064fbSMasahiro Yamada
23200a9064fbSMasahiro Yamada	putc('"', out);
23210a9064fbSMasahiro Yamada	while ((p = strchr(str, '"'))) {
23220a9064fbSMasahiro Yamada		len = p - str;
23230a9064fbSMasahiro Yamada		if (len)
23240a9064fbSMasahiro Yamada			fprintf(out, "%.*s", len, str);
23250a9064fbSMasahiro Yamada		fputs("\\\"", out);
23260a9064fbSMasahiro Yamada		str = p + 1;
23270a9064fbSMasahiro Yamada	}
23280a9064fbSMasahiro Yamada	fputs(str, out);
23290a9064fbSMasahiro Yamada	putc('"', out);
23300a9064fbSMasahiro Yamada}
23310a9064fbSMasahiro Yamada
23320a9064fbSMasahiro Yamadastatic void print_symbol(FILE *out, struct menu *menu)
23330a9064fbSMasahiro Yamada{
23340a9064fbSMasahiro Yamada	struct symbol *sym = menu->sym;
23350a9064fbSMasahiro Yamada	struct property *prop;
23360a9064fbSMasahiro Yamada
23370a9064fbSMasahiro Yamada	if (sym_is_choice(sym))
23380a9064fbSMasahiro Yamada		fprintf(out, "\nchoice\n");
23390a9064fbSMasahiro Yamada	else
23400a9064fbSMasahiro Yamada		fprintf(out, "\nconfig %s\n", sym->name);
23410a9064fbSMasahiro Yamada	switch (sym->type) {
23420a9064fbSMasahiro Yamada	case S_BOOLEAN:
23430a9064fbSMasahiro Yamada		fputs("  boolean\n", out);
23440a9064fbSMasahiro Yamada		break;
23450a9064fbSMasahiro Yamada	case S_TRISTATE:
23460a9064fbSMasahiro Yamada		fputs("  tristate\n", out);
23470a9064fbSMasahiro Yamada		break;
23480a9064fbSMasahiro Yamada	case S_STRING:
23490a9064fbSMasahiro Yamada		fputs("  string\n", out);
23500a9064fbSMasahiro Yamada		break;
23510a9064fbSMasahiro Yamada	case S_INT:
23520a9064fbSMasahiro Yamada		fputs("  integer\n", out);
23530a9064fbSMasahiro Yamada		break;
23540a9064fbSMasahiro Yamada	case S_HEX:
23550a9064fbSMasahiro Yamada		fputs("  hex\n", out);
23560a9064fbSMasahiro Yamada		break;
23570a9064fbSMasahiro Yamada	default:
23580a9064fbSMasahiro Yamada		fputs("  ???\n", out);
23590a9064fbSMasahiro Yamada		break;
23600a9064fbSMasahiro Yamada	}
23610a9064fbSMasahiro Yamada	for (prop = sym->prop; prop; prop = prop->next) {
23620a9064fbSMasahiro Yamada		if (prop->menu != menu)
23630a9064fbSMasahiro Yamada			continue;
23640a9064fbSMasahiro Yamada		switch (prop->type) {
23650a9064fbSMasahiro Yamada		case P_PROMPT:
23660a9064fbSMasahiro Yamada			fputs("  prompt ", out);
23670a9064fbSMasahiro Yamada			print_quoted_string(out, prop->text);
23680a9064fbSMasahiro Yamada			if (!expr_is_yes(prop->visible.expr)) {
23690a9064fbSMasahiro Yamada				fputs(" if ", out);
23700a9064fbSMasahiro Yamada				expr_fprint(prop->visible.expr, out);
23710a9064fbSMasahiro Yamada			}
23720a9064fbSMasahiro Yamada			fputc('\n', out);
23730a9064fbSMasahiro Yamada			break;
23740a9064fbSMasahiro Yamada		case P_DEFAULT:
23750a9064fbSMasahiro Yamada			fputs( "  default ", out);
23760a9064fbSMasahiro Yamada			expr_fprint(prop->expr, out);
23770a9064fbSMasahiro Yamada			if (!expr_is_yes(prop->visible.expr)) {
23780a9064fbSMasahiro Yamada				fputs(" if ", out);
23790a9064fbSMasahiro Yamada				expr_fprint(prop->visible.expr, out);
23800a9064fbSMasahiro Yamada			}
23810a9064fbSMasahiro Yamada			fputc('\n', out);
23820a9064fbSMasahiro Yamada			break;
23830a9064fbSMasahiro Yamada		case P_CHOICE:
23840a9064fbSMasahiro Yamada			fputs("  #choice value\n", out);
23850a9064fbSMasahiro Yamada			break;
23860a9064fbSMasahiro Yamada		case P_SELECT:
23870a9064fbSMasahiro Yamada			fputs( "  select ", out);
23880a9064fbSMasahiro Yamada			expr_fprint(prop->expr, out);
23890a9064fbSMasahiro Yamada			fputc('\n', out);
23900a9064fbSMasahiro Yamada			break;
2391*bf7ab1e7SMasahiro Yamada		case P_IMPLY:
2392*bf7ab1e7SMasahiro Yamada			fputs( "  imply ", out);
2393*bf7ab1e7SMasahiro Yamada			expr_fprint(prop->expr, out);
2394*bf7ab1e7SMasahiro Yamada			fputc('\n', out);
2395*bf7ab1e7SMasahiro Yamada			break;
23960a9064fbSMasahiro Yamada		case P_RANGE:
23970a9064fbSMasahiro Yamada			fputs( "  range ", out);
23980a9064fbSMasahiro Yamada			expr_fprint(prop->expr, out);
23990a9064fbSMasahiro Yamada			fputc('\n', out);
24000a9064fbSMasahiro Yamada			break;
24010a9064fbSMasahiro Yamada		case P_MENU:
24020a9064fbSMasahiro Yamada			fputs( "  menu ", out);
24030a9064fbSMasahiro Yamada			print_quoted_string(out, prop->text);
24040a9064fbSMasahiro Yamada			fputc('\n', out);
24050a9064fbSMasahiro Yamada			break;
24060a9064fbSMasahiro Yamada		default:
24070a9064fbSMasahiro Yamada			fprintf(out, "  unknown prop %d!\n", prop->type);
24080a9064fbSMasahiro Yamada			break;
24090a9064fbSMasahiro Yamada		}
24100a9064fbSMasahiro Yamada	}
24110a9064fbSMasahiro Yamada	if (menu->help) {
24120a9064fbSMasahiro Yamada		int len = strlen(menu->help);
24130a9064fbSMasahiro Yamada		while (menu->help[--len] == '\n')
24140a9064fbSMasahiro Yamada			menu->help[len] = 0;
24150a9064fbSMasahiro Yamada		fprintf(out, "  help\n%s\n", menu->help);
24160a9064fbSMasahiro Yamada	}
24170a9064fbSMasahiro Yamada}
24180a9064fbSMasahiro Yamada
24190a9064fbSMasahiro Yamadavoid zconfdump(FILE *out)
24200a9064fbSMasahiro Yamada{
24210a9064fbSMasahiro Yamada	struct property *prop;
24220a9064fbSMasahiro Yamada	struct symbol *sym;
24230a9064fbSMasahiro Yamada	struct menu *menu;
24240a9064fbSMasahiro Yamada
24250a9064fbSMasahiro Yamada	menu = rootmenu.list;
24260a9064fbSMasahiro Yamada	while (menu) {
24270a9064fbSMasahiro Yamada		if ((sym = menu->sym))
24280a9064fbSMasahiro Yamada			print_symbol(out, menu);
24290a9064fbSMasahiro Yamada		else if ((prop = menu->prompt)) {
24300a9064fbSMasahiro Yamada			switch (prop->type) {
24310a9064fbSMasahiro Yamada			case P_COMMENT:
24320a9064fbSMasahiro Yamada				fputs("\ncomment ", out);
24330a9064fbSMasahiro Yamada				print_quoted_string(out, prop->text);
24340a9064fbSMasahiro Yamada				fputs("\n", out);
24350a9064fbSMasahiro Yamada				break;
24360a9064fbSMasahiro Yamada			case P_MENU:
24370a9064fbSMasahiro Yamada				fputs("\nmenu ", out);
24380a9064fbSMasahiro Yamada				print_quoted_string(out, prop->text);
24390a9064fbSMasahiro Yamada				fputs("\n", out);
24400a9064fbSMasahiro Yamada				break;
24410a9064fbSMasahiro Yamada			default:
24420a9064fbSMasahiro Yamada				;
24430a9064fbSMasahiro Yamada			}
24440a9064fbSMasahiro Yamada			if (!expr_is_yes(prop->visible.expr)) {
24450a9064fbSMasahiro Yamada				fputs("  depends ", out);
24460a9064fbSMasahiro Yamada				expr_fprint(prop->visible.expr, out);
24470a9064fbSMasahiro Yamada				fputc('\n', out);
24480a9064fbSMasahiro Yamada			}
24490a9064fbSMasahiro Yamada		}
24500a9064fbSMasahiro Yamada
24510a9064fbSMasahiro Yamada		if (menu->list)
24520a9064fbSMasahiro Yamada			menu = menu->list;
24530a9064fbSMasahiro Yamada		else if (menu->next)
24540a9064fbSMasahiro Yamada			menu = menu->next;
24550a9064fbSMasahiro Yamada		else while ((menu = menu->parent)) {
24560a9064fbSMasahiro Yamada			if (menu->prompt && menu->prompt->type == P_MENU)
24570a9064fbSMasahiro Yamada				fputs("\nendmenu\n", out);
24580a9064fbSMasahiro Yamada			if (menu->next) {
24590a9064fbSMasahiro Yamada				menu = menu->next;
24600a9064fbSMasahiro Yamada				break;
24610a9064fbSMasahiro Yamada			}
24620a9064fbSMasahiro Yamada		}
24630a9064fbSMasahiro Yamada	}
24640a9064fbSMasahiro Yamada}
24650a9064fbSMasahiro Yamada
24660a9064fbSMasahiro Yamada#include "zconf.lex.c"
24670a9064fbSMasahiro Yamada#include "util.c"
24680a9064fbSMasahiro Yamada#include "confdata.c"
24690a9064fbSMasahiro Yamada#include "expr.c"
24700a9064fbSMasahiro Yamada#include "symbol.c"
24710a9064fbSMasahiro Yamada#include "menu.c"
2472