aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2007-03-23 14:03:35 +0000
committerFelix Fietkau <nbd@openwrt.org>2007-03-23 14:03:35 +0000
commitc48b6508fedea2527548f42095df1e47233243b8 (patch)
tree0cea0004f25e22f35f77db35606c6ba9e9c8e433
parenteaf0c708f2c23265ce9f95d38d3bb1d942d68e3f (diff)
downloadupstream-c48b6508fedea2527548f42095df1e47233243b8.tar.gz
upstream-c48b6508fedea2527548f42095df1e47233243b8.tar.bz2
upstream-c48b6508fedea2527548f42095df1e47233243b8.zip
add 'deselect' property for menuconfig
SVN-Revision: 6647
-rw-r--r--scripts/config/expr.h3
-rw-r--r--scripts/config/lex.zconf.c_shipped4
-rw-r--r--scripts/config/mconf.c19
-rw-r--r--scripts/config/menu.c57
-rw-r--r--scripts/config/symbol.c13
-rw-r--r--scripts/config/zconf.gperf1
-rw-r--r--scripts/config/zconf.hash.c_shipped226
-rw-r--r--scripts/config/zconf.tab.c_shipped593
-rw-r--r--scripts/config/zconf.y9
9 files changed, 483 insertions, 442 deletions
diff --git a/scripts/config/expr.h b/scripts/config/expr.h
index c1c56065b0..ae79d8fad1 100644
--- a/scripts/config/expr.h
+++ b/scripts/config/expr.h
@@ -74,6 +74,7 @@ struct symbol {
struct property *prop;
struct expr *dep, *dep2;
struct expr_value rev_dep;
+ struct expr_value rev_dep_inv;
};
#define for_all_symbols(i, sym) for (i = 0; i < 257; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER)
@@ -100,7 +101,7 @@ struct symbol {
#define SYMBOL_HASHMASK 0xff
enum prop_type {
- P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE, P_SELECT, P_RANGE, P_RESET
+ P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE, P_DESELECT, P_SELECT, P_RANGE, P_RESET
};
struct property {
diff --git a/scripts/config/lex.zconf.c_shipped b/scripts/config/lex.zconf.c_shipped
index 5e01ee5318..42bcdd4562 100644
--- a/scripts/config/lex.zconf.c_shipped
+++ b/scripts/config/lex.zconf.c_shipped
@@ -20,7 +20,6 @@
#include <string.h>
#include <errno.h>
#include <stdlib.h>
-#include <glob.h>
/* end standard C headers. */
@@ -748,6 +747,7 @@ char *zconftext;
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include <glob.h>
#define LKC_DIRECT_LINK
#include "lkc.h"
@@ -2280,7 +2280,7 @@ void zconf_nextfile(const char *name)
filename = files.gl_pathv[i];
file = file_lookup(filename);
- buf = malloc(sizeof(*buf));
+ buf = malloc(sizeof(*buf));
memset(buf, 0, sizeof(*buf));
current_buf->state = YY_CURRENT_BUFFER;
zconfin = zconf_fopen(filename);
diff --git a/scripts/config/mconf.c b/scripts/config/mconf.c
index 74036174fc..8c58b62386 100644
--- a/scripts/config/mconf.c
+++ b/scripts/config/mconf.c
@@ -405,6 +405,7 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym)
sym_get_string_value(sym));
for_all_prompts(sym, prop)
get_prompt_str(r, prop);
+
hit = false;
for_all_properties(sym, prop, P_SELECT) {
if (!hit) {
@@ -416,11 +417,29 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym)
}
if (hit)
str_append(r, "\n");
+
+ hit = false;
+ for_all_properties(sym, prop, P_DESELECT) {
+ if (!hit) {
+ str_append(r, " Deselects: ");
+ hit = true;
+ } else
+ str_printf(r, " && ");
+ expr_gstr_print(prop->expr, r);
+ }
+ if (hit)
+ str_append(r, "\n");
+
if (sym->rev_dep.expr) {
str_append(r, " Selected by: ");
expr_gstr_print(sym->rev_dep.expr, r);
str_append(r, "\n");
}
+ if (sym->rev_dep_inv.expr) {
+ str_append(r, " Deselected by: ");
+ expr_gstr_print(sym->rev_dep_inv.expr, r);
+ str_append(r, "\n");
+ }
str_append(r, "\n\n");
}
diff --git a/scripts/config/menu.c b/scripts/config/menu.c
index 20fda9b2fc..286e25569d 100644
--- a/scripts/config/menu.c
+++ b/scripts/config/menu.c
@@ -74,37 +74,9 @@ void menu_end_menu(void)
current_menu = current_menu->parent;
}
-struct expr *menu_check_dep(struct expr *e)
-{
- if (!e)
- return e;
-
- switch (e->type) {
- case E_NOT:
- e->left.expr = menu_check_dep(e->left.expr);
- break;
- case E_OR:
- case E_AND:
- e->left.expr = menu_check_dep(e->left.expr);
- e->right.expr = menu_check_dep(e->right.expr);
- break;
-/* tristate always enabled */
-#if 0
- case E_SYMBOL:
- /* change 'm' into 'm' && MODULES */
- if (e->left.sym == &symbol_mod)
- return expr_alloc_and(e, expr_alloc_symbol(modules_sym));
- break;
-#endif
- default:
- break;
- }
- return e;
-}
-
void menu_add_dep(struct expr *dep)
{
- current_entry->dep = expr_alloc_and(current_entry->dep, menu_check_dep(dep));
+ current_entry->dep = expr_alloc_and(current_entry->dep, dep);
}
void menu_set_type(int type)
@@ -129,7 +101,7 @@ struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *e
prop->menu = current_entry;
prop->text = prompt;
prop->expr = expr;
- prop->visible.expr = menu_check_dep(dep);
+ prop->visible.expr = dep;
if (prompt) {
if (current_entry->prompt)
@@ -191,6 +163,23 @@ void sym_check_prop(struct symbol *sym)
"accept arguments of boolean and "
"tristate type", sym2->name);
break;
+ case P_DESELECT:
+ sym2 = prop_get_symbol(prop);
+ if (sym->type != S_BOOLEAN && sym->type != S_TRISTATE)
+ prop_warn(prop,
+ "config symbol '%s' uses deselect, but is "
+ "not boolean or tristate", sym->name);
+ else if (sym2->type == S_UNKNOWN)
+ prop_warn(prop,
+ "'deselect' used by config symbol '%s' "
+ "refer to undefined symbol '%s'",
+ sym->name, sym2->name);
+ else if (sym2->type != S_BOOLEAN && sym2->type != S_TRISTATE)
+ prop_warn(prop,
+ "'%s' has wrong type. 'deselect' only "
+ "accept arguments of boolean and "
+ "tristate type", sym2->name);
+ break;
case P_RANGE:
if (sym->type != S_INT && sym->type != S_HEX)
prop_warn(prop, "range is only allowed "
@@ -240,11 +229,12 @@ void menu_finalize(struct menu *parent)
prop = menu->sym->prop;
else
prop = menu->prompt;
+
for (; prop; prop = prop->next) {
if (prop->menu != menu)
continue;
dep = expr_transform(prop->visible.expr);
- dep = expr_alloc_and(expr_copy(basedep), dep);
+ dep = expr_alloc_and(expr_copy(menu->dep), dep);
dep = expr_eliminate_dups(dep);
if (menu->sym && menu->sym->type != S_TRISTATE)
dep = expr_trans_bool(dep);
@@ -254,6 +244,11 @@ void menu_finalize(struct menu *parent)
es->rev_dep.expr = expr_alloc_or(es->rev_dep.expr,
expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep)));
}
+ if (prop->type == P_DESELECT) {
+ struct symbol *es = prop_get_symbol(prop);
+ es->rev_dep_inv.expr = expr_alloc_or(es->rev_dep_inv.expr,
+ expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep)));
+ }
}
}
for (menu = parent->list; menu; menu = menu->next)
diff --git a/scripts/config/symbol.c b/scripts/config/symbol.c
index b79d81ac13..23246ca3d4 100644
--- a/scripts/config/symbol.c
+++ b/scripts/config/symbol.c
@@ -204,13 +204,12 @@ static void sym_calc_visibility(struct symbol *sym)
prop->visible.tri = expr_calc_value(prop->visible.expr);
tri = E_OR(tri, prop->visible.tri);
}
-/* tristate always enabled */
-#if 0
- if (tri == mod && (sym->type != S_TRISTATE || modules_val == no))
-#else
if (tri == mod && (sym->type != S_TRISTATE))
-#endif
tri = yes;
+ if (sym->rev_dep_inv.expr) {
+ if (expr_calc_value(sym->rev_dep_inv.expr) == yes)
+ tri = no;
+ }
if (sym->visible != tri) {
sym->visible = tri;
sym_set_changed(sym);
@@ -814,7 +813,7 @@ struct symbol *sym_check_deps(struct symbol *sym)
goto out;
for (prop = sym->prop; prop; prop = prop->next) {
- if (prop->type == P_CHOICE || prop->type == P_SELECT)
+ if (prop->type == P_CHOICE || prop->type == P_SELECT || prop->type == P_DESELECT)
continue;
sym2 = sym_check_expr_deps(prop->visible.expr);
if (sym2)
@@ -882,6 +881,8 @@ const char *prop_get_type_name(enum prop_type type)
return "choice";
case P_SELECT:
return "select";
+ case P_DESELECT:
+ return "deselect";
case P_RANGE:
return "range";
case P_UNKNOWN:
diff --git a/scripts/config/zconf.gperf b/scripts/config/zconf.gperf
index 3ed8b96fff..faa6530e0f 100644
--- a/scripts/config/zconf.gperf
+++ b/scripts/config/zconf.gperf
@@ -37,6 +37,7 @@ def_boolean, T_DEFAULT, TF_COMMAND, S_BOOLEAN
int, T_TYPE, TF_COMMAND, S_INT
hex, T_TYPE, TF_COMMAND, S_HEX
string, T_TYPE, TF_COMMAND, S_STRING
+deselect, T_DESELECT, TF_COMMAND
select, T_SELECT, TF_COMMAND
enable, T_SELECT, TF_COMMAND
range, T_RANGE, TF_COMMAND
diff --git a/scripts/config/zconf.hash.c_shipped b/scripts/config/zconf.hash.c_shipped
index 4f6fa50554..7b8f074eef 100644
--- a/scripts/config/zconf.hash.c_shipped
+++ b/scripts/config/zconf.hash.c_shipped
@@ -30,7 +30,7 @@
#endif
struct kconf_id;
-/* maximum key range = 45, duplicates = 0 */
+/* maximum key range = 40, duplicates = 0 */
#ifdef __GNUC__
__inline
@@ -44,32 +44,32 @@ kconf_id_hash (register const char *str, register unsigned int len)
{
static unsigned char asso_values[] =
{
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 0, 10, 15,
- 0, 0, 5, 47, 5, 0, 47, 47, 10, 10,
- 0, 20, 20, 20, 5, 15, 0, 15, 47, 47,
- 15, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 35, 0, 20,
+ 5, 0, 5, 42, 0, 25, 42, 42, 5, 5,
+ 10, 0, 25, 15, 0, 0, 0, 10, 42, 42,
+ 0, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42
};
register int hval = len;
@@ -88,71 +88,73 @@ kconf_id_hash (register const char *str, register unsigned int len)
struct kconf_id_strings_t
{
- char kconf_id_strings_str2[sizeof("if")];
- char kconf_id_strings_str3[sizeof("int")];
- char kconf_id_strings_str5[sizeof("endif")];
- char kconf_id_strings_str6[sizeof("enable")];
- char kconf_id_strings_str7[sizeof("endmenu")];
- char kconf_id_strings_str8[sizeof("tristate")];
- char kconf_id_strings_str9[sizeof("endchoice")];
- char kconf_id_strings_str10[sizeof("range")];
- char kconf_id_strings_str12[sizeof("default")];
- char kconf_id_strings_str13[sizeof("def_bool")];
- char kconf_id_strings_str14[sizeof("menu")];
- char kconf_id_strings_str16[sizeof("def_boolean")];
- char kconf_id_strings_str17[sizeof("def_tristate")];
- char kconf_id_strings_str18[sizeof("mainmenu")];
- char kconf_id_strings_str19[sizeof("help")];
- char kconf_id_strings_str20[sizeof("menuconfig")];
- char kconf_id_strings_str21[sizeof("config")];
- char kconf_id_strings_str22[sizeof("on")];
- char kconf_id_strings_str23[sizeof("hex")];
- char kconf_id_strings_str25[sizeof("reset")];
- char kconf_id_strings_str26[sizeof("string")];
- char kconf_id_strings_str27[sizeof("depends")];
- char kconf_id_strings_str28[sizeof("optional")];
- char kconf_id_strings_str31[sizeof("select")];
+ char kconf_id_strings_str2[sizeof("on")];
+ char kconf_id_strings_str3[sizeof("hex")];
+ char kconf_id_strings_str4[sizeof("bool")];
+ char kconf_id_strings_str5[sizeof("reset")];
+ char kconf_id_strings_str6[sizeof("string")];
+ char kconf_id_strings_str7[sizeof("boolean")];
+ char kconf_id_strings_str8[sizeof("optional")];
+ char kconf_id_strings_str9[sizeof("help")];
+ char kconf_id_strings_str10[sizeof("endif")];
+ char kconf_id_strings_str11[sizeof("select")];
+ char kconf_id_strings_str12[sizeof("endmenu")];
+ char kconf_id_strings_str13[sizeof("deselect")];
+ char kconf_id_strings_str14[sizeof("endchoice")];
+ char kconf_id_strings_str15[sizeof("range")];
+ char kconf_id_strings_str16[sizeof("source")];
+ char kconf_id_strings_str17[sizeof("default")];
+ char kconf_id_strings_str18[sizeof("def_bool")];
+ char kconf_id_strings_str19[sizeof("menu")];
+ char kconf_id_strings_str21[sizeof("def_boolean")];
+ char kconf_id_strings_str22[sizeof("def_tristate")];
+ char kconf_id_strings_str23[sizeof("requires")];
+ char kconf_id_strings_str25[sizeof("menuconfig")];
+ char kconf_id_strings_str26[sizeof("choice")];
+ char kconf_id_strings_str27[sizeof("if")];
+ char kconf_id_strings_str28[sizeof("int")];
+ char kconf_id_strings_str31[sizeof("prompt")];
char kconf_id_strings_str32[sizeof("comment")];
- char kconf_id_strings_str33[sizeof("requires")];
- char kconf_id_strings_str34[sizeof("bool")];
- char kconf_id_strings_str36[sizeof("source")];
- char kconf_id_strings_str37[sizeof("boolean")];
- char kconf_id_strings_str41[sizeof("choice")];
- char kconf_id_strings_str46[sizeof("prompt")];
+ char kconf_id_strings_str33[sizeof("tristate")];
+ char kconf_id_strings_str36[sizeof("config")];
+ char kconf_id_strings_str37[sizeof("depends")];
+ char kconf_id_strings_str38[sizeof("mainmenu")];
+ char kconf_id_strings_str41[sizeof("enable")];
};
static struct kconf_id_strings_t kconf_id_strings_contents =
{
- "if",
- "int",
+ "on",
+ "hex",
+ "bool",
+ "reset",
+ "string",
+ "boolean",
+ "optional",
+ "help",
"endif",
- "enable",
+ "select",
"endmenu",
- "tristate",
+ "deselect",
"endchoice",
"range",
+ "source",
"default",
"def_bool",
"menu",
"def_boolean",
"def_tristate",
- "mainmenu",
- "help",
+ "requires",
"menuconfig",
+ "choice",
+ "if",
+ "int",
+ "prompt",
+ "comment",
+ "tristate",
"config",
- "on",
- "hex",
- "reset",
- "string",
"depends",
- "optional",
- "select",
- "comment",
- "requires",
- "bool",
- "source",
- "boolean",
- "choice",
- "prompt"
+ "mainmenu",
+ "enable"
};
#define kconf_id_strings ((const char *) &kconf_id_strings_contents)
#ifdef __GNUC__
@@ -163,55 +165,53 @@ kconf_id_lookup (register const char *str, register unsigned int len)
{
enum
{
- TOTAL_KEYWORDS = 31,
+ TOTAL_KEYWORDS = 32,
MIN_WORD_LENGTH = 2,
MAX_WORD_LENGTH = 12,
MIN_HASH_VALUE = 2,
- MAX_HASH_VALUE = 46
+ MAX_HASH_VALUE = 41
};
static struct kconf_id wordlist[] =
{
{-1}, {-1},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2, T_IF, TF_COMMAND|TF_PARAM},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str3, T_TYPE, TF_COMMAND, S_INT},
- {-1},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str5, T_ENDIF, TF_COMMAND},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str6, T_SELECT, TF_COMMAND},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7, T_ENDMENU, TF_COMMAND},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str8, T_TYPE, TF_COMMAND, S_TRISTATE},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str9, T_ENDCHOICE, TF_COMMAND},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str10, T_RANGE, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2, T_ON, TF_PARAM},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str3, T_TYPE, TF_COMMAND, S_HEX},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str4, T_TYPE, TF_COMMAND, S_BOOLEAN},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str5, T_RESET, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str6, T_TYPE, TF_COMMAND, S_STRING},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7, T_TYPE, TF_COMMAND, S_BOOLEAN},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str8, T_OPTIONAL, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str9, T_HELP, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str10, T_ENDIF, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str11, T_SELECT, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12, T_ENDMENU, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13, T_DESELECT, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14, T_ENDCHOICE, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str15, T_RANGE, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str16, T_SOURCE, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17, T_DEFAULT, TF_COMMAND, S_UNKNOWN},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18, T_DEFAULT, TF_COMMAND, S_BOOLEAN},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str19, T_MENU, TF_COMMAND},
{-1},
- {(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_str14, T_MENU, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21, T_DEFAULT, TF_COMMAND, S_BOOLEAN},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22, T_DEFAULT, TF_COMMAND, S_TRISTATE},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23, T_REQUIRES, TF_COMMAND},
{-1},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str16, T_DEFAULT, TF_COMMAND, S_BOOLEAN},
- {(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_MAINMENU, TF_COMMAND},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str19, T_HELP, TF_COMMAND},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str20, T_MENUCONFIG, TF_COMMAND},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21, T_CONFIG, TF_COMMAND},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22, T_ON, TF_PARAM},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23, T_TYPE, TF_COMMAND, S_HEX},
- {-1},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str25, T_RESET, TF_COMMAND},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str26, T_TYPE, TF_COMMAND, S_STRING},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_DEPENDS, TF_COMMAND},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28, T_OPTIONAL, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str25, T_MENUCONFIG, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str26, T_CHOICE, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_IF, TF_COMMAND|TF_PARAM},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28, T_TYPE, TF_COMMAND, S_INT},
{-1}, {-1},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str31, T_SELECT, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str31, T_PROMPT, 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_REQUIRES, TF_COMMAND},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str34, T_TYPE, TF_COMMAND, S_BOOLEAN},
- {-1},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36, T_SOURCE, TF_COMMAND},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str37, T_TYPE, TF_COMMAND, S_BOOLEAN},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str41, T_CHOICE, TF_COMMAND},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str46, T_PROMPT, TF_COMMAND}
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str33, T_TYPE, TF_COMMAND, S_TRISTATE},
+ {-1}, {-1},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36, T_CONFIG, TF_COMMAND},
+ {(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_str38, T_MAINMENU, TF_COMMAND},
+ {-1}, {-1},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str41, T_SELECT, TF_COMMAND}
};
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
diff --git a/scripts/config/zconf.tab.c_shipped b/scripts/config/zconf.tab.c_shipped
index c7c0f0c42c..77f392a961 100644
--- a/scripts/config/zconf.tab.c_shipped
+++ b/scripts/config/zconf.tab.c_shipped
@@ -81,20 +81,21 @@
T_PROMPT = 274,
T_TYPE = 275,
T_DEFAULT = 276,
- T_SELECT = 277,
- T_RANGE = 278,
- T_ON = 279,
- T_RESET = 280,
- T_WORD = 281,
- T_WORD_QUOTE = 282,
- T_UNEQUAL = 283,
- T_CLOSE_PAREN = 284,
- T_OPEN_PAREN = 285,
- T_EOL = 286,
- T_OR = 287,
- T_AND = 288,
- T_EQUAL = 289,
- T_NOT = 290
+ T_DESELECT = 277,
+ T_SELECT = 278,
+ T_RANGE = 279,
+ T_ON = 280,
+ T_RESET = 281,
+ T_WORD = 282,
+ T_WORD_QUOTE = 283,
+ T_UNEQUAL = 284,
+ T_CLOSE_PAREN = 285,
+ T_OPEN_PAREN = 286,
+ T_EOL = 287,
+ T_OR = 288,
+ T_AND = 289,
+ T_EQUAL = 290,
+ T_NOT = 291
};
#endif
#define T_MAINMENU 258
@@ -116,20 +117,21 @@
#define T_PROMPT 274
#define T_TYPE 275
#define T_DEFAULT 276
-#define T_SELECT 277
-#define T_RANGE 278
-#define T_ON 279
-#define T_RESET 280
-#define T_WORD 281
-#define T_WORD_QUOTE 282
-#define T_UNEQUAL 283
-#define T_CLOSE_PAREN 284
-#define T_OPEN_PAREN 285
-#define T_EOL 286
-#define T_OR 287
-#define T_AND 288
-#define T_EQUAL 289
-#define T_NOT 290
+#define T_DESELECT 277
+#define T_SELECT 278
+#define T_RANGE 279
+#define T_ON 280
+#define T_RESET 281
+#define T_WORD 282
+#define T_WORD_QUOTE 283
+#define T_UNEQUAL 284
+#define T_CLOSE_PAREN 285
+#define T_OPEN_PAREN 286
+#define T_EOL 287
+#define T_OR 288
+#define T_AND 289
+#define T_EQUAL 290
+#define T_NOT 291
@@ -319,20 +321,20 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 3
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 271
+#define YYLAST 285
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 36
+#define YYNTOKENS 37
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 42
/* YYNRULES -- Number of rules. */
-#define YYNRULES 106
+#define YYNRULES 108
/* YYNRULES -- Number of states. */
-#define YYNSTATES 179
+#define YYNSTATES 184
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
-#define YYMAXUTOK 290
+#define YYMAXUTOK 291
#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -369,7 +371,7 @@ static const unsigned char yytranslate[] =
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35
+ 35, 36
};
#if YYDEBUG
@@ -379,68 +381,69 @@ static const unsigned short int yyprhs[] =
{
0, 0, 3, 5, 6, 9, 12, 15, 20, 23,
28, 33, 37, 39, 41, 43, 45, 47, 49, 51,
- 53, 55, 57, 59, 61, 63, 65, 69, 72, 76,
- 79, 83, 86, 87, 90, 93, 96, 99, 102, 106,
- 111, 116, 121, 127, 130, 133, 135, 139, 140, 143,
- 146, 149, 152, 155, 160, 164, 167, 171, 176, 177,
- 180, 184, 186, 190, 191, 194, 197, 200, 204, 207,
- 209, 213, 214, 217, 220, 223, 227, 231, 234, 237,
- 240, 241, 244, 247, 250, 255, 259, 263, 264, 267,
- 269, 271, 274, 277, 280, 282, 285, 286, 289, 291,
- 295, 299, 303, 306, 310, 314, 316
+ 53, 55, 57, 59, 61, 63, 65, 67, 71, 74,
+ 78, 81, 85, 88, 89, 92, 95, 98, 101, 104,
+ 108, 113, 118, 123, 128, 134, 137, 140, 142, 146,
+ 147, 150, 153, 156, 159, 162, 167, 171, 174, 178,
+ 183, 184, 187, 191, 193, 197, 198, 201, 204, 207,
+ 211, 214, 216, 220, 221, 224, 227, 230, 234, 238,
+ 241, 244, 247, 248, 251, 254, 257, 262, 266, 270,
+ 271, 274, 276, 278, 281, 284, 287, 289, 292, 293,
+ 296, 298, 302, 306, 310, 313, 317, 321, 323
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yysigned_char yyrhs[] =
{
- 37, 0, -1, 38, -1, -1, 38, 40, -1, 38,
- 51, -1, 38, 62, -1, 38, 3, 72, 74, -1,
- 38, 73, -1, 38, 26, 1, 31, -1, 38, 39,
- 1, 31, -1, 38, 1, 31, -1, 16, -1, 19,
- -1, 20, -1, 22, -1, 18, -1, 23, -1, 21,
- -1, 25, -1, 31, -1, 57, -1, 66, -1, 43,
- -1, 45, -1, 64, -1, 26, 1, 31, -1, 1,
- 31, -1, 10, 26, 31, -1, 42, 46, -1, 11,
- 26, 31, -1, 44, 46, -1, -1, 46, 47, -1,
- 46, 70, -1, 46, 68, -1, 46, 41, -1, 46,
- 31, -1, 20, 71, 31, -1, 19, 72, 75, 31,
- -1, 21, 76, 75, 31, -1, 22, 26, 75, 31,
- -1, 23, 77, 77, 75, 31, -1, 7, 31, -1,
- 48, 52, -1, 73, -1, 49, 54, 50, -1, -1,
- 52, 53, -1, 52, 70, -1, 52, 68, -1, 52,
- 31, -1, 52, 41, -1, 19, 72, 75, 31, -1,
- 20, 71, 31, -1, 18, 31, -1, 25, 75, 31,
- -1, 21, 26, 75, 31, -1, -1, 54, 40, -1,
- 14, 76, 74, -1, 73, -1, 55, 58, 56, -1,
- -1, 58, 40, -1, 58, 62, -1, 58, 51, -1,
- 4, 72, 31, -1, 59, 69, -1, 73, -1, 60,
- 63, 61, -1, -1, 63, 40, -1, 63, 62, -1,
- 63, 51, -1, 6, 72, 31, -1, 9, 72, 31,
- -1, 65, 69, -1, 12, 31, -1, 67, 13, -1,
- -1, 69, 70, -1, 69, 31, -1, 69, 41, -1,
- 16, 24, 76, 31, -1, 16, 76, 31, -1, 17,
- 76, 31, -1, -1, 72, 75, -1, 26, -1, 27,
- -1, 5, 31, -1, 8, 31, -1, 15, 31, -1,
- 31, -1, 74, 31, -1, -1, 14, 76, -1, 77,
- -1, 77, 34, 77, -1, 77, 28, 77, -1, 30,
- 76, 29, -1, 35, 76, -1, 76, 32, 76, -1,
- 76, 33, 76, -1, 26, -1, 27, -1
+ 38, 0, -1, 39, -1, -1, 39, 41, -1, 39,
+ 52, -1, 39, 63, -1, 39, 3, 73, 75, -1,
+ 39, 74, -1, 39, 27, 1, 32, -1, 39, 40,
+ 1, 32, -1, 39, 1, 32, -1, 16, -1, 19,
+ -1, 20, -1, 22, -1, 23, -1, 18, -1, 24,
+ -1, 21, -1, 26, -1, 32, -1, 58, -1, 67,
+ -1, 44, -1, 46, -1, 65, -1, 27, 1, 32,
+ -1, 1, 32, -1, 10, 27, 32, -1, 43, 47,
+ -1, 11, 27, 32, -1, 45, 47, -1, -1, 47,
+ 48, -1, 47, 71, -1, 47, 69, -1, 47, 42,
+ -1, 47, 32, -1, 20, 72, 32, -1, 19, 73,
+ 76, 32, -1, 21, 77, 76, 32, -1, 22, 27,
+ 76, 32, -1, 23, 27, 76, 32, -1, 24, 78,
+ 78, 76, 32, -1, 7, 32, -1, 49, 53, -1,
+ 74, -1, 50, 55, 51, -1, -1, 53, 54, -1,
+ 53, 71, -1, 53, 69, -1, 53, 32, -1, 53,
+ 42, -1, 19, 73, 76, 32, -1, 20, 72, 32,
+ -1, 18, 32, -1, 26, 76, 32, -1, 21, 27,
+ 76, 32, -1, -1, 55, 41, -1, 14, 77, 75,
+ -1, 74, -1, 56, 59, 57, -1, -1, 59, 41,
+ -1, 59, 63, -1, 59, 52, -1, 4, 73, 32,
+ -1, 60, 70, -1, 74, -1, 61, 64, 62, -1,
+ -1, 64, 41, -1, 64, 63, -1, 64, 52, -1,
+ 6, 73, 32, -1, 9, 73, 32, -1, 66, 70,
+ -1, 12, 32, -1, 68, 13, -1, -1, 70, 71,
+ -1, 70, 32, -1, 70, 42, -1, 16, 25, 77,
+ 32, -1, 16, 77, 32, -1, 17, 77, 32, -1,
+ -1, 73, 76, -1, 27, -1, 28, -1, 5, 32,
+ -1, 8, 32, -1, 15, 32, -1, 32, -1, 75,
+ 32, -1, -1, 14, 77, -1, 78, -1, 78, 35,
+ 78, -1, 78, 29, 78, -1, 31, 77, 30, -1,
+ 36, 77, -1, 77, 33, 77, -1, 77, 34, 77,
+ -1, 27, -1, 28, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const unsigned short int yyrline[] =
{
- 0, 104, 104, 106, 108, 109, 110, 111, 112, 113,
- 114, 118, 122, 122, 122, 122, 122, 122, 122, 122,
- 126, 127, 128, 129, 130, 131, 135, 136, 142, 150,
- 156, 164, 174, 176, 177, 178, 179, 180, 183, 191,
- 197, 207, 213, 221, 230, 235, 243, 246, 248, 249,
- 250, 251, 252, 255, 261, 272, 278, 283, 293, 295,
- 300, 308, 316, 319, 321, 322, 323, 328, 335, 340,
- 348, 351, 353, 354, 355, 358, 366, 373, 380, 386,
- 393, 395, 396, 397, 400, 405, 410, 418, 420, 425,
- 426, 429, 430, 431, 435, 436, 439, 440, 443, 444,
- 445, 446, 447, 448, 449, 452, 453
+ 0, 105, 105, 107, 109, 110, 111, 112, 113, 114,
+ 115, 119, 123, 123, 123, 123, 123, 123, 123, 123,
+ 123, 127, 128, 129, 130, 131, 132, 136, 137, 143,
+ 151, 157, 165, 175, 177, 178, 179, 180, 181, 184,
+ 192, 198, 208, 214, 220, 228, 237, 242, 250, 253,
+ 255, 256, 257, 258, 259, 262, 268, 279, 285, 290,
+ 300, 302, 307, 315, 323, 326, 328, 329, 330, 335,
+ 342, 347, 355, 358, 360, 361, 362, 365, 373, 380,
+ 387, 393, 400, 402, 403, 404, 407, 412, 417, 425,
+ 427, 432, 433, 436, 437, 438, 442, 443, 446, 447,
+ 450, 451, 452, 453, 454, 455, 456, 459, 460
};
#endif
@@ -453,17 +456,18 @@ static const char *const yytname[] =
"T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG",
"T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS",
"T_REQUIRES", "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT",
- "T_SELECT", "T_RANGE", "T_ON", "T_RESET", "T_WORD", "T_WORD_QUOTE",
- "T_UNEQUAL", "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND",
- "T_EQUAL", "T_NOT", "$accept", "input", "stmt_list", "option_name",
- "common_stmt", "option_error", "config_entry_start", "config_stmt",
- "menuconfig_entry_start", "menuconfig_stmt", "config_option_list",
- "config_option", "choice", "choice_entry", "choice_end", "choice_stmt",
- "choice_option_list", "choice_option", "choice_block", "if_entry",
- "if_end", "if_stmt", "if_block", "menu", "menu_entry", "menu_end",
- "menu_stmt", "menu_block", "source_stmt", "comment", "comment_stmt",
- "help_start", "help", "depends_list", "depends", "prompt_stmt_opt",
- "prompt", "end", "nl", "if_expr", "expr", "symbol", 0
+ "T_DESELECT", "T_SELECT", "T_RANGE", "T_ON", "T_RESET", "T_WORD",
+ "T_WORD_QUOTE", "T_UNEQUAL", "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL",
+ "T_OR", "T_AND", "T_EQUAL", "T_NOT", "$accept", "input", "stmt_list",
+ "option_name", "common_stmt", "option_error", "config_entry_start",
+ "config_stmt", "menuconfig_entry_start", "menuconfig_stmt",
+ "config_option_list", "config_option", "choice", "choice_entry",
+ "choice_end", "choice_stmt", "choice_option_list", "choice_option",
+ "choice_block", "if_entry", "if_end", "if_stmt", "if_block", "menu",
+ "menu_entry", "menu_end", "menu_stmt", "menu_block", "source_stmt",
+ "comment", "comment_stmt", "help_start", "help", "depends_list",
+ "depends", "prompt_stmt_opt", "prompt", "end", "nl", "if_expr", "expr",
+ "symbol", 0
};
#endif
@@ -475,24 +479,24 @@ static const unsigned short int yytoknum[] =
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290
+ 285, 286, 287, 288, 289, 290, 291
};
# endif
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const unsigned char yyr1[] =
{
- 0, 36, 37, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 39, 39, 39, 39, 39, 39, 39, 39,
- 40, 40, 40, 40, 40, 40, 41, 41, 42, 43,
- 44, 45, 46, 46, 46, 46, 46, 46, 47, 47,
- 47, 47, 47, 48, 49, 50, 51, 52, 52, 52,
- 52, 52, 52, 53, 53, 53, 53, 53, 54, 54,
- 55, 56, 57, 58, 58, 58, 58, 59, 60, 61,
- 62, 63, 63, 63, 63, 64, 65, 66, 67, 68,
- 69, 69, 69, 69, 70, 70, 70, 71, 71, 72,
- 72, 73, 73, 73, 74, 74, 75, 75, 76, 76,
- 76, 76, 76, 76, 76, 77, 77
+ 0, 37, 38, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 41, 41, 41, 41, 41, 41, 42, 42, 43,
+ 44, 45, 46, 47, 47, 47, 47, 47, 47, 48,
+ 48, 48, 48, 48, 48, 49, 50, 51, 52, 53,
+ 53, 53, 53, 53, 53, 54, 54, 54, 54, 54,
+ 55, 55, 56, 57, 58, 59, 59, 59, 59, 60,
+ 61, 62, 63, 64, 64, 64, 64, 65, 66, 67,
+ 68, 69, 70, 70, 70, 70, 71, 71, 71, 72,
+ 72, 73, 73, 74, 74, 74, 75, 75, 76, 76,
+ 77, 77, 77, 77, 77, 77, 77, 78, 78
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
@@ -500,15 +504,15 @@ static const unsigned char yyr2[] =
{
0, 2, 1, 0, 2, 2, 2, 4, 2, 4,
4, 3, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 3, 2, 3, 2,
- 3, 2, 0, 2, 2, 2, 2, 2, 3, 4,
- 4, 4, 5, 2, 2, 1, 3, 0, 2, 2,
- 2, 2, 2, 4, 3, 2, 3, 4, 0, 2,
- 3, 1, 3, 0, 2, 2, 2, 3, 2, 1,
- 3, 0, 2, 2, 2, 3, 3, 2, 2, 2,
- 0, 2, 2, 2, 4, 3, 3, 0, 2, 1,
- 1, 2, 2, 2, 1, 2, 0, 2, 1, 3,
- 3, 3, 2, 3, 3, 1, 1
+ 1, 1, 1, 1, 1, 1, 1, 3, 2, 3,
+ 2, 3, 2, 0, 2, 2, 2, 2, 2, 3,
+ 4, 4, 4, 4, 5, 2, 2, 1, 3, 0,
+ 2, 2, 2, 2, 2, 4, 3, 2, 3, 4,
+ 0, 2, 3, 1, 3, 0, 2, 2, 2, 3,
+ 2, 1, 3, 0, 2, 2, 2, 3, 3, 2,
+ 2, 2, 0, 2, 2, 2, 4, 3, 3, 0,
+ 2, 1, 1, 2, 2, 2, 1, 2, 0, 2,
+ 1, 3, 3, 3, 2, 3, 3, 1, 1
};
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -517,161 +521,166 @@ static const unsigned char yyr2[] =
static const unsigned char yydefact[] =
{
3, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 12, 16, 13, 14,
- 18, 15, 17, 19, 0, 20, 0, 4, 32, 23,
- 32, 24, 47, 58, 5, 63, 21, 80, 71, 6,
- 25, 80, 22, 8, 11, 89, 90, 0, 0, 91,
- 0, 43, 92, 0, 0, 0, 105, 106, 0, 0,
- 0, 98, 93, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 94, 7, 67, 75, 76, 28, 30,
- 0, 102, 0, 0, 60, 0, 0, 9, 10, 0,
- 0, 0, 0, 0, 87, 0, 0, 0, 0, 37,
- 36, 33, 0, 35, 34, 0, 0, 87, 0, 96,
- 51, 52, 48, 50, 49, 59, 46, 45, 64, 66,
- 62, 65, 61, 82, 83, 81, 72, 74, 70, 73,
- 69, 95, 101, 103, 104, 100, 99, 27, 78, 0,
- 0, 0, 96, 0, 96, 96, 96, 0, 0, 79,
- 55, 96, 0, 96, 0, 0, 0, 85, 86, 0,
- 38, 88, 0, 0, 96, 26, 0, 54, 0, 97,
- 56, 84, 39, 40, 41, 0, 53, 57, 42
+ 0, 0, 0, 0, 0, 0, 12, 17, 13, 14,
+ 19, 15, 16, 18, 20, 0, 21, 0, 4, 33,
+ 24, 33, 25, 49, 60, 5, 65, 22, 82, 73,
+ 6, 26, 82, 23, 8, 11, 91, 92, 0, 0,
+ 93, 0, 45, 94, 0, 0, 0, 107, 108, 0,
+ 0, 0, 100, 95, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96, 7, 69, 77, 78, 29,
+ 31, 0, 104, 0, 0, 62, 0, 0, 9, 10,
+ 0, 0, 0, 0, 0, 89, 0, 0, 0, 0,
+ 0, 38, 37, 34, 0, 36, 35, 0, 0, 89,
+ 0, 98, 53, 54, 50, 52, 51, 61, 48, 47,
+ 66, 68, 64, 67, 63, 84, 85, 83, 74, 76,
+ 72, 75, 71, 97, 103, 105, 106, 102, 101, 28,
+ 80, 0, 0, 0, 98, 0, 98, 98, 98, 98,
+ 0, 0, 81, 57, 98, 0, 98, 0, 0, 0,
+ 87, 88, 0, 39, 90, 0, 0, 0, 98, 27,
+ 0, 56, 0, 99, 58, 86, 40, 41, 42, 43,
+ 0, 55, 59, 44
};
/* YYDEFGOTO[NTERM-NUM]. */
static const short int yydefgoto[] =
{
- -1, 1, 2, 26, 27, 100, 28, 29, 30, 31,
- 65, 101, 32, 33, 116, 34, 67, 112, 68, 35,
- 120, 36, 69, 37, 38, 128, 39, 71, 40, 41,
- 42, 102, 103, 70, 104, 143, 144, 43, 74, 155,
- 60, 61
+ -1, 1, 2, 27, 28, 102, 29, 30, 31, 32,
+ 66, 103, 33, 34, 118, 35, 68, 114, 69, 36,
+ 122, 37, 70, 38, 39, 130, 40, 72, 41, 42,
+ 43, 104, 105, 71, 106, 145, 146, 44, 75, 158,
+ 61, 62
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -134
+#define YYPACT_NINF -80
static const short int yypact[] =
{
- -134, 2, 160, -134, -16, 53, 53, -14, 53, -8,
- -1, 53, 26, 63, 60, 73, -134, -134, -134, -134,
- -134, -134, -134, -134, 114, -134, 125, -134, -134, -134,
- -134, -134, -134, -134, -134, -134, -134, -134, -134, -134,
- -134, -134, -134, -134, -134, -134, -134, 124, 127, -134,
- 128, -134, -134, 141, 142, 146, -134, -134, 60, 60,
- 3, -18, -134, 153, 159, 39, 102, 187, 226, 215,
- 67, 215, 131, -134, 163, -134, -134, -134, -134, -134,
- 34, -134, 60, 60, 163, 103, 103, -134, -134, 169,
- 186, 218, 60, 53, 53, 60, 201, 103, 227, -134,
- -134, -134, 220, -134, -134, 207, 53, 53, 213, 229,
- -134, -134, -134, -134, -134, -134, -134, -134, -134, -134,
- -134, -134, -134, -134, -134, -134, -134, -134, -134, -134,
- -134, -134, -134, 214, -134, -134, -134, -134, -134, 60,
- 178, 183, 229, 224, 229, 0, 229, 103, 228, -134,
- -134, 229, 230, 229, 60, 231, 219, -134, -134, 232,
- -134, -134, 233, 234, 229, -134, 235, -134, 236, 111,
- -134, -134, -134, -134, -134, 237, -134, -134, -134
+ -80, 2, 164, -80, -22, 105, 105, -6, 105, 0,
+ 7, 105, 17, 28, 70, 35, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, 69, -80, 78, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, 62, 68,
+ -80, 85, -80, -80, 97, 127, 144, -80, -80, 70,
+ 70, 188, -8, -80, 149, 163, 42, 104, 192, 67,
+ 221, 8, 221, 134, -80, 167, -80, -80, -80, -80,
+ -80, 50, -80, 70, 70, 167, 119, 119, -80, -80,
+ 173, 184, 60, 70, 105, 105, 70, 65, 150, 119,
+ 232, -80, -80, -80, 210, -80, -80, 202, 105, 105,
+ 231, 224, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, 226, -80, -80, -80, -80,
+ -80, 70, 211, 218, 224, 230, 224, -3, 224, 224,
+ 119, 233, -80, -80, 224, 234, 224, 70, 235, 222,
+ -80, -80, 236, -80, -80, 237, 238, 239, 224, -80,
+ 240, -80, 241, 129, -80, -80, -80, -80, -80, -80,
+ 242, -80, -80, -80
};
/* YYPGOTO[NTERM-NUM]. */
static const short int yypgoto[] =
{
- -134, -134, -134, -134, 23, -46, -134, -134, -134, -134,
- 239, -134, -134, -134, -134, 118, -134, -134, -134, -134,
- -134, -134, -134, -134, -134, -134, 185, -134, -134, -134,
- -134, -134, 182, 217, -45, 164, -5, 28, 200, -133,
- -54, -78
+ -80, -80, -80, -80, -36, 22, -80, -80, -80, -80,
+ 244, -80, -80, -80, -80, 176, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, 187, -80, -80, -80,
+ -80, -80, 195, 243, 121, 155, -5, 145, 215, 93,
+ -55, -79
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which
number is the opposite. If zero, do what YYDEFACT says.
If YYTABLE_NINF, syntax error. */
-#define YYTABLE_NINF -78
+#define YYTABLE_NINF -80
static const short int yytable[] =
{
- 47, 48, 3, 50, 80, 81, 53, 135, 136, 159,
- 85, 161, 162, 163, 154, 44, 86, 49, 166, 147,
- 168, 111, 114, 51, 124, 125, 124, 125, 133, 134,
- 52, 175, 82, 83, 73, 82, 83, 140, 141, -29,
- 89, 145, -29, -29, -29, -29, -29, -29, -29, -29,
- -29, 90, 54, -29, -29, 91, 92, -29, 93, 94,
- 95, 96, 97, 132, -29, 98, 82, 83, 89, 164,
- 99, -68, -68, -68, -68, -68, -68, -68, -68, 45,
- 46, -68, -68, 91, 92, 156, 56, 57, 142, 55,
- 58, 115, 118, 98, 126, 59, 117, 122, 123, 130,
- 169, 151, -31, 89, 62, -31, -31, -31, -31, -31,
- -31, -31, -31, -31, 90, 63, -31, -31, 91, 92,
- -31, 93, 94, 95, 96, 97, 64, -31, 98, 56,
- 57, -77, 89, 99, -77, -77, -77, -77, -77, -77,
- -77, -77, -77, 82, 83, -77, -77, 91, 92, -77,
- -77, -77, -77, -77, -77, 73, -77, 98, 75, 76,
- -2, 4, 123, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 77, 78, 14, 15, 16, 79, 17, 18,
- 19, 20, 21, 22, 87, 23, 24, 119, 89, 127,
- 88, 25, -44, -44, 131, -44, -44, -44, -44, 90,
- 137, -44, -44, 91, 92, 105, 106, 107, 108, 157,
- 82, 83, 109, 98, 158, 82, 83, 138, 110, 6,
- 7, 8, 9, 10, 11, 12, 13, 146, 148, 14,
- 15, 7, 8, 149, 10, 11, 12, 13, 150, 153,
- 14, 15, 139, 154, 56, 57, 25, 83, 58, 113,
- 171, 82, 83, 59, 121, 160, 129, 25, 72, 165,
- 84, 167, 170, 172, 173, 174, 176, 177, 178, 66,
- 0, 152
+ 48, 49, 3, 51, 81, 82, 54, 137, 138, 90,
+ 45, 157, -70, -70, -70, -70, -70, -70, -70, -70,
+ 150, 86, -70, -70, 92, 93, 50, 87, 135, 136,
+ 83, 84, 52, 117, 120, 100, 128, 142, 143, 53,
+ 125, 147, -30, 90, 55, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, 91, 56, -30, -30, 92, 93,
+ -30, 94, 95, 96, 97, 98, 99, 63, -30, 100,
+ 64, 168, 7, 8, 101, 10, 11, 12, 13, 65,
+ 134, 14, 15, 83, 84, 141, 159, 57, 58, 144,
+ 113, 59, 148, 126, 74, 126, 60, 57, 58, 26,
+ 76, 59, 173, 154, -32, 90, 60, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, 91, 77, -32, -32,
+ 92, 93, -32, 94, 95, 96, 97, 98, 99, 78,
+ -32, 100, 46, 47, -79, 90, 101, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, 57, 58, -79, -79,
+ 92, 93, -79, -79, -79, -79, -79, -79, -79, 79,
+ -79, 100, 83, 84, -2, 4, 125, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 80, 149, 14, 15,
+ 16, 88, 17, 18, 19, 20, 21, 22, 23, 116,
+ 24, 25, 127, 90, 127, 89, 26, -46, -46, 133,
+ -46, -46, -46, -46, 91, 139, -46, -46, 92, 93,
+ 107, 108, 109, 110, 119, 124, 140, 132, 111, 100,
+ 74, 83, 84, 152, 112, 6, 7, 8, 9, 10,
+ 11, 12, 13, 151, 153, 14, 15, 162, 157, 164,
+ 165, 166, 167, 160, 83, 84, 121, 170, 129, 172,
+ 161, 83, 84, 26, 175, 83, 84, 123, 156, 131,
+ 84, 180, 163, 115, 155, 169, 171, 174, 176, 177,
+ 178, 179, 181, 182, 183, 67, 85, 0, 0, 0,
+ 0, 0, 0, 0, 0, 73
};
static const short int yycheck[] =
{
- 5, 6, 0, 8, 58, 59, 11, 85, 86, 142,
- 28, 144, 145, 146, 14, 31, 34, 31, 151, 97,
- 153, 67, 67, 31, 70, 70, 72, 72, 82, 83,
- 31, 164, 32, 33, 31, 32, 33, 91, 92, 0,
- 1, 95, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 26, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 29, 25, 26, 32, 33, 1, 147,
- 31, 4, 5, 6, 7, 8, 9, 10, 11, 26,
- 27, 14, 15, 16, 17, 139, 26, 27, 93, 26,
- 30, 68, 69, 26, 71, 35, 68, 69, 31, 71,
- 154, 106, 0, 1, 31, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 1, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 1, 25, 26, 26,
- 27, 0, 1, 31, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 32, 33, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 31, 25, 26, 31, 31,
- 0, 1, 31, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 31, 31, 14, 15, 16, 31, 18, 19,
- 20, 21, 22, 23, 31, 25, 26, 69, 1, 71,
- 31, 31, 5, 6, 31, 8, 9, 10, 11, 12,
- 31, 14, 15, 16, 17, 18, 19, 20, 21, 31,
- 32, 33, 25, 26, 31, 32, 33, 31, 31, 4,
- 5, 6, 7, 8, 9, 10, 11, 26, 1, 14,
- 15, 5, 6, 13, 8, 9, 10, 11, 31, 26,
- 14, 15, 24, 14, 26, 27, 31, 33, 30, 67,
- 31, 32, 33, 35, 69, 31, 71, 31, 41, 31,
- 60, 31, 31, 31, 31, 31, 31, 31, 31, 30,
- -1, 107
+ 5, 6, 0, 8, 59, 60, 11, 86, 87, 1,
+ 32, 14, 4, 5, 6, 7, 8, 9, 10, 11,
+ 99, 29, 14, 15, 16, 17, 32, 35, 83, 84,
+ 33, 34, 32, 69, 70, 27, 72, 92, 93, 32,
+ 32, 96, 0, 1, 27, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 27, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 32, 26, 27,
+ 1, 150, 5, 6, 32, 8, 9, 10, 11, 1,
+ 30, 14, 15, 33, 34, 25, 141, 27, 28, 94,
+ 68, 31, 27, 71, 32, 73, 36, 27, 28, 32,
+ 32, 31, 157, 108, 0, 1, 36, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 32, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 32,
+ 26, 27, 27, 28, 0, 1, 32, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 27, 28, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 32,
+ 26, 27, 33, 34, 0, 1, 32, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 32, 27, 14, 15,
+ 16, 32, 18, 19, 20, 21, 22, 23, 24, 68,
+ 26, 27, 71, 1, 73, 32, 32, 5, 6, 32,
+ 8, 9, 10, 11, 12, 32, 14, 15, 16, 17,
+ 18, 19, 20, 21, 69, 70, 32, 72, 26, 27,
+ 32, 33, 34, 13, 32, 4, 5, 6, 7, 8,
+ 9, 10, 11, 1, 32, 14, 15, 144, 14, 146,
+ 147, 148, 149, 32, 33, 34, 70, 154, 72, 156,
+ 32, 33, 34, 32, 32, 33, 34, 70, 27, 72,
+ 34, 168, 32, 68, 109, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 31, 61, -1, -1, -1,
+ -1, -1, -1, -1, -1, 42
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const unsigned char yystos[] =
{
- 0, 37, 38, 0, 1, 3, 4, 5, 6, 7,
+ 0, 38, 39, 0, 1, 3, 4, 5, 6, 7,
8, 9, 10, 11, 14, 15, 16, 18, 19, 20,
- 21, 22, 23, 25, 26, 31, 39, 40, 42, 43,
- 44, 45, 48, 49, 51, 55, 57, 59, 60, 62,
- 64, 65, 66, 73, 31, 26, 27, 72, 72, 31,
- 72, 31, 31, 72, 26, 26, 26, 27, 30, 35,
- 76, 77, 31, 1, 1, 46, 46, 52, 54, 58,
- 69, 63, 69, 31, 74, 31, 31, 31, 31, 31,
- 76, 76, 32, 33, 74, 28, 34, 31, 31, 1,
- 12, 16, 17, 19, 20, 21, 22, 23, 26, 31,
- 41, 47, 67, 68, 70, 18, 19, 20, 21, 25,
- 31, 41, 53, 68, 70, 40, 50, 73, 40, 51,
- 56, 62, 73, 31, 41, 70, 40, 51, 61, 62,
- 73, 31, 29, 76, 76, 77, 77, 31, 31, 24,
- 76, 76, 72, 71, 72, 76, 26, 77, 1, 13,
- 31, 72, 71, 26, 14, 75, 76, 31, 31, 75,
- 31, 75, 75, 75, 77, 31, 75, 31, 75, 76,
- 31, 31, 31, 31, 31, 75, 31, 31, 31
+ 21, 22, 23, 24, 26, 27, 32, 40, 41, 43,
+ 44, 45, 46, 49, 50, 52, 56, 58, 60, 61,
+ 63, 65, 66, 67, 74, 32, 27, 28, 73, 73,
+ 32, 73, 32, 32, 73, 27, 27, 27, 28, 31,
+ 36, 77, 78, 32, 1, 1, 47, 47, 53, 55,
+ 59, 70, 64, 70, 32, 75, 32, 32, 32, 32,
+ 32, 77, 77, 33, 34, 75, 29, 35, 32, 32,
+ 1, 12, 16, 17, 19, 20, 21, 22, 23, 24,
+ 27, 32, 42, 48, 68, 69, 71, 18, 19, 20,
+ 21, 26, 32, 42, 54, 69, 71, 41, 51, 74,
+ 41, 52, 57, 63, 74, 32, 42, 71, 41, 52,
+ 62, 63, 74, 32, 30, 77, 77, 78, 78, 32,
+ 32, 25, 77, 77, 73, 72, 73, 77, 27, 27,
+ 78, 1, 13, 32, 73, 72, 27, 14, 76, 77,
+ 32, 32, 76, 32, 76, 76, 76, 76, 78, 32,
+ 76, 32, 76, 77, 32, 32, 32, 32, 32, 32,
+ 76, 32, 32, 32
};
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
@@ -981,7 +990,7 @@ yydestruct (yytype, yyvaluep)
switch (yytype)
{
- case 49: /* choice_entry */
+ case 50: /* choice_entry */
{
fprintf(stderr, "%s:%d: missing end statement for this entry\n",
@@ -991,7 +1000,7 @@ yydestruct (yytype, yyvaluep)
};
break;
- case 55: /* if_entry */
+ case 56: /* if_entry */
{
fprintf(stderr, "%s:%d: missing end statement for this entry\n",
@@ -1001,7 +1010,7 @@ yydestruct (yytype, yyvaluep)
};
break;
- case 60: /* menu_entry */
+ case 61: /* menu_entry */
{
fprintf(stderr, "%s:%d: missing end statement for this entry\n",
@@ -1334,17 +1343,17 @@ yyreduce:
{ zconf_error("invalid statement"); ;}
break;
- case 26:
+ case 27:
{ zconf_error("unknown option \"%s\"", yyvsp[-2].string); ;}
break;
- case 27:
+ case 28:
{ zconf_error("invalid option"); ;}
break;
- case 28:
+ case 29:
{
struct symbol *sym = sym_lookup(yyvsp[-1].string, 0);
@@ -1354,7 +1363,7 @@ yyreduce:
;}
break;
- case 29:
+ case 30:
{
menu_end_entry();
@@ -1362,7 +1371,7 @@ yyreduce:
;}
break;
- case 30:
+ case 31:
{
struct symbol *sym = sym_lookup(yyvsp[-1].string, 0);
@@ -1372,7 +1381,7 @@ yyreduce:
;}
break;
- case 31:
+ case 32:
{
if (current_entry->prompt)
@@ -1384,7 +1393,7 @@ yyreduce:
;}
break;
- case 38:
+ case 39:
{
menu_set_type(yyvsp[-2].id->stype);
@@ -1394,7 +1403,7 @@ yyreduce:
;}
break;
- case 39:
+ case 40:
{
menu_add_prompt(P_PROMPT, yyvsp[-2].string, yyvsp[-1].expr);
@@ -1402,7 +1411,7 @@ yyreduce:
;}
break;
- case 40:
+ case 41:
{
menu_add_expr(P_DEFAULT, yyvsp[-2].expr, yyvsp[-1].expr);
@@ -1414,7 +1423,15 @@ yyreduce:
;}
break;
- case 41:
+ case 42:
+
+ {
+ menu_add_symbol(P_DESELECT, sym_lookup(yyvsp[-2].string, 0), yyvsp[-1].expr);
+ printd(DEBUG_PARSE, "%s:%d:deselect\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 43:
{
menu_add_symbol(P_SELECT, sym_lookup(yyvsp[-2].string, 0), yyvsp[-1].expr);
@@ -1422,7 +1439,7 @@ yyreduce:
;}
break;
- case 42:
+ case 44:
{
menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,yyvsp[-3].symbol, yyvsp[-2].symbol), yyvsp[-1].expr);
@@ -1430,7 +1447,7 @@ yyreduce:
;}
break;
- case 43:
+ case 45:
{
struct symbol *sym = sym_lookup(NULL, 0);
@@ -1441,14 +1458,14 @@ yyreduce:
;}
break;
- case 44:
+ case 46:
{
yyval.menu = menu_add_menu();
;}
break;
- case 45:
+ case 47:
{
if (zconf_endtoken(yyvsp[0].id, T_CHOICE, T_ENDCHOICE)) {
@@ -1458,7 +1475,7 @@ yyreduce:
;}
break;
- case 53:
+ case 55:
{
menu_add_prompt(P_PROMPT, yyvsp[-2].string, yyvsp[-1].expr);
@@ -1466,7 +1483,7 @@ yyreduce:
;}
break;
- case 54:
+ case 56:
{
if (yyvsp[-2].id->stype == S_BOOLEAN || yyvsp[-2].id->stype == S_TRISTATE) {
@@ -1479,7 +1496,7 @@ yyreduce:
;}
break;
- case 55:
+ case 57:
{
current_entry->sym->flags |= SYMBOL_OPTIONAL;
@@ -1487,14 +1504,14 @@ yyreduce:
;}
break;
- case 56:
+ case 58:
{
menu_add_prop(P_RESET, NULL, NULL, yyvsp[-1].expr);
;}
break;
- case 57:
+ case 59:
{
if (yyvsp[-3].id->stype == S_UNKNOWN) {
@@ -1506,7 +1523,7 @@ yyreduce:
;}
break;
- case 60:
+ case 62:
{
printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
@@ -1516,7 +1533,7 @@ yyreduce:
;}
break;
- case 61:
+ case 63:
{
if (zconf_endtoken(yyvsp[0].id, T_IF, T_ENDIF)) {
@@ -1526,7 +1543,7 @@ yyreduce:
;}
break;
- case 67:
+ case 69:
{
menu_add_entry(NULL);
@@ -1535,14 +1552,14 @@ yyreduce:
;}
break;
- case 68:
+ case 70:
{
yyval.menu = menu_add_menu();
;}
break;
- case 69:
+ case 71:
{
if (zconf_endtoken(yyvsp[0].id, T_MENU, T_ENDMENU)) {
@@ -1552,7 +1569,7 @@ yyreduce:
;}
break;
- case 75:
+ case 77:
{
printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), yyvsp[-1].string);
@@ -1560,7 +1577,7 @@ yyreduce:
;}
break;
- case 76:
+ case 78:
{
menu_add_entry(NULL);
@@ -1569,14 +1586,14 @@ yyreduce:
;}
break;
- case 77:
+ case 79:
{
menu_end_entry();
;}
break;
- case 78:
+ case 80:
{
printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
@@ -1584,14 +1601,14 @@ yyreduce:
;}
break;
- case 79:
+ case 81:
{
current_entry->sym->help = yyvsp[0].string;
;}
break;
- case 84:
+ case 86:
{
menu_add_dep(yyvsp[-1].expr);
@@ -1599,7 +1616,7 @@ yyreduce:
;}
break;
- case 85:
+ case 87:
{
menu_add_dep(yyvsp[-1].expr);
@@ -1607,7 +1624,7 @@ yyreduce:
;}
break;
- case 86:
+ case 88:
{
menu_add_dep(yyvsp[-1].expr);
@@ -1615,79 +1632,79 @@ yyreduce:
;}
break;
- case 88:
+ case 90:
{
menu_add_prompt(P_PROMPT, yyvsp[-1].string, yyvsp[0].expr);
;}
break;
- case 91:
+ case 93:
{ yyval.id = yyvsp[-1].id; ;}
break;
- case 92:
+ case 94:
{ yyval.id = yyvsp[-1].id; ;}
break;
- case 93:
+ case 95:
{ yyval.id = yyvsp[-1].id; ;}
break;
- case 96:
+ case 98:
{ yyval.expr = NULL; ;}
break;
- case 97:
+ case 99:
{ yyval.expr = yyvsp[0].expr; ;}
break;
- case 98:
+ case 100:
{ yyval.expr = expr_alloc_symbol(yyvsp[0].symbol); ;}
break;
- case 99:
+ case 101:
{ yyval.expr = expr_alloc_comp(E_EQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); ;}
break;
- case 100:
+ case 102:
{ yyval.expr = expr_alloc_comp(E_UNEQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); ;}
break;
- case 101:
+ case 103:
{ yyval.expr = yyvsp[-1].expr; ;}
break;
- case 102:
+ case 104:
{ yyval.expr = expr_alloc_one(E_NOT, yyvsp[0].expr); ;}
break;
- case 103:
+ case 105:
{ yyval.expr = expr_alloc_two(E_OR, yyvsp[-2].expr, yyvsp[0].expr); ;}
break;
- case 104:
+ case 106:
{ yyval.expr = expr_alloc_two(E_AND, yyvsp[-2].expr, yyvsp[0].expr); ;}
break;
- case 105:
+ case 107:
{ yyval.symbol = sym_lookup(yyvsp[0].string, 0); free(yyvsp[0].string); ;}
break;
- case 106:
+ case 108:
{ yyval.symbol = sym_lookup(yyvsp[0].string, 1); free(yyvsp[0].string); ;}
break;
diff --git a/scripts/config/zconf.y b/scripts/config/zconf.y
index 4b8ba45061..9689a3ed80 100644
--- a/scripts/config/zconf.y
+++ b/scripts/config/zconf.y
@@ -69,6 +69,7 @@ static struct menu *current_menu, *current_entry;
%token <id>T_PROMPT
%token <id>T_TYPE
%token <id>T_DEFAULT
+%token <id>T_DESELECT
%token <id>T_SELECT
%token <id>T_RANGE
%token <id>T_ON
@@ -119,7 +120,7 @@ stmt_list:
;
option_name:
- T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_OPTIONAL | T_RANGE | T_DEFAULT | T_RESET
+ T_DEPENDS | T_PROMPT | T_TYPE | T_DESELECT | T_SELECT | T_OPTIONAL | T_RANGE | T_DEFAULT | T_RESET
;
common_stmt:
@@ -204,6 +205,12 @@ config_option: T_DEFAULT expr if_expr T_EOL
$1->stype);
};
+config_option: T_DESELECT T_WORD if_expr T_EOL
+{
+ menu_add_symbol(P_DESELECT, sym_lookup($2, 0), $3);
+ printd(DEBUG_PARSE, "%s:%d:deselect\n", zconf_curname(), zconf_lineno());
+};
+
config_option: T_SELECT T_WORD if_expr T_EOL
{
menu_add_symbol(P_SELECT, sym_lookup($2, 0), $3);