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