| /* |
| * tkparse.h |
| */ |
| |
| /* |
| * Token types (mostly statement types). |
| */ |
| |
| enum e_token |
| { |
| token_UNKNOWN, |
| token_bool, |
| token_choice_header, |
| token_choice_item, |
| token_comment, |
| token_define_bool, |
| token_define_hex, |
| token_define_int, |
| token_define_string, |
| token_define_tristate, |
| token_dep_bool, |
| token_dep_mbool, |
| token_dep_tristate, |
| token_else, |
| token_endmenu, |
| token_fi, |
| token_hex, |
| token_if, |
| token_int, |
| token_mainmenu_name, |
| token_mainmenu_option, |
| token_source, |
| token_string, |
| token_then, |
| token_tristate, |
| token_unset, |
| }; |
| |
| /* |
| * Operator types for conditionals. |
| */ |
| |
| enum operator |
| { |
| op_eq, |
| op_neq, |
| op_and, |
| op_and1, |
| op_or, |
| op_bang, |
| op_lparen, |
| op_rparen, |
| op_constant, |
| op_variable, |
| op_true, |
| op_false, |
| op_nuked |
| }; |
| |
| /* |
| * Conditions come in linked lists. |
| * Some operators take strings: |
| * |
| * op_constant "foo" |
| * op_variable "$ARCH", "$CONFIG_PMAC", "$CONFIG_EXPERIMENTAL" |
| * |
| * Most "$..." constructs refer to a variable which is defined somewhere |
| * in the script. Note that it is legal to test variables which are never |
| * defined, such as variables that are meaningful only on other architectures. |
| */ |
| |
| struct condition |
| { |
| struct condition * next; |
| enum operator op; |
| const char * str; /* op_constant */ |
| int nameindex; /* op_variable */ |
| }; |
| |
| /* |
| * Dependency list for dep_bool, dep_mbool, dep_tristate |
| */ |
| |
| struct dependency |
| { |
| char * name; |
| struct dependency * next; |
| }; |
| |
| /* |
| * A statement from a config.in file |
| */ |
| |
| struct kconfig |
| { |
| struct kconfig * next; |
| enum e_token token; |
| int nameindex; |
| char * label; |
| char * value; |
| struct condition * cond; |
| struct dependency * depend; /* token_dep_tristate */ |
| struct kconfig * cfg_parent; /* token_choice_item */ |
| |
| /* used only in tkgen.c */ |
| int menu_number; |
| int menu_line; |
| struct kconfig * menu_next; |
| }; |
| |
| struct variable |
| { |
| char * name; |
| char defined; |
| char global_written; |
| }; |
| |
| extern struct variable *vartable; |
| extern int max_varnum; |
| |
| /* |
| * Prototypes |
| */ |
| |
| extern void fix_conditionals ( struct kconfig * scfg ); /* tkcond.c */ |
| extern void dump_tk_script ( struct kconfig * scfg ); /* tkgen.c */ |
| extern int get_varnum ( char * name ); /* tkparse.c */ |