1 /* 2 * tkparse.h 3 */ 4 5 /* 6 * Token types (mostly statement types). 7 */ 8 9 enum e_token 10 { 11 token_UNKNOWN, 12 token_bool, 13 token_choice_header, 14 token_choice_item, 15 token_comment, 16 token_define_bool, 17 token_define_hex, 18 token_define_int, 19 token_define_string, 20 token_define_tristate, 21 token_dep_bool, 22 token_dep_mbool, 23 token_dep_tristate, 24 token_else, 25 token_endmenu, 26 token_fi, 27 token_hex, 28 token_if, 29 token_int, 30 token_mainmenu_name, 31 token_mainmenu_option, 32 token_source, 33 token_string, 34 token_then, 35 token_tristate, 36 token_unset, 37 }; 38 39 /* 40 * Operator types for conditionals. 41 */ 42 43 enum operator 44 { 45 op_eq, 46 op_neq, 47 op_and, 48 op_and1, 49 op_or, 50 op_bang, 51 op_lparen, 52 op_rparen, 53 op_constant, 54 op_variable, 55 op_true, 56 op_false, 57 op_nuked 58 }; 59 60 /* 61 * Conditions come in linked lists. 62 * Some operators take strings: 63 * 64 * op_constant "foo" 65 * op_variable "$ARCH", "$CONFIG_PMAC", "$CONFIG_EXPERIMENTAL" 66 * 67 * Most "$..." constructs refer to a variable which is defined somewhere 68 * in the script. Note that it is legal to test variables which are never 69 * defined, such as variables that are meaningful only on other architectures. 70 */ 71 72 struct condition 73 { 74 struct condition * next; 75 enum operator op; 76 const char * str; /* op_constant */ 77 int nameindex; /* op_variable */ 78 }; 79 80 /* 81 * Dependency list for dep_bool, dep_mbool, dep_tristate 82 */ 83 84 struct dependency 85 { 86 char * name; 87 struct dependency * next; 88 }; 89 90 /* 91 * A statement from a config.in file 92 */ 93 94 struct kconfig 95 { 96 struct kconfig * next; 97 enum e_token token; 98 int nameindex; 99 char * label; 100 char * value; 101 struct condition * cond; 102 struct dependency * depend; /* token_dep_tristate */ 103 struct kconfig * cfg_parent; /* token_choice_item */ 104 105 /* used only in tkgen.c */ 106 int menu_number; 107 int menu_line; 108 struct kconfig * menu_next; 109 }; 110 111 struct variable 112 { 113 char * name; 114 char defined; 115 char global_written; 116 }; 117 118 extern struct variable *vartable; 119 extern int max_varnum; 120 121 /* 122 * Prototypes 123 */ 124 125 extern void fix_conditionals ( struct kconfig * scfg ); /* tkcond.c */ 126 extern void dump_tk_script ( struct kconfig * scfg ); /* tkgen.c */ 127 extern int get_varnum ( char * name ); /* tkparse.c */ 128