more debug output
[linux-2.4.git] / scripts / tkparse.h
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 */