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