mirror of
https://github.com/lcbcFoo/ReonV.git
synced 2025-04-18 18:44:43 -04:00
127 lines
2.3 KiB
C
127 lines
2.3 KiB
C
/*
|
|
* 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 */
|