Merge branch 'rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6

* 'rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6:
  initramfs: Really fix build break on symbol-prefixed archs
  [media] Fix Kconfig errors due to two visible menus
  i2c/algos: convert Kconfig to use the menu's `visible' keyword
  media/video: convert Kconfig to use the menu's `visible' keyword
  Revert "i2c: Fix Kconfig dependencies"
  kconfig: regen parser
  kconfig: add an option to determine a menu's visibility
This commit is contained in:
Linus Torvalds 2010-12-05 16:41:13 -08:00
commit 31c67c7553
13 changed files with 420 additions and 382 deletions

View file

@ -75,8 +75,7 @@ config I2C_HELPER_AUTO
In doubt, say Y. In doubt, say Y.
config I2C_SMBUS config I2C_SMBUS
tristate tristate "SMBus-specific protocols" if !I2C_HELPER_AUTO
prompt "SMBus-specific protocols" if !I2C_HELPER_AUTO
help help
Say Y here if you want support for SMBus extensions to the I2C Say Y here if you want support for SMBus extensions to the I2C
specification. At the moment, the only supported extension is specification. At the moment, the only supported extension is

View file

@ -3,7 +3,7 @@
# #
menu "I2C Algorithms" menu "I2C Algorithms"
depends on !I2C_HELPER_AUTO visible if !I2C_HELPER_AUTO
config I2C_ALGOBIT config I2C_ALGOBIT
tristate "I2C bit-banging interfaces" tristate "I2C bit-banging interfaces"
@ -15,15 +15,3 @@ config I2C_ALGOPCA
tristate "I2C PCA 9564 interfaces" tristate "I2C PCA 9564 interfaces"
endmenu endmenu
# In automatic configuration mode, we still have to define the
# symbols to avoid unmet dependencies.
if I2C_HELPER_AUTO
config I2C_ALGOBIT
tristate
config I2C_ALGOPCF
tristate
config I2C_ALGOPCA
tristate
endif

View file

@ -31,7 +31,7 @@ config MEDIA_TUNER
select MEDIA_TUNER_TDA9887 if !MEDIA_TUNER_CUSTOMISE select MEDIA_TUNER_TDA9887 if !MEDIA_TUNER_CUSTOMISE
select MEDIA_TUNER_MC44S803 if !MEDIA_TUNER_CUSTOMISE select MEDIA_TUNER_MC44S803 if !MEDIA_TUNER_CUSTOMISE
menuconfig MEDIA_TUNER_CUSTOMISE config MEDIA_TUNER_CUSTOMISE
bool "Customize analog and hybrid tuner modules to build" bool "Customize analog and hybrid tuner modules to build"
depends on MEDIA_TUNER depends on MEDIA_TUNER
default y if EMBEDDED default y if EMBEDDED
@ -44,7 +44,8 @@ menuconfig MEDIA_TUNER_CUSTOMISE
If unsure say N. If unsure say N.
if MEDIA_TUNER_CUSTOMISE menu "Customize TV tuners"
visible if MEDIA_TUNER_CUSTOMISE
config MEDIA_TUNER_SIMPLE config MEDIA_TUNER_SIMPLE
tristate "Simple tuner support" tristate "Simple tuner support"
@ -185,5 +186,4 @@ config MEDIA_TUNER_TDA18218
default m if MEDIA_TUNER_CUSTOMISE default m if MEDIA_TUNER_CUSTOMISE
help help
NXP TDA18218 silicon tuner driver. NXP TDA18218 silicon tuner driver.
endmenu
endif # MEDIA_TUNER_CUSTOMISE

View file

@ -12,9 +12,8 @@ config DVB_FE_CUSTOMISE
If unsure say N. If unsure say N.
if DVB_FE_CUSTOMISE
menu "Customise DVB Frontends" menu "Customise DVB Frontends"
visible if DVB_FE_CUSTOMISE
comment "Multistandard (satellite) frontends" comment "Multistandard (satellite) frontends"
depends on DVB_CORE depends on DVB_CORE
@ -619,5 +618,3 @@ config DVB_DUMMY_FE
tristate "Dummy frontend driver" tristate "Dummy frontend driver"
default n default n
endmenu endmenu
endif

View file

@ -112,7 +112,7 @@ config VIDEO_IR_I2C
# #
menu "Encoders/decoders and other helper chips" menu "Encoders/decoders and other helper chips"
depends on !VIDEO_HELPER_CHIPS_AUTO visible if !VIDEO_HELPER_CHIPS_AUTO
comment "Audio decoders" comment "Audio decoders"

View file

@ -164,6 +164,7 @@ struct menu {
struct menu *list; struct menu *list;
struct symbol *sym; struct symbol *sym;
struct property *prompt; struct property *prompt;
struct expr *visibility;
struct expr *dep; struct expr *dep;
unsigned int flags; unsigned int flags;
char *help; char *help;

View file

@ -107,6 +107,7 @@ void menu_end_menu(void);
void menu_add_entry(struct symbol *sym); void menu_add_entry(struct symbol *sym);
void menu_end_entry(void); void menu_end_entry(void);
void menu_add_dep(struct expr *dep); void menu_add_dep(struct expr *dep);
void menu_add_visibility(struct expr *dep);
struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep); struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep);
struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep); struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep);
void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep); void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep);

View file

