summaryrefslogtreecommitdiff
path: root/scripts/tkparse.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@athlon.transmeta.com>2002-02-04 17:40:40 -0800
committerLinus Torvalds <torvalds@athlon.transmeta.com>2002-02-04 17:40:40 -0800
commit7a2deb32924142696b8174cdf9b38cd72a11fc96 (patch)
tree8ecc18f81fdb849254f39dc2e9fd77253319e1ec /scripts/tkparse.h
Import changeset
Diffstat (limited to 'scripts/tkparse.h')
-rw-r--r--scripts/tkparse.h127
1 files changed, 127 insertions, 0 deletions
diff --git a/scripts/tkparse.h b/scripts/tkparse.h
new file mode 100644
index 000000000000..1ca16b1852e7
--- /dev/null
+++ b/scripts/tkparse.h
@@ -0,0 +1,127 @@
+/*
+ * 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 */