mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-18 00:33:03 +00:00
muscle: let -D/-F support the three kinds of %define variable values
See http://lists.gnu.org/archive/html/bison-patches/2013-04/msg00012.html * src/getargs.c (getargs): Recognize {value} and "value" for -D and -F.
This commit is contained in:
@@ -574,16 +574,31 @@ getargs (int argc, char *argv[])
|
|||||||
/* Certain long options cause getopt_long to return 0. */
|
/* Certain long options cause getopt_long to return 0. */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'D': /* -DNAME[=VALUE]. */
|
case 'D': /* -DNAME[=(VALUE|"VALUE"|{VALUE})]. */
|
||||||
case 'F': /* -FNAME[=VALUE]. */
|
case 'F': /* -FNAME[=(VALUE|"VALUE"|{VALUE})]. */
|
||||||
{
|
{
|
||||||
char* name = optarg;
|
char *name = optarg;
|
||||||
char* value = strchr (optarg, '=');
|
char *value = strchr (optarg, '=');
|
||||||
|
muscle_kind kind = muscle_keyword;
|
||||||
if (value)
|
if (value)
|
||||||
*value++ = 0;
|
{
|
||||||
|
char *end = value + strlen (value) - 1;
|
||||||
|
*value++ = 0;
|
||||||
|
if (*value == '{' && *end == '}')
|
||||||
|
{
|
||||||
|
kind = muscle_code;
|
||||||
|
++value;
|
||||||
|
*end = 0;
|
||||||
|
}
|
||||||
|
else if (*value == '"' && *end == '"')
|
||||||
|
{
|
||||||
|
kind = muscle_string;
|
||||||
|
++value;
|
||||||
|
*end = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
muscle_percent_define_insert (name, command_line_location (),
|
muscle_percent_define_insert (name, command_line_location (),
|
||||||
muscle_string,
|
kind, value ? value : "",
|
||||||
value ? value : "",
|
|
||||||
c == 'D' ? MUSCLE_PERCENT_DEFINE_D
|
c == 'D' ? MUSCLE_PERCENT_DEFINE_D
|
||||||
: MUSCLE_PERCENT_DEFINE_F);
|
: MUSCLE_PERCENT_DEFINE_F);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user