@ -152,6 +152,12 @@ struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr
return menu_add_prop(type, prompt, NULL, dep); return menu_add_prop(type, prompt, NULL, dep);
} }
void menu_add_visibility(struct expr *expr)
{
current_entry->visibility = expr_alloc_and(current_entry->visibility,
expr);
}
void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep) void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep)
{ {
menu_add_prop(type, NULL, expr, dep); menu_add_prop(type, NULL, expr, dep);
@ -410,6 +416,11 @@ bool menu_is_visible(struct menu *menu)
if (!menu->prompt) if (!menu->prompt)
return false; return false;
if (menu->visibility) {
if (expr_calc_value(menu->visibility) == no)
return no;
}
sym = menu->sym; sym = menu->sym;
if (sym) { if (sym) {
sym_calc_value(sym); sym_calc_value(sym);

View file

@ -38,6 +38,7 @@ hex, T_TYPE, TF_COMMAND, S_HEX
string, T_TYPE, TF_COMMAND, S_STRING string, T_TYPE, TF_COMMAND, S_STRING
select, T_SELECT, TF_COMMAND select, T_SELECT, TF_COMMAND
range, T_RANGE, TF_COMMAND range, T_RANGE, TF_COMMAND
visible, T_VISIBLE, TF_COMMAND
option, T_OPTION, TF_COMMAND option, T_OPTION, TF_COMMAND
on, T_ON, TF_PARAM on, T_ON, TF_PARAM
modules, T_OPT_MODULES, TF_OPTION modules, T_OPT_MODULES, TF_OPTION

View file

@ -32,7 +32,7 @@
struct kconf_id; struct kconf_id;
static struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len); static struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len);
/* maximum key range = 47, duplicates = 0 */ /* maximum key range = 50, duplicates = 0 */
#ifdef __GNUC__ #ifdef __GNUC__
__inline __inline
@ -46,32 +46,32 @@ kconf_id_hash (register const char *str, register unsigned int len)
{ {
static unsigned char asso_values[] = static unsigned char asso_values[] =
{ {
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 11, 5, 52, 52, 52, 52, 52, 52, 52, 52, 40, 5,
0, 0, 5, 49, 5, 20, 49, 49, 5, 20, 0, 0, 5, 52, 0, 20, 52, 52, 10, 20,
5, 0, 30, 49, 0, 15, 0, 10, 0, 49, 5, 0, 35, 52, 0, 30, 0, 15, 0, 52,
25, 49, 49, 49, 49, 49, 49, 49, 49, 49, 15, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
49, 49, 49, 49, 49, 49 52, 52, 52, 52, 52, 52
}; };
register int hval = len; register int hval = len;
@ -102,25 +102,26 @@ struct kconf_id_strings_t
char kconf_id_strings_str12[sizeof("default")]; char kconf_id_strings_str12[sizeof("default")];
char kconf_id_strings_str13[sizeof("def_bool")]; char kconf_id_strings_str13[sizeof("def_bool")];
char kconf_id_strings_str14[sizeof("help")]; char kconf_id_strings_str14[sizeof("help")];
char kconf_id_strings_str15[sizeof("bool")];
char kconf_id_strings_str16[sizeof("config")]; char kconf_id_strings_str16[sizeof("config")];
char kconf_id_strings_str17[sizeof("def_tristate")]; char kconf_id_strings_str17[sizeof("def_tristate")];
char kconf_id_strings_str18[sizeof("boolean")]; char kconf_id_strings_str18[sizeof("hex")];
char kconf_id_strings_str19[sizeof("defconfig_list")]; char kconf_id_strings_str19[sizeof("defconfig_list")];
char kconf_id_strings_str21[sizeof("string")];
char kconf_id_strings_str22[sizeof("if")]; char kconf_id_strings_str22[sizeof("if")];
char kconf_id_strings_str23[sizeof("int")]; char kconf_id_strings_str23[sizeof("int")];
char kconf_id_strings_str26[sizeof("select")];
char kconf_id_strings_str27[sizeof("modules")]; char kconf_id_strings_str27[sizeof("modules")];
char kconf_id_strings_str28[sizeof("tristate")]; char kconf_id_strings_str28[sizeof("tristate")];
char kconf_id_strings_str29[sizeof("menu")]; char kconf_id_strings_str29[sizeof("menu")];
char kconf_id_strings_str31[sizeof("source")];
char kconf_id_strings_str32[sizeof("comment")]; char kconf_id_strings_str32[sizeof("comment")];
char kconf_id_strings_str33[sizeof("hex")];
char kconf_id_strings_str35[sizeof("menuconfig")]; char kconf_id_strings_str35[sizeof("menuconfig")];
char kconf_id_strings_str36[sizeof("prompt")]; char kconf_id_strings_str36[sizeof("string")];
char kconf_id_strings_str37[sizeof("depends")]; char kconf_id_strings_str37[sizeof("visible")];
char kconf_id_strings_str41[sizeof("prompt")];
char kconf_id_strings_str42[sizeof("depends")];
char kconf_id_strings_str44[sizeof("bool")];
char kconf_id_strings_str46[sizeof("select")];
char kconf_id_strings_str47[sizeof("boolean")];
char kconf_id_strings_str48[sizeof("mainmenu")]; char kconf_id_strings_str48[sizeof("mainmenu")];
char kconf_id_strings_str51[sizeof("source")];
}; };
static struct kconf_id_strings_t kconf_id_strings_contents = static struct kconf_id_strings_t kconf_id_strings_contents =
{ {
@ -136,25 +137,26 @@ static struct kconf_id_strings_t kconf_id_strings_contents =
"default", "default",
"def_bool", "def_bool",
"help", "help",
"bool",
"config", "config",
"def_tristate", "def_tristate",
"boolean", "hex",
"defconfig_list", "defconfig_list",
"string",
"if", "if",
"int", "int",
"select",
"modules", "modules",
"tristate", "tristate",
"menu", "menu",
"source",
"comment", "comment",
"hex",
"menuconfig", "menuconfig",
"string",
"visible",
"prompt", "prompt",
"depends", "depends",
"mainmenu" "bool",
"select",
"boolean",
"mainmenu",
"source"
}; };
#define kconf_id_strings ((const char *) &kconf_id_strings_contents) #define kconf_id_strings ((const char *) &kconf_id_strings_contents)
#ifdef __GNUC__ #ifdef __GNUC__
@ -168,11 +170,11 @@ kconf_id_lookup (register const char *str, register unsigned int len)
{ {
enum enum
{ {
TOTAL_KEYWORDS = 31, TOTAL_KEYWORDS = 32,
MIN_WORD_LENGTH = 2, MIN_WORD_LENGTH = 2,
MAX_WORD_LENGTH = 14, MAX_WORD_LENGTH = 14,
MIN_HASH_VALUE = 2, MIN_HASH_VALUE = 2,
MAX_HASH_VALUE = 48 MAX_HASH_VALUE = 51
}; };
static struct kconf_id wordlist[] = static struct kconf_id wordlist[] =
@ -191,31 +193,35 @@ kconf_id_lookup (register const char *str, register unsigned int len)
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12, T_DEFAULT, TF_COMMAND, S_UNKNOWN}, {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12, T_DEFAULT, TF_COMMAND, S_UNKNOWN},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13, T_DEFAULT, TF_COMMAND, S_BOOLEAN}, {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13, T_DEFAULT, TF_COMMAND, S_BOOLEAN},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14, T_HELP, TF_COMMAND}, {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14, T_HELP, TF_COMMAND},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str15, T_TYPE, TF_COMMAND, S_BOOLEAN}, {-1},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str16, T_CONFIG, TF_COMMAND}, {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str16, T_CONFIG, TF_COMMAND},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17, T_DEFAULT, TF_COMMAND, S_TRISTATE}, {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17, T_DEFAULT, TF_COMMAND, S_TRISTATE},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18, T_TYPE, TF_COMMAND, S_BOOLEAN}, {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18, T_TYPE, TF_COMMAND, S_HEX},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str19, T_OPT_DEFCONFIG_LIST,TF_OPTION}, {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str19, T_OPT_DEFCONFIG_LIST,TF_OPTION},
{-1}, {-1}, {-1},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21, T_TYPE, TF_COMMAND, S_STRING},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22, T_IF, TF_COMMAND|TF_PARAM}, {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22, T_IF, TF_COMMAND|TF_PARAM},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23, T_TYPE, TF_COMMAND, S_INT}, {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23, T_TYPE, TF_COMMAND, S_INT},
{-1}, {-1}, {-1}, {-1}, {-1},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str26, T_SELECT, TF_COMMAND},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_OPT_MODULES, TF_OPTION}, {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_OPT_MODULES, TF_OPTION},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28, T_TYPE, TF_COMMAND, S_TRISTATE}, {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28, T_TYPE, TF_COMMAND, S_TRISTATE},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29, T_MENU, TF_COMMAND}, {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29, T_MENU, TF_COMMAND},
{-1}, {-1}, {-1},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str31, T_SOURCE, TF_COMMAND},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32, T_COMMENT, TF_COMMAND}, {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32, T_COMMENT, TF_COMMAND},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str33, T_TYPE, TF_COMMAND, S_HEX}, {-1}, {-1},
{-1},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str35, T_MENUCONFIG, TF_COMMAND}, {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str35, T_MENUCONFIG, TF_COMMAND},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36, T_PROMPT, TF_COMMAND}, {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36, T_TYPE, TF_COMMAND, S_STRING},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str37, T_DEPENDS, TF_COMMAND}, {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str37, T_VISIBLE, TF_COMMAND},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str41, T_PROMPT, TF_COMMAND},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str42, T_DEPENDS, TF_COMMAND},
{-1}, {-1},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str48, T_MAINMENU, TF_COMMAND} {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str44, T_TYPE, TF_COMMAND, S_BOOLEAN},
{-1},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str46, T_SELECT, TF_COMMAND},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str47, T_TYPE, TF_COMMAND, S_BOOLEAN},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str48, T_MAINMENU, TF_COMMAND},
{-1}, {-1},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str51, T_SOURCE, TF_COMMAND}
}; };
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)

View file

