X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/246c4efafed178058a22b96d7a046340f6119057..4b7a4c1b1c8c18e9ad2517c117442b9b7d7e671a:/src/muscle_tab.h diff --git a/src/muscle_tab.h b/src/muscle_tab.h index 21249b73..e06126b3 100644 --- a/src/muscle_tab.h +++ b/src/muscle_tab.h @@ -123,12 +123,25 @@ void muscle_boundary_grow (char const *key, boundary bound); void muscle_user_name_list_grow (char const *key, char const *user_name, location loc); -/* Define the muscle for the %define variable VARIABLE appearing at - VARIABLE_LOC with value VALUE. Warn if VARIABLE is already defined. - Record this as a user occurrence of VARIABLE by invoking +/* Indicates whether a variable's value was specified with -D/--define, with + -F/--force-define, or in the grammar file. */ +typedef enum { + MUSCLE_PERCENT_DEFINE_D = 0, MUSCLE_PERCENT_DEFINE_F, + MUSCLE_PERCENT_DEFINE_GRAMMAR_FILE +} muscle_percent_define_how; + +/* Define the muscles for %define variable VARIABLE with VALUE specified + at VARIABLE_LOC in the manner HOW unless it was specified in the + grammar file while the previous definition for VARIABLE was specified + with -F/--force-define. Complain if a previous definition is being + overridden and the new definition is specified in the grammar file. + (These rules support the documented behavior as long as command-line + definitions are processed before grammar file definitions.) Record + this as a user occurrence of VARIABLE by invoking muscle_user_name_list_grow. */ void muscle_percent_define_insert (char const *variable, location variable_loc, - char const *value); + char const *value, + muscle_percent_define_how how); /* Mimic b4_percent_define_get in ../data/bison.m4 exactly. That is, if the %define variable VARIABLE is defined, return its value. Otherwise, return