static struct menu *current_menu, *current_entry;
%}
-%expect 21
%union
{
%type <expr> expr
%type <expr> if_expr
%type <id> end
-%type <id> option_name
%type <menu> if_entry menu_entry choice_entry
%type <string> symbol_option_arg word_opt assign_val
| stmt_list menu_stmt
| stmt_list end { zconf_error("unexpected end statement"); }
| stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); }
- | stmt_list option_name error T_EOL
-{
- zconf_error("unexpected option \"%s\"", $2->name);
-}
| stmt_list error T_EOL { zconf_error("invalid statement"); }
;
-option_name:
- T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_IMPLY | T_OPTIONAL | T_RANGE | T_DEFAULT | T_VISIBLE
-;
-
common_stmt:
if_stmt
| comment_stmt
| assignment_stmt
;
-option_error:
- T_WORD error T_EOL { zconf_error("unknown option \"%s\"", $1); }
- | error T_EOL { zconf_error("invalid option"); }
-;
-
-
/* config/menuconfig entry */
config_entry_start: T_CONFIG nonconst_symbol T_EOL
| config_option_list symbol_option
| config_option_list depends
| config_option_list help
- | config_option_list option_error
;
config_option: T_TYPE prompt_stmt_opt T_EOL
| choice_option_list choice_option
| choice_option_list depends
| choice_option_list help
- | choice_option_list option_error
;
choice_option: T_PROMPT prompt if_expr T_EOL
depends_list:
/* empty */
| depends_list depends
- | depends_list option_error
;
depends: T_DEPENDS T_ON expr T_EOL