@ -160,18 +160,19 @@ static struct menu *current_menu, *current_entry;
T_DEFAULT = 275, T_DEFAULT = 275,
T_SELECT = 276, T_SELECT = 276,
T_RANGE = 277, T_RANGE = 277,
T_OPTION = 278, T_VISIBLE = 278,
T_ON = 279, T_OPTION = 279,
T_WORD = 280, T_ON = 280,
T_WORD_QUOTE = 281, T_WORD = 281,
T_UNEQUAL = 282, T_WORD_QUOTE = 282,
T_CLOSE_PAREN = 283, T_UNEQUAL = 283,
T_OPEN_PAREN = 284, T_CLOSE_PAREN = 284,
T_EOL = 285, T_OPEN_PAREN = 285,
T_OR = 286, T_EOL = 286,
T_AND = 287, T_OR = 287,
T_EQUAL = 288, T_AND = 288,
T_NOT = 289 T_EQUAL = 289,
T_NOT = 290
}; };
#endif #endif
@ -419,20 +420,20 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */ /* YYFINAL -- State number of the termination state. */
#define YYFINAL 11 #define YYFINAL 11
/* YYLAST -- Last index in YYTABLE. */ /* YYLAST -- Last index in YYTABLE. */
#define YYLAST 277 #define YYLAST 290
/* YYNTOKENS -- Number of terminals. */ /* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 35 #define YYNTOKENS 36
/* YYNNTS -- Number of nonterminals. */ /* YYNNTS -- Number of nonterminals. */
#define YYNNTS 48 #define YYNNTS 50
/* YYNRULES -- Number of rules. */ /* YYNRULES -- Number of rules. */
#define YYNRULES 113 #define YYNRULES 118
/* YYNRULES -- Number of states. */ /* YYNRULES -- Number of states. */
#define YYNSTATES 185 #define YYNSTATES 191
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2 #define YYUNDEFTOK 2
#define YYMAXUTOK 289 #define YYMAXUTOK 290
#define YYTRANSLATE(YYX) \ #define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@ -468,7 +469,8 @@ static const yytype_uint8 yytranslate[] =
2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35
}; };
#if YYDEBUG #if YYDEBUG
@ -478,72 +480,73 @@ static const yytype_uint16 yyprhs[] =
{ {
0, 0, 3, 6, 8, 11, 13, 14, 17, 20, 0, 0, 3, 6, 8, 11, 13, 14, 17, 20,
23, 26, 31, 36, 40, 42, 44, 46, 48, 50, 23, 26, 31, 36, 40, 42, 44, 46, 48, 50,
52, 54, 56, 58, 60, 62, 64, 66, 70, 73, 52, 54, 56, 58, 60, 62, 64, 66, 68, 72,
77, 80, 84, 87, 88, 91, 94, 97, 100, 103, 75, 79, 82, 86, 89, 90, 93, 96, 99, 102,
106, 110, 115, 120, 125, 131, 135, 136, 140, 141, 105, 108, 112, 117, 122, 127, 133, 137, 138, 142,
144, 148, 151, 153, 157, 158, 161, 164, 167, 170, 143, 146, 150, 153, 155, 159, 160, 163, 166, 169,
173, 178, 182, 185, 190, 191, 194, 198, 200, 204, 172, 175, 180, 184, 187, 192, 193, 196, 200, 202,
205, 208, 211, 214, 218, 222, 225, 227, 231, 232, 206, 207, 210, 213, 216, 220, 224, 228, 230, 234,
235, 238, 241, 245, 249, 252, 255, 258, 259, 262, 235, 238, 241, 244, 248, 252, 255, 258, 261, 262,
265, 268, 273, 274, 277, 279, 281, 284, 287, 290, 265, 268, 271, 276, 277, 280, 283, 286, 287, 290,
292, 295, 296, 299, 301, 305, 309, 313, 316, 320, 292, 294, 297, 300, 303, 305, 308, 309, 312, 314,
324, 326, 328, 329 318, 322, 326, 329, 333, 337, 339, 341, 342
}; };
/* YYRHS -- A `-1'-separated list of the rules' RHS. */ /* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yytype_int8 yyrhs[] = static const yytype_int8 yyrhs[] =
{ {
36, 0, -1, 78, 37, -1, 37, -1, 62, 38, 37, 0, -1, 81, 38, -1, 38, -1, 63, 39,
-1, 38, -1, -1, 38, 40, -1, 38, 54, -1, -1, 39, -1, -1, 39, 41, -1, 39, 55, -1,
38, 66, -1, 38, 77, -1, 38, 25, 1, 30, 39, 67, -1, 39, 80, -1, 39, 26, 1, 31,
-1, 38, 39, 1, 30, -1, 38, 1, 30, -1, -1, 39, 40, 1, 31, -1, 39, 1, 31, -1,
16, -1, 18, -1, 19, -1, 21, -1, 17, -1, 16, -1, 18, -1, 19, -1, 21, -1, 17, -1,
22, -1, 20, -1, 30, -1, 60, -1, 70, -1, 22, -1, 20, -1, 23, -1, 31, -1, 61, -1,
43, -1, 45, -1, 68, -1, 25, 1, 30, -1, 71, -1, 44, -1, 46, -1, 69, -1, 26, 1,
1, 30, -1, 10, 25, 30, -1, 42, 46, -1, 31, -1, 1, 31, -1, 10, 26, 31, -1, 43,
11, 25, 30, -1, 44, 46, -1, -1, 46, 47, 47, -1, 11, 26, 31, -1, 45, 47, -1, -1,
-1, 46, 48, -1, 46, 74, -1, 46, 72, -1, 47, 48, -1, 47, 49, -1, 47, 75, -1, 47,
46, 41, -1, 46, 30, -1, 19, 75, 30, -1, 73, -1, 47, 42, -1, 47, 31, -1, 19, 78,
18, 76, 79, 30, -1, 20, 80, 79, 30, -1, 31, -1, 18, 79, 82, 31, -1, 20, 83, 82,
21, 25, 79, 30, -1, 22, 81, 81, 79, 30, 31, -1, 21, 26, 82, 31, -1, 22, 84, 84,
-1, 23, 49, 30, -1, -1, 49, 25, 50, -1, 82, 31, -1, 24, 50, 31, -1, -1, 50, 26,
-1, 33, 76, -1, 7, 82, 30, -1, 51, 55, 51, -1, -1, 34, 79, -1, 7, 85, 31, -1,
-1, 77, -1, 52, 57, 53, -1, -1, 55, 56, 52, 56, -1, 80, -1, 53, 58, 54, -1, -1,
-1, 55, 74, -1, 55, 72, -1, 55, 30, -1, 56, 57, -1, 56, 75, -1, 56, 73, -1, 56,
55, 41, -1, 18, 76, 79, 30, -1, 19, 75, 31, -1, 56, 42, -1, 18, 79, 82, 31, -1,
30, -1, 17, 30, -1, 20, 25, 79, 30, -1, 19, 78, 31, -1, 17, 31, -1, 20, 26, 82,
-1, 57, 40, -1, 14, 80, 78, -1, 77, -1, 31, -1, -1, 58, 41, -1, 14, 83, 81, -1,
58, 61, 59, -1, -1, 61, 40, -1, 61, 66, 80, -1, 59, 62, 60, -1, -1, 62, 41, -1,
-1, 61, 54, -1, 3, 76, 78, -1, 4, 76, 62, 67, -1, 62, 55, -1, 3, 79, 81, -1,
30, -1, 63, 73, -1, 77, -1, 64, 67, 65, 4, 79, 31, -1, 64, 76, 74, -1, 80, -1,
-1, -1, 67, 40, -1, 67, 66, -1, 67, 54, 65, 68, 66, -1, -1, 68, 41, -1, 68, 67,
-1, 6, 76, 30, -1, 9, 76, 30, -1, 69, -1, 68, 55, -1, 6, 79, 31, -1, 9, 79,
73, -1, 12, 30, -1, 71, 13, -1, -1, 73, 31, -1, 70, 74, -1, 12, 31, -1, 72, 13,
74, -1, 73, 30, -1, 73, 41, -1, 16, 24, -1, -1, 74, 75, -1, 74, 31, -1, 74, 42,
80, 30, -1, -1, 76, 79, -1, 25, -1, 26, -1, 16, 25, 83, 31, -1, -1, 76, 77, -1,
-1, 5, 30, -1, 8, 30, -1, 15, 30, -1, 76, 31, -1, 23, 82, -1, -1, 79, 82, -1,
30, -1, 78, 30, -1, -1, 14, 80, -1, 81, 26, -1, 27, -1, 5, 31, -1, 8, 31, -1,
-1, 81, 33, 81, -1, 81, 27, 81, -1, 29, 15, 31, -1, 31, -1, 81, 31, -1, -1, 14,
80, 28, -1, 34, 80, -1, 80, 31, 80, -1, 83, -1, 84, -1, 84, 34, 84, -1, 84, 28,
80, 32, 80, -1, 25, -1, 26, -1, -1, 25, 84, -1, 30, 83, 29, -1, 35, 83, -1, 83,
-1 32, 83, -1, 83, 33, 83, -1, 26, -1, 27,
-1, -1, 26, -1
}; };
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] = static const yytype_uint16 yyrline[] =
{ {
0, 107, 107, 107, 109, 109, 111, 113, 114, 115, 0, 108, 108, 108, 110, 110, 112, 114, 115, 116,
116, 117, 118, 122, 126, 126, 126, 126, 126, 126, 117, 118, 119, 123, 127, 127, 127, 127, 127, 127,
126, 130, 131, 132, 133, 134, 135, 139, 140, 146, 127, 127, 131, 132, 133, 134, 135, 136, 140, 141,
154, 160, 168, 178, 180, 181, 182, 183, 184, 185, 147, 155, 161, 169, 179, 181, 182, 183, 184, 185,
188, 196, 202, 212, 218, 224, 227, 229, 240, 241, 186, 189, 197, 203, 213, 219, 225, 228, 230, 241,
246, 255, 260, 268, 271, 273, 274, 275, 276, 277, 242, 247, 256, 261, 269, 272, 274, 275, 276, 277,
280, 286, 297, 303, 313, 315, 320, 328, 336, 339, 278, 281, 287, 298, 304, 314, 316, 321, 329, 337,
341, 342, 343, 348, 355, 362, 367, 375, 378, 380, 340, 342, 343, 344, 349, 356, 363, 368, 376, 379,
381, 382, 385, 393, 400, 407, 413, 420, 422, 423, 381, 382, 383, 386, 394, 401, 408, 414, 421, 423,
424, 427, 435, 437, 442, 443, 446, 447, 448, 452, 424, 425, 428, 436, 438, 439, 442, 449, 451, 456,
453, 456, 457, 460, 461, 462, 463, 464, 465, 466, 457, 460, 461, 462, 466, 467, 470, 471, 474, 475,
469, 470, 473, 474 476, 477, 478, 479, 480, 483, 484, 487, 488
}; };
#endif #endif
@ -556,7 +559,7 @@ static const char *const yytname[] =
"T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG", "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG",
"T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS", "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS",
"T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_RANGE", "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_RANGE",
"T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL", "T_VISIBLE", "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL",
"T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL", "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL",
"T_NOT", "$accept", "input", "start", "stmt_list", "option_name", "T_NOT", "$accept", "input", "start", "stmt_list", "option_name",
"common_stmt", "option_error", "config_entry_start", "config_stmt", "common_stmt", "option_error", "config_entry_start", "config_stmt",
@ -567,8 +570,8 @@ static const char *const yytname[] =
"if_entry", "if_end", "if_stmt", "if_block", "mainmenu_stmt", "menu", "if_entry", "if_end", "if_stmt", "if_block", "mainmenu_stmt", "menu",
"menu_entry", "menu_end", "menu_stmt", "menu_block", "source_stmt", "menu_entry", "menu_end", "menu_stmt", "menu_block", "source_stmt",
"comment", "comment_stmt", "help_start", "help", "depends_list", "comment", "comment_stmt", "help_start", "help", "depends_list",
"depends", "prompt_stmt_opt", "prompt", "end", "nl", "if_expr", "expr", "depends", "visibility_list", "visible", "prompt_stmt_opt", "prompt",
"symbol", "word_opt", 0 "end", "nl", "if_expr", "expr", "symbol", "word_opt", 0
}; };
#endif #endif
@ -580,25 +583,25 @@ static const yytype_uint16 yytoknum[] =
0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
285, 286, 287, 288, 289 285, 286, 287, 288, 289, 290
}; };
# endif # endif
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint8 yyr1[] = static const yytype_uint8 yyr1[] =
{ {
0, 35, 36, 36, 37, 37, 38, 38, 38, 38, 0, 36, 37, 37, 38, 38, 39, 39, 39, 39,
38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40,
39, 40, 40, 40, 40, 40, 40, 41, 41, 42, 40, 40, 41, 41, 41, 41, 41, 41, 42, 42,
43, 44, 45, 46, 46, 46, 46, 46, 46, 46, 43, 44, 45, 46, 47, 47, 47, 47, 47, 47,
47, 47, 47, 47, 47, 48, 49, 49, 50, 50, 47, 48, 48, 48, 48, 48, 49, 50, 50, 51,
51, 52, 53, 54, 55, 55, 55, 55, 55, 55, 51, 52, 53, 54, 55, 56, 56, 56, 56, 56,
56, 56, 56, 56, 57, 57, 58, 59, 60, 61, 56, 57, 57, 57, 57, 58, 58, 59, 60, 61,
61, 61, 61, 62, 63, 64, 65, 66, 67, 67, 62, 62, 62, 62, 63, 64, 65, 66, 67, 68,
67, 67, 68, 69, 70, 71, 72, 73, 73, 73, 68, 68, 68, 69, 70, 71, 72, 73, 74, 74,
73, 74, 75, 75, 76, 76, 77, 77, 77, 78, 74, 74, 75, 76, 76, 76, 77, 78, 78, 79,
78, 79, 79, 80, 80, 80, 80, 80, 80, 80, 79, 80, 80, 80, 81, 81, 82, 82, 83, 83,
81, 81, 82, 82 83, 83, 83, 83, 83, 84, 84, 85, 85
}; };
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
@ -606,16 +609,16 @@ static const yytype_uint8 yyr2[] =
{ {
0, 2, 2, 1, 2, 1, 0, 2, 2, 2, 0, 2, 2, 1, 2, 1, 0, 2, 2, 2,
2, 4, 4, 3, 1, 1, 1, 1, 1, 1, 2, 4, 4, 3, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2,
2, 3, 2, 0, 2, 2, 2, 2, 2, 2, 3, 2, 3, 2, 0, 2, 2, 2, 2, 2,
3, 4, 4, 4, 5, 3, 0, 3, 0, 2, 2, 3, 4, 4, 4, 5, 3, 0, 3, 0,
3, 2, 1, 3, 0, 2, 2, 2, 2, 2, 2, 3, 2, 1, 3, 0, 2, 2, 2, 2,
4, 3, 2, 4, 0, 2, 3, 1, 3, 0, 2, 4, 3, 2, 4, 0, 2, 3, 1, 3,
2, 2, 2, 3, 3, 2, 1, 3, 0, 2, 0, 2, 2, 2, 3, 3, 3, 1, 3, 0,
2, 2, 3, 3, 2, 2, 2, 0, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 0, 2,
2, 4, 0, 2, 1, 1, 2, 2, 2, 1, 2, 2, 4, 0, 2, 2, 2, 0, 2, 1,
2, 0, 2, 1, 3, 3, 3, 2, 3, 3, 1, 2, 2, 2, 1, 2, 0, 2, 1, 3,
1, 1, 0, 1 3, 3, 2, 3, 3, 1, 1, 0, 1
}; };
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@ -623,165 +626,172 @@ static const yytype_uint8 yyr2[] =
means the default is an error. */ means the default is an error. */
static const yytype_uint8 yydefact[] = static const yytype_uint8 yydefact[] =
{ {
6, 0, 99, 0, 3, 0, 6, 6, 94, 95, 6, 0, 104, 0, 3, 0, 6, 6, 99, 100,
0, 1, 0, 0, 0, 0, 112, 0, 0, 0, 0, 1, 0, 0, 0, 0, 117, 0, 0, 0,
0, 0, 0, 14, 18, 15, 16, 20, 17, 19, 0, 0, 0, 14, 18, 15, 16, 20, 17, 19,
0, 21, 0, 7, 33, 24, 33, 25, 54, 64, 21, 0, 22, 0, 7, 34, 25, 34, 26, 55,
8, 69, 22, 87, 78, 9, 26, 87, 23, 10, 65, 8, 70, 23, 93, 79, 9, 27, 88, 24,
0, 100, 2, 73, 13, 0, 96, 0, 113, 0, 10, 0, 105, 2, 74, 13, 0, 101, 0, 118,
97, 0, 0, 0, 110, 111, 0, 0, 0, 103, 0, 102, 0, 0, 0, 115, 116, 0, 0, 0,
98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 103, 0, 0, 0, 0, 0, 0, 0, 88,
0, 74, 82, 50, 83, 29, 31, 0, 107, 0, 0, 0, 75, 83, 51, 84, 30, 32, 0, 112,
0, 66, 0, 0, 11, 12, 0, 0, 0, 0, 0, 0, 67, 0, 0, 11, 12, 0, 0, 0,
92, 0, 0, 0, 46, 0, 39, 38, 34, 35, 0, 97, 0, 0, 0, 47, 0, 40, 39, 35,
0, 37, 36, 0, 0, 92, 0, 58, 59, 55, 36, 0, 38, 37, 0, 0, 97, 0, 59, 60,
57, 56, 65, 53, 52, 70, 72, 68, 71, 67, 56, 58, 57, 66, 54, 53, 71, 73, 69, 72,
89, 90, 88, 79, 81, 77, 80, 76, 106, 108, 68, 106, 95, 0, 94, 80, 82, 78, 81, 77,
109, 105, 104, 28, 85, 0, 101, 0, 101, 101, 90, 91, 89, 111, 113, 114, 110, 109, 29, 86,
101, 0, 0, 0, 86, 62, 101, 0, 101, 0, 0, 106, 0, 106, 106, 106, 0, 0, 0, 87,
0, 0, 40, 93, 0, 0, 101, 48, 45, 27, 63, 106, 0, 106, 0, 96, 0, 0, 41, 98,
0, 61, 0, 91, 102, 41, 42, 43, 0, 0, 0, 0, 106, 49, 46, 28, 0, 62, 0, 107,
47, 60, 63, 44, 49 92, 42, 43, 44, 0, 0, 48, 61, 64, 45,
50
}; };
/* YYDEFGOTO[NTERM-NUM]. */ /* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] = static const yytype_int16 yydefgoto[] =
{ {
-1, 3, 4, 5, 32, 33, 107, 34, 35, 36, -1, 3, 4, 5, 33, 34, 108, 35, 36, 37,
37, 73, 108, 109, 152, 180, 38, 39, 123, 40, 38, 74, 109, 110, 157, 186, 39, 40, 124, 41,
75, 119, 76, 41, 127, 42, 77, 6, 43, 44, 76, 120, 77, 42, 128, 43, 78, 6, 44, 45,
135, 45, 79, 46, 47, 48, 110, 111, 78, 112, 137, 46, 80, 47, 48, 49, 111, 112, 81, 113,
147, 148, 49, 7, 161, 68, 69, 59 79, 134, 152, 153, 50, 7, 165, 69, 70, 60
}; };
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */ STATE-NUM. */
#define YYPACT_NINF -89 #define YYPACT_NINF -90
static const yytype_int16 yypact[] = static const yytype_int16 yypact[] =
{ {
3, 4, -89, 20, -89, 100, -89, 7, -89, -89, 4, 42, -90, 96, -90, 111, -90, 15, -90, -90,
-8, -89, 17, 4, 28, 4, 37, 36, 4, 68, 75, -90, 82, 42, 104, 42, 110, 107, 42, 115,
87, -18, 69, -89, -89, -89, -89, -89, -89, -89, 125, -4, 121, -90, -90, -90, -90, -90, -90, -90,
128, -89, 138, -89, -89, -89, -89, -89, -89, -89, -90, 162, -90, 163, -90, -90, -90, -90, -90, -90,
-89, -89, -89, -89, -89, -89, -89, -89, -89, -89, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
127, -89, -89, 110, -89, 126, -89, 136, -89, 137, -90, 139, -90, -90, 138, -90, 142, -90, 143, -90,
-89, 147, 150, 152, -89, -89, -18, -18, 171, -14, 152, -90, 164, 167, 168, -90, -90, -4, -4, 77,
-89, 153, 157, 34, 67, 180, 233, 220, 207, 220, -18, -90, 177, 185, 33, 71, 195, 247, 236, -2,
154, -89, -89, -89, -89, -89, -89, 0, -89, -18, 236, 171, -90, -90, -90, -90, -90, -90, 41, -90,
-18, 110, 44, 44, -89, -89, 163, 174, 182, 4, -4, -4, 138, 97, 97, -90, -90, 186, 187, 194,
4, -18, 194, 44, -89, 219, -89, -89, -89, -89, 42, 42, -4, 196, 97, -90, 219, -90, -90, -90,
223, -89, -89, 203, 4, 4, 215, -89, -89, -89, -90, 210, -90, -90, 204, 42, 42, 199, -90, -90,
-89, -89, -89, -89, -89, -89, -89, -89, -89, -89, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
-89, -89, -89, -89, -89, -89, -89, -89, -89, 213, -90, 222, -90, 223, -90, -90, -90, -90, -90, -90,
-89, -89, -89, -89, -89, -18, 232, 227, 232, -5, -90, -90, -90, -90, 215, -90, -90, -90, -90, -90,
232, 44, 35, 234, -89, -89, 232, 235, 232, 224, -4, 222, 228, 222, -5, 222, 97, 35, 229, -90,
-18, 236, -89, -89, 237, 238, 232, 216, -89, -89, -90, 222, 232, 222, -4, -90, 135, 233, -90, -90,
240, -89, 241, -89, 71, -89, -89, -89, 242, 4, 234, 235, 222, 240, -90, -90, 237, -90, 239, -13,
-89, -89, -89, -89, -89 -90, -90, -90, -90, 244, 42, -90, -90, -90, -90,
-90
}; };
/* YYPGOTO[NTERM-NUM]. */ /* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] = static const yytype_int16 yypgoto[] =
{ {
-89, -89, 255, 267, -89, 47, -57, -89, -89, -89, -90, -90, 269, 271, -90, 23, -70, -90, -90, -90,
-89, 239, -89, -89, -89, -89, -89, -89, -89, 130, -90, 243, -90, -90, -90, -90, -90, -90, -90, -48,
-89, -89, -89, -89, -89, -89, -89, -89, -89, -89, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
-89, 181, -89, -89, -89, -89, -89, 199, 229, 16, -90, -20, -90, -90, -90, -90, -90, 206, 205, -68,
162, -1, 74, -7, 103, -65, -88, -89 -90, -90, 169, -1, 27, -7, 118, -66, -89, -90
}; };
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which positive, shift that token. If negative, reduce the rule which
number is the opposite. If zero, do what YYDEFACT says. number is the opposite. If zero, do what YYDEFACT says.
If YYTABLE_NINF, syntax error. */ If YYTABLE_NINF, syntax error. */
#define YYTABLE_NINF -85 #define YYTABLE_NINF -86
static const yytype_int16 yytable[] = static const yytype_int16 yytable[] =
{ {
10, 87, 88, 53, 141, 142, 1, 64, 65, 160, 10, 88, 89, 54, 146, 147, 119, 1, 122, 164,
1, 66, 55, 92, 57, 151, 67, 61, 118, 93, 93, 141, 56, 142, 58, 156, 94, 62, 1, 90,
11, 131, 2, 131, 139, 140, 89, 90, 138, 8, 91, 131, 65, 66, 144, 145, 67, 90, 91, 132,
9, 89, 90, 2, -30, 96, 149, 51, -30, -30, 127, 68, 136, -31, 97, 2, 154, -31, -31, -31,
-30, -30, -30, -30, -30, -30, 97, 54, -30, -30, -31, -31, -31, -31, -31, 98, 52, -31, -31, 99,
98, -30, 99, 100, 101, 102, 103, 104, 56, 105, -31, 100, 101, 102, 103, 104, -31, 105, 129, 106,
167, 91, 58, 166, 106, 168, 60, -32, 96, 64, 138, 173, 92, 141, 107, 142, 174, 172, 8, 9,
65, -32, -32, -32, -32, -32, -32, -32, -32, 97, 143, -33, 97, 90, 91, -33, -33, -33, -33, -33,
159, -32, -32, 98, -32, 99, 100, 101, 102, 103, -33, -33, -33, 98, 166, -33, -33, 99, -33, 100,
104, 121, 105, 62, 132, 174, 132, 106, 146, 70, 101, 102, 103, 104, -33, 105, 11, 106, 179, 151,
-5, 12, 89, 90, 13, 14, 15, 16, 17, 18, 123, 126, 107, 135, 125, 130, 2, 139, 2, 90,
19, 20, 63, 156, 21, 22, 23, 24, 25, 26, 91, -5, 12, 55, 161, 13, 14, 15, 16, 17,
27, 28, 29, 122, 125, 30, 133, -4, 12, 71, 18, 19, 20, 65, 66, 21, 22, 23, 24, 25,
31, 13, 14, 15, 16, 17, 18, 19, 20, 72, 26, 27, 28, 29, 30, 57, 59, 31, 61, -4,
51, 21, 22, 23, 24, 25, 26, 27, 28, 29, 12, 63, 32, 13, 14, 15, 16, 17, 18, 19,
124, 129, 30, 137, -84, 96, 81, 31, -84, -84, 20, 64, 71, 21, 22, 23, 24, 25, 26, 27,
-84, -84, -84, -84, -84, -84, 82, 83, -84, -84, 28, 29, 30, 72, 73, 31, 180, 90, 91, 52,
98, -84, -84, -84, -84, -84, -84, 84, 184, 105, 32, -85, 97, 82, 83, -85, -85, -85, -85, -85,
85, 96, 86, 94, 130, -51, -51, 95, -51, -51, -85, -85, -85, 84, 190, -85, -85, 99, -85, -85,
-51, -51, 97, 143, -51, -51, 98, 113, 114, 115, -85, -85, -85, -85, -85, 85, 97, 106, 86, 87,
116, 2, 89, 90, 144, 105, 145, 126, 96, 134, -52, -52, 140, -52, -52, -52, -52, 98, 95, -52,
117, -75, -75, -75, -75, -75, -75, -75, -75, 150, -52, 99, 114, 115, 116, 117, 96, 148, 149, 150,
153, -75, -75, 98, 13, 14, 15, 16, 17, 18, 158, 106, 155, 159, 97, 163, 118, -76, -76, -76,
19, 20, 105, 155, 21, 22, 154, 130, 14, 15, -76, -76, -76, -76, -76, 160, 164, -76, -76, 99,
158, 17, 18, 19, 20, 90, 160, 21, 22, 179, 13, 14, 15, 16, 17, 18, 19, 20, 91, 106,
31, 163, 164, 165, 173, 89, 90, 162, 128, 170, 21, 22, 14, 15, 140, 17, 18, 19, 20, 168,
136, 172, 52, 31, 169, 171, 175, 176, 177, 178, 175, 21, 22, 177, 181, 182, 183, 32, 187, 167,
181, 182, 183, 50, 120, 74, 80, 157 188, 169, 170, 171, 185, 189, 53, 51, 32, 176,
75, 178, 121, 0, 133, 162, 0, 0, 0, 0,
184
}; };
static const yytype_uint8 yycheck[] = static const yytype_int16 yycheck[] =
{ {
1, 66, 67, 10, 92, 93, 3, 25, 26, 14, 1, 67, 68, 10, 93, 94, 76, 3, 76, 14,
3, 29, 13, 27, 15, 103, 34, 18, 75, 33, 28, 81, 13, 81, 15, 104, 34, 18, 3, 32,
0, 78, 30, 80, 89, 90, 31, 32, 28, 25, 33, 23, 26, 27, 90, 91, 30, 32, 33, 31,
26, 31, 32, 30, 0, 1, 101, 30, 4, 5, 78, 35, 80, 0, 1, 31, 102, 4, 5, 6,
6, 7, 8, 9, 10, 11, 12, 30, 14, 15, 7, 8, 9, 10, 11, 12, 31, 14, 15, 16,
16, 17, 18, 19, 20, 21, 22, 23, 30, 25, 17, 18, 19, 20, 21, 22, 23, 24, 78, 26,
25, 68, 25, 151, 30, 30, 30, 0, 1, 25, 80, 26, 69, 133, 31, 133, 31, 156, 26, 27,
26, 4, 5, 6, 7, 8, 9, 10, 11, 12, 29, 0, 1, 32, 33, 4, 5, 6, 7, 8,
145, 14, 15, 16, 17, 18, 19, 20, 21, 22, 9, 10, 11, 12, 150, 14, 15, 16, 17, 18,
23, 75, 25, 25, 78, 160, 80, 30, 99, 30, 19, 20, 21, 22, 23, 24, 0, 26, 164, 100,
0, 1, 31, 32, 4, 5, 6, 7, 8, 9, 77, 78, 31, 80, 77, 78, 31, 80, 31, 32,
10, 11, 25, 114, 14, 15, 16, 17, 18, 19, 33, 0, 1, 31, 115, 4, 5, 6, 7, 8,
20, 21, 22, 76, 77, 25, 79, 0, 1, 1, 9, 10, 11, 26, 27, 14, 15, 16, 17, 18,
30, 4, 5, 6, 7, 8, 9, 10, 11, 1, 19, 20, 21, 22, 23, 31, 26, 26, 31, 0,
30, 14, 15, 16, 17, 18, 19, 20, 21, 22, 1, 26, 31, 4, 5, 6, 7, 8, 9, 10,
76, 77, 25, 79, 0, 1, 30, 30, 4, 5, 11, 26, 31, 14, 15, 16, 17, 18, 19, 20,
6, 7, 8, 9, 10, 11, 30, 30, 14, 15, 21, 22, 23, 1, 1, 26, 31, 32, 33, 31,
16, 17, 18, 19, 20, 21, 22, 30, 179, 25, 31, 0, 1, 31, 31, 4, 5, 6, 7, 8,
30, 1, 30, 30, 30, 5, 6, 30, 8, 9, 9, 10, 11, 31, 185, 14, 15, 16, 17, 18,
10, 11, 12, 30, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 23, 31, 1, 26, 31, 31,
20, 30, 31, 32, 30, 25, 24, 77, 1, 79, 5, 6, 31, 8, 9, 10, 11, 12, 31, 14,
30, 4, 5, 6, 7, 8, 9, 10, 11, 25, 15, 16, 17, 18, 19, 20, 31, 31, 31, 25,
1, 14, 15, 16, 4, 5, 6, 7, 8, 9, 1, 26, 26, 13, 1, 26, 31, 4, 5, 6,
10, 11, 25, 30, 14, 15, 13, 30, 5, 6, 7, 8, 9, 10, 11, 31, 14, 14, 15, 16,
25, 8, 9, 10, 11, 32, 14, 14, 15, 33, 4, 5, 6, 7, 8, 9, 10, 11, 33, 26,
30, 148, 149, 150, 30, 31, 32, 30, 77, 156, 14, 15, 5, 6, 31, 8, 9, 10, 11, 31,
79, 158, 7, 30, 30, 30, 30, 30, 30, 166, 31, 14, 15, 31, 31, 31, 31, 31, 31, 151,
30, 30, 30, 6, 75, 36, 47, 115 31, 153, 154, 155, 34, 31, 7, 6, 31, 161,
37, 163, 76, -1, 79, 116, -1, -1, -1, -1,
172
}; };
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */ symbol of state STATE-NUM. */
static const yytype_uint8 yystos[] = static const yytype_uint8 yystos[] =
{ {
0, 3, 30, 36, 37, 38, 62, 78, 25, 26, 0, 3, 31, 37, 38, 39, 63, 81, 26, 27,
76, 0, 1, 4, 5, 6, 7, 8, 9, 10, 79, 0, 1, 4, 5, 6, 7, 8, 9, 10,
11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22,
25, 30, 39, 40, 42, 43, 44, 45, 51, 52, 23, 26, 31, 40, 41, 43, 44, 45, 46, 52,
54, 58, 60, 63, 64, 66, 68, 69, 70, 77, 53, 55, 59, 61, 64, 65, 67, 69, 70, 71,
38, 30, 37, 78, 30, 76, 30, 76, 25, 82, 80, 39, 31, 38, 81, 31, 79, 31, 79, 26,
30, 76, 25, 25, 25, 26, 29, 34, 80, 81, 85, 31, 79, 26, 26, 26, 27, 30, 35, 83,
30, 1, 1, 46, 46, 55, 57, 61, 73, 67, 84, 31, 1, 1, 47, 47, 56, 58, 62, 76,
73, 30, 30, 30, 30, 30, 30, 80, 80, 31, 68, 74, 31, 31, 31, 31, 31, 31, 83, 83,
32, 78, 27, 33, 30, 30, 1, 12, 16, 18, 32, 33, 81, 28, 34, 31, 31, 1, 12, 16,
19, 20, 21, 22, 23, 25, 30, 41, 47, 48, 18, 19, 20, 21, 22, 24, 26, 31, 42, 48,
71, 72, 74, 17, 18, 19, 20, 30, 41, 56, 49, 72, 73, 75, 17, 18, 19, 20, 31, 42,
72, 74, 40, 53, 77, 40, 54, 59, 66, 77, 57, 73, 75, 41, 54, 80, 41, 55, 60, 67,
30, 41, 74, 40, 54, 65, 66, 77, 28, 80, 80, 23, 31, 74, 77, 41, 55, 66, 67, 80,
80, 81, 81, 30, 30, 24, 76, 75, 76, 80, 31, 42, 75, 29, 83, 83, 84, 84, 31, 31,
25, 81, 49, 1, 13, 30, 76, 75, 25, 80, 25, 79, 78, 79, 83, 26, 84, 50, 1, 13,
14, 79, 30, 79, 79, 79, 81, 25, 30, 30, 31, 79, 78, 26, 14, 82, 83, 82, 31, 82,
79, 30, 79, 30, 80, 30, 30, 30, 79, 33, 82, 82, 84, 26, 31, 31, 82, 31, 82, 83,
50, 30, 30, 30, 76 31, 31, 31, 31, 82, 34, 51, 31, 31, 31,
79
}; };
#define yyerrok (yyerrstatus = 0) #define yyerrok (yyerrstatus = 0)
@ -1292,7 +1302,7 @@ yydestruct (yymsg, yytype, yyvaluep)
switch (yytype) switch (yytype)
{ {
case 52: /* "choice_entry" */ case 53: /* "choice_entry" */
{ {
fprintf(stderr, "%s:%d: missing end statement for this entry\n", fprintf(stderr, "%s:%d: missing end statement for this entry\n",
@ -1302,7 +1312,7 @@ yydestruct (yymsg, yytype, yyvaluep)
}; };
break; break;
case 58: /* "if_entry" */ case 59: /* "if_entry" */
{ {
fprintf(stderr, "%s:%d: missing end statement for this entry\n", fprintf(stderr, "%s:%d: missing end statement for this entry\n",
@ -1312,7 +1322,7 @@ yydestruct (yymsg, yytype, yyvaluep)
}; };
break; break;
case 64: /* "menu_entry" */ case 65: /* "menu_entry" */
{ {
fprintf(stderr, "%s:%d: missing end statement for this entry\n", fprintf(stderr, "%s:%d: missing end statement for this entry\n",
@ -1644,17 +1654,17 @@ yyreduce:
{ zconf_error("invalid statement"); ;} { zconf_error("invalid statement"); ;}
break; break;
case 27: case 28:
{ zconf_error("unknown option \"%s\"", (yyvsp[(1) - (3)].string)); ;} { zconf_error("unknown option \"%s\"", (yyvsp[(1) - (3)].string)); ;}
break; break;
case 28: case 29:
{ zconf_error("invalid option"); ;} { zconf_error("invalid option"); ;}
break; break;
case 29: case 30:
{ {
struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0); struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0);
@ -1664,7 +1674,7 @@ yyreduce:
;} ;}
break; break;
case 30: case 31:
{ {
menu_end_entry(); menu_end_entry();
@ -1672,7 +1682,7 @@ yyreduce:
;} ;}
break; break;
case 31: case 32:
{ {
struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0); struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0);
@ -1682,7 +1692,7 @@ yyreduce:
;} ;}
break; break;
case 32: case 33:
{ {
if (current_entry->prompt) if (current_entry->prompt)
@ -1694,7 +1704,7 @@ yyreduce:
;} ;}
break; break;
case 40: case 41:
{ {
menu_set_type((yyvsp[(1) - (3)].id)->stype); menu_set_type((yyvsp[(1) - (3)].id)->stype);
@ -1704,7 +1714,7 @@ yyreduce:
;} ;}
break; break;
case 41: case 42:
{ {
menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr)); menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr));
@ -1712,7 +1722,7 @@ yyreduce:
;} ;}
break; break;
case 42: case 43:
{ {
menu_add_expr(P_DEFAULT, (yyvsp[(2) - (4)].expr), (yyvsp[(3) - (4)].expr)); menu_add_expr(P_DEFAULT, (yyvsp[(2) - (4)].expr), (yyvsp[(3) - (4)].expr));
@ -1724,7 +1734,7 @@ yyreduce:
;} ;}
break; break;
case 43: case 44:
{ {
menu_add_symbol(P_SELECT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr)); menu_add_symbol(P_SELECT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr));
@ -1732,7 +1742,7 @@ yyreduce:
;} ;}
break; break;
case 44: case 45:
{ {
menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[(2) - (5)].symbol), (yyvsp[(3) - (5)].symbol)), (yyvsp[(4) - (5)].expr)); menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[(2) - (5)].symbol), (yyvsp[(3) - (5)].symbol)), (yyvsp[(4) - (5)].expr));
@ -1740,7 +1750,7 @@ yyreduce:
;} ;}
break; break;
case 47: case 48:
{ {
struct kconf_id *id = kconf_id_lookup((yyvsp[(2) - (3)].string), strlen((yyvsp[(2) - (3)].string))); struct kconf_id *id = kconf_id_lookup((yyvsp[(2) - (3)].string), strlen((yyvsp[(2) - (3)].string)));
@ -1752,17 +1762,17 @@ yyreduce:
;} ;}
break; break;
case 48: case 49:
{ (yyval.string) = NULL; ;} { (yyval.string) = NULL; ;}
break; break;
case 49: case 50:
{ (yyval.string) = (yyvsp[(2) - (2)].string); ;} { (yyval.string) = (yyvsp[(2) - (2)].string); ;}
break; break;
case 50: case 51:
{ {
struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), SYMBOL_CHOICE); struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), SYMBOL_CHOICE);
@ -1773,14 +1783,14 @@ yyreduce:
;} ;}
break; break;
case 51: case 52:
{ {
(yyval.menu) = menu_add_menu(); (yyval.menu) = menu_add_menu();
;} ;}
break; break;
case 52: case 53:
{ {
if (zconf_endtoken((yyvsp[(1) - (1)].id), T_CHOICE, T_ENDCHOICE)) { if (zconf_endtoken((yyvsp[(1) - (1)].id), T_CHOICE, T_ENDCHOICE)) {
@ -1790,7 +1800,7 @@ yyreduce:
;} ;}
break; break;
case 60: case 61:
{ {
menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr)); menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr));
@ -1798,7 +1808,7 @@ yyreduce:
;} ;}
break; break;
case 61: case 62:
{ {
if ((yyvsp[(1) - (3)].id)->stype == S_BOOLEAN || (yyvsp[(1) - (3)].id)->stype == S_TRISTATE) { if ((yyvsp[(1) - (3)].id)->stype == S_BOOLEAN || (yyvsp[(1) - (3)].id)->stype == S_TRISTATE) {
@ -1811,7 +1821,7 @@ yyreduce:
;} ;}
break; break;
case 62: case 63:
{ {
current_entry->sym->flags |= SYMBOL_OPTIONAL; current_entry->sym->flags |= SYMBOL_OPTIONAL;
@ -1819,7 +1829,7 @@ yyreduce:
;} ;}
break; break;
case 63: case 64:
{ {
if ((yyvsp[(1) - (4)].id)->stype == S_UNKNOWN) { if ((yyvsp[(1) - (4)].id)->stype == S_UNKNOWN) {
@ -1831,7 +1841,7 @@ yyreduce:
;} ;}
break; break;
case 66: case 67:
{ {
printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
@ -1841,7 +1851,7 @@ yyreduce:
;} ;}
break; break;
case 67: case 68:
{ {
if (zconf_endtoken((yyvsp[(1) - (1)].id), T_IF, T_ENDIF)) { if (zconf_endtoken((yyvsp[(1) - (1)].id), T_IF, T_ENDIF)) {
@ -1851,14 +1861,14 @@ yyreduce:
;} ;}
break; break;
case 73: case 74:
{ {
menu_add_prompt(P_MENU, (yyvsp[(2) - (3)].string), NULL); menu_add_prompt(P_MENU, (yyvsp[(2) - (3)].string), NULL);
;} ;}
break; break;
case 74: case 75:
{ {
menu_add_entry(NULL); menu_add_entry(NULL);
@ -1867,14 +1877,14 @@ yyreduce:
;} ;}
break; break;
case 75: case 76:
{ {
(yyval.menu) = menu_add_menu(); (yyval.menu) = menu_add_menu();
;} ;}
break; break;
case 76: case 77:
{ {
if (zconf_endtoken((yyvsp[(1) - (1)].id), T_MENU, T_ENDMENU)) { if (zconf_endtoken((yyvsp[(1) - (1)].id), T_MENU, T_ENDMENU)) {
@ -1884,7 +1894,7 @@ yyreduce:
;} ;}
break; break;
case 82: case 83:
{ {
printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string)); printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string));
@ -1892,7 +1902,7 @@ yyreduce:
;} ;}
break; break;
case 83: case 84:
{ {
menu_add_entry(NULL); menu_add_entry(NULL);
@ -1901,14 +1911,14 @@ yyreduce:
;} ;}
break; break;
case 84: case 85:
{ {
menu_end_entry(); menu_end_entry();
;} ;}
break; break;
case 85: case 86:
{ {
printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
@ -1916,14 +1926,14 @@ yyreduce:
;} ;}
break; break;
case 86: case 87:
{ {
current_entry->help = (yyvsp[(2) - (2)].string); current_entry->help = (yyvsp[(2) - (2)].string);
;} ;}
break; break;
case 91: case 92:
{ {
menu_add_dep((yyvsp[(3) - (4)].expr)); menu_add_dep((yyvsp[(3) - (4)].expr));
@ -1931,85 +1941,92 @@ yyreduce:
;} ;}
break; break;
case 93: case 96:
{
menu_add_visibility((yyvsp[(2) - (2)].expr));
;}
break;
case 98:
{ {
menu_add_prompt(P_PROMPT, (yyvsp[(1) - (2)].string), (yyvsp[(2) - (2)].expr)); menu_add_prompt(P_PROMPT, (yyvsp[(1) - (2)].string), (yyvsp[(2) - (2)].expr));
;} ;}
break; break;
case 96:
{ (yyval.id) = (yyvsp[(1) - (2)].id); ;}
break;
case 97:
{ (yyval.id) = (yyvsp[(1) - (2)].id); ;}
break;
case 98:
{ (yyval.id) = (yyvsp[(1) - (2)].id); ;}
break;
case 101: case 101:
{ (yyval.expr) = NULL; ;} { (yyval.id) = (yyvsp[(1) - (2)].id); ;}
break; break;
case 102: case 102:
{ (yyval.expr) = (yyvsp[(2) - (2)].expr); ;} { (yyval.id) = (yyvsp[(1) - (2)].id); ;}
break; break;
case 103: case 103:
{ (yyval.expr) = expr_alloc_symbol((yyvsp[(1) - (1)].symbol)); ;} { (yyval.id) = (yyvsp[(1) - (2)].id); ;}
break;
case 104:
{ (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); ;}
break;
case 105:
{ (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); ;}
break; break;
case 106: case 106:
{ (yyval.expr) = (yyvsp[(2) - (3)].expr); ;} { (yyval.expr) = NULL; ;}
break; break;
case 107: case 107:
{ (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[(2) - (2)].expr)); ;} { (yyval.expr) = (yyvsp[(2) - (2)].expr); ;}
break; break;
case 108: case 108:
{ (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;} { (yyval.expr) = expr_alloc_symbol((yyvsp[(1) - (1)].symbol)); ;}
break; break;
case 109: case 109:
{ (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;} { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); ;}
break; break;
case 110: case 110:
{ (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), 0); free((yyvsp[(1) - (1)].string)); ;} { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); ;}
break; break;
case 111: case 111:
{ (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), SYMBOL_CONST); free((yyvsp[(1) - (1)].string)); ;} { (yyval.expr) = (yyvsp[(2) - (3)].expr); ;}
break; break;
case 112: case 112:
{ (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[(2) - (2)].expr)); ;}
break;
case 113:
{ (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
break;
case 114:
{ (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
break;
case 115:
{ (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), 0); free((yyvsp[(1) - (1)].string)); ;}
break;
case 116:
{ (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), SYMBOL_CONST); free((yyvsp[(1) - (1)].string)); ;}
break;
case 117:
{ (yyval.string) = NULL; ;} { (yyval.string) = NULL; ;}
break; break;
@ -2278,6 +2295,7 @@ static const char *zconf_tokenname(int token)
case T_IF: return "if"; case T_IF: return "if";
case T_ENDIF: return "endif"; case T_ENDIF: return "endif";
case T_DEPENDS: return "depends"; case T_DEPENDS: return "depends";
case T_VISIBLE: return "visible";
} }
return "<token>"; return "<token>";
} }

