1 2 enum token { 3 tok_menuname, 4 tok_menuoption, 5 tok_comment, 6 tok_bool, 7 tok_tristate, 8 tok_dep_tristate, 9 tok_nop, 10 tok_if, 11 tok_else, 12 tok_fi, 13 tok_int, 14 tok_sound, 15 tok_define, 16 tok_choose, 17 tok_choice, 18 tok_unknown 19 }; 20 21 enum operator { 22 op_eq, 23 op_neq, 24 op_and, 25 op_and1, 26 op_or, 27 op_bang, 28 op_lparen, 29 op_rparen, 30 op_variable, 31 op_kvariable, 32 op_shellcmd, 33 op_constant, 34 op_nuked 35 }; 36 37 union var 38 { 39 char * str; 40 struct kconfig * cfg; 41 }; 42 43 struct condition 44 { 45 struct condition * next; 46 enum operator op; 47 union var variable; 48 }; 49 50 #define GLOBAL_WRITTEN 1 51 #define CFG_DUP 2 52 #define UNSAFE 4 53 54 struct kconfig 55 { 56 struct kconfig * next; 57 int flags; 58 enum token tok; 59 char menu_number; 60 char menu_line; 61 char submenu_start; 62 char submenu_end; 63 char * optionname; 64 char * label; 65 char * value; 66 int choice_value; 67 struct kconfig * choice_label; 68 union var depend; 69 struct condition * cond; 70 }; 71 72 extern struct kconfig * config; 73 extern struct kconfig * clast; 74 extern struct kconfig * koption; 75