View file

@ -36,7 +36,7 @@ static struct menu *current_menu, *current_entry;
#define YYERROR_VERBOSE #define YYERROR_VERBOSE
#endif #endif
%} %}
%expect 28 %expect 30
%union %union
{ {
@ -68,6 +68,7 @@ static struct menu *current_menu, *current_entry;
%token <id>T_DEFAULT %token <id>T_DEFAULT
%token <id>T_SELECT %token <id>T_SELECT
%token <id>T_RANGE %token <id>T_RANGE
%token <id>T_VISIBLE
%token <id>T_OPTION %token <id>T_OPTION
%token <id>T_ON %token <id>T_ON
%token <string> T_WORD %token <string> T_WORD
@ -123,7 +124,7 @@ stmt_list:
; ;
option_name: option_name:
T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_OPTIONAL | T_RANGE | T_DEFAULT T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_OPTIONAL | T_RANGE | T_DEFAULT | T_VISIBLE
; ;
common_stmt: common_stmt:
@ -359,7 +360,7 @@ menu: T_MENU prompt T_EOL
printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
}; };
menu_entry: menu depends_list menu_entry: menu visibility_list depends_list
{ {
$$ = menu_add_menu(); $$ = menu_add_menu();
}; };
@ -430,6 +431,19 @@ depends: T_DEPENDS T_ON expr T_EOL
printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
}; };
/* visibility option */
visibility_list:
/* empty */
| visibility_list visible
| visibility_list T_EOL
;
visible: T_VISIBLE if_expr
{
menu_add_visibility($2);
};
/* prompt statement */ /* prompt statement */
prompt_stmt_opt: prompt_stmt_opt:
@ -526,6 +540,7 @@ static const char *zconf_tokenname(int token)
case T_IF: return "if"; case T_IF: return "if";
case T_ENDIF: return "endif"; case T_ENDIF: return "endif";
case T_DEPENDS: return "depends"; case T_DEPENDS: return "depends";
case T_VISIBLE: return "visible";
} }
return "<token>"; return "<token>";
} }

View file

@ -22,14 +22,15 @@
*/ */
#include <linux/stringify.h> #include <linux/stringify.h>
#include <asm-generic/vmlinux.lds.h>
.section .init.ramfs,"a" .section .init.ramfs,"a"
__irf_start: __irf_start:
.incbin __stringify(INITRAMFS_IMAGE) .incbin __stringify(INITRAMFS_IMAGE)
__irf_end: __irf_end:
.section .init.ramfs.info,"a" .section .init.ramfs.info,"a"
.globl __initramfs_size .globl VMLINUX_SYMBOL(__initramfs_size)
__initramfs_size: VMLINUX_SYMBOL(__initramfs_size):
#ifdef CONFIG_64BIT #ifdef CONFIG_64BIT
.quad __irf_end - __irf_start .quad __irf_end - __irf_start
#else #else