mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-21 18:23:03 +00:00
Merge remote-tracking branch 'origin/maint'
* origin/maint: (29 commits) regen synclines: remove spurious empty line also support $<foo>$ in the %initial-action skeletons: b4_dollar_pushdef and popdef to simpify complex definitions regen printer/destructor: translate only once factor the handling of m4 escaping news: schedule the removal of the ";" hack style changes in the scanners regen support $<tag>$ in printers and destructors scan-code: factor the handling of the type in $<TYPE>$ muscles: fix another occurrence of unescaped type name glr.cc: fix the handling of yydebug gnulib: update formatting changes tests: fix an assertion tests: adjust to GCC 4.8, which displays caret errors be sure to properly escape type names obstack_quote: escape and quote for M4 muscles: shuffle responsabilities muscles: make private functions static muscles: rename private functions/macros obstack_escape: escape M4 characters remove dead macro maint: style changes doc: avoid problems with case insensitive file systems configure: fix botched quoting news: fix typo. Conflicts: NEWS data/c.m4 data/glr.cc data/lalr1.cc examples/rpcalc/local.mk src/muscle-tab.h src/output.c src/parse-gram.c src/parse-gram.h src/parse-gram.y src/scan-code.l src/symlist.c src/symlist.h src/symtab.h tests/calc.at
This commit is contained in:
@@ -177,10 +177,10 @@ static void
|
||||
muscle_syncline_grow (char const *key, location loc)
|
||||
{
|
||||
char *extension = NULL;
|
||||
obstack_fgrow1 (&muscle_obstack, "]b4_syncline(%d, [[", loc.start.line);
|
||||
MUSCLE_OBSTACK_SGROW (&muscle_obstack,
|
||||
quotearg_style (c_quoting_style, loc.start.file));
|
||||
obstack_sgrow (&muscle_obstack, "]])[");
|
||||
obstack_fgrow1 (&muscle_obstack, "]b4_syncline(%d, ", loc.start.line);
|
||||
obstack_quote (&muscle_obstack,
|
||||
quotearg_style (c_quoting_style, loc.start.file));
|
||||
obstack_sgrow (&muscle_obstack, ")[");
|
||||
obstack_1grow (&muscle_obstack, 0);
|
||||
extension = obstack_finish (&muscle_obstack);
|
||||
muscle_grow (key, extension, "");
|
||||
@@ -205,11 +205,11 @@ void muscle_pair_list_grow (const char *muscle,
|
||||
const char *a1, const char *a2)
|
||||
{
|
||||
char *pair;
|
||||
obstack_sgrow (&muscle_obstack, "[[[");
|
||||
MUSCLE_OBSTACK_SGROW (&muscle_obstack, a1);
|
||||
obstack_sgrow (&muscle_obstack, "]], [[");
|
||||
MUSCLE_OBSTACK_SGROW (&muscle_obstack, a2);
|
||||
obstack_sgrow (&muscle_obstack, "]]]");
|
||||
obstack_sgrow (&muscle_obstack, "[");
|
||||
obstack_quote (&muscle_obstack, a1);
|
||||
obstack_sgrow (&muscle_obstack, ", ");
|
||||
obstack_quote (&muscle_obstack, a2);
|
||||
obstack_sgrow (&muscle_obstack, "]");
|
||||
obstack_1grow (&muscle_obstack, 0);
|
||||
pair = obstack_finish (&muscle_obstack);
|
||||
muscle_grow (muscle, pair, ",\n");
|
||||
@@ -259,53 +259,61 @@ muscle_find (char const *key)
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
/* In the format `file_name:line.column', append BOUND to MUSCLE. Use
|
||||
digraphs for special characters in the file name. */
|
||||
|
||||
static void
|
||||
muscle_boundary_grow (char const *key, boundary bound)
|
||||
{
|
||||
char *extension;
|
||||
MUSCLE_OBSTACK_SGROW (&muscle_obstack, bound.file);
|
||||
obstack_sgrow (&muscle_obstack, "[[");
|
||||
obstack_escape (&muscle_obstack, bound.file);
|
||||
obstack_1grow (&muscle_obstack, ':');
|
||||
obstack_fgrow1 (&muscle_obstack, "%d", bound.line);
|
||||
obstack_1grow (&muscle_obstack, '.');
|
||||
obstack_fgrow1 (&muscle_obstack, "%d", bound.column);
|
||||
obstack_sgrow (&muscle_obstack, "]]");
|
||||
obstack_1grow (&muscle_obstack, '\0');
|
||||
extension = obstack_finish (&muscle_obstack);
|
||||
muscle_grow (key, extension, "");
|
||||
obstack_free (&muscle_obstack, extension);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
/* In the format `[[file_name:line.column]], [[file_name:line.column]]',
|
||||
append LOC to MUSCLE. Use digraphs for special characters in each
|
||||
file name. */
|
||||
|
||||
static void
|
||||
muscle_location_grow (char const *key, location loc)
|
||||
{
|
||||
muscle_grow (key, "[[", "");
|
||||
muscle_boundary_grow (key, loc.start);
|
||||
muscle_grow (key, "]], [[", "");
|
||||
muscle_grow (key, "", ", ");
|
||||
muscle_boundary_grow (key, loc.end);
|
||||
muscle_grow (key, "]]", "");
|
||||
}
|
||||
|
||||
#define MUSCLE_COMMON_DECODE(Value) \
|
||||
case '$': \
|
||||
aver (*++(Value) == ']'); \
|
||||
aver (*++(Value) == '['); \
|
||||
obstack_sgrow (&muscle_obstack, "$"); \
|
||||
break; \
|
||||
case '@': \
|
||||
switch (*++(Value)) \
|
||||
{ \
|
||||
case '@': obstack_sgrow (&muscle_obstack, "@" ); break; \
|
||||
case '{': obstack_sgrow (&muscle_obstack, "[" ); break; \
|
||||
case '}': obstack_sgrow (&muscle_obstack, "]" ); break; \
|
||||
default: aver (false); break; \
|
||||
} \
|
||||
break; \
|
||||
default: \
|
||||
obstack_1grow (&muscle_obstack, *(Value)); \
|
||||
#define COMMON_DECODE(Value) \
|
||||
case '$': \
|
||||
aver (*++(Value) == ']'); \
|
||||
aver (*++(Value) == '['); \
|
||||
obstack_sgrow (&muscle_obstack, "$"); \
|
||||
break; \
|
||||
case '@': \
|
||||
switch (*++(Value)) \
|
||||
{ \
|
||||
case '@': obstack_sgrow (&muscle_obstack, "@" ); break; \
|
||||
case '{': obstack_sgrow (&muscle_obstack, "[" ); break; \
|
||||
case '}': obstack_sgrow (&muscle_obstack, "]" ); break; \
|
||||
default: aver (false); break; \
|
||||
} \
|
||||
break; \
|
||||
default: \
|
||||
obstack_1grow (&muscle_obstack, *(Value)); \
|
||||
break;
|
||||
|
||||
/* Reverse of MUSCLE_OBSTACK_SGROW. */
|
||||
/* Reverse of obstack_escape. */
|
||||
static char *
|
||||
muscle_string_decode (char const *key)
|
||||
string_decode (char const *key)
|
||||
{
|
||||
char const *value;
|
||||
char *value_decoded;
|
||||
@@ -317,7 +325,7 @@ muscle_string_decode (char const *key)
|
||||
do {
|
||||
switch (*value)
|
||||
{
|
||||
MUSCLE_COMMON_DECODE (value)
|
||||
COMMON_DECODE (value)
|
||||
case '[':
|
||||
case ']':
|
||||
aver (false);
|
||||
@@ -332,7 +340,7 @@ muscle_string_decode (char const *key)
|
||||
|
||||
/* Reverse of muscle_location_grow. */
|
||||
static location
|
||||
muscle_location_decode (char const *key)
|
||||
location_decode (char const *key)
|
||||
{
|
||||
location loc;
|
||||
char const *value = muscle_find_const (key);
|
||||
@@ -342,7 +350,7 @@ muscle_location_decode (char const *key)
|
||||
while (*++value)
|
||||
switch (*value)
|
||||
{
|
||||
MUSCLE_COMMON_DECODE (value)
|
||||
COMMON_DECODE (value)
|
||||
case '[':
|
||||
aver (false);
|
||||
break;
|
||||
@@ -491,7 +499,7 @@ muscle_percent_define_get (char const *variable)
|
||||
variable, ")");
|
||||
|
||||
muscle_insert (usage_name, "");
|
||||
value = muscle_string_decode (name);
|
||||
value = string_decode (name);
|
||||
if (!value)
|
||||
value = xstrdup ("");
|
||||
return value;
|
||||
@@ -505,7 +513,7 @@ muscle_percent_define_get_loc (char const *variable)
|
||||
if (!muscle_find_const (loc_name))
|
||||
complain (fatal, _("%s: undefined %%define variable %s"),
|
||||
"muscle_percent_define_get_loc", quote (variable));
|
||||
return muscle_location_decode (loc_name);
|
||||
return location_decode (loc_name);
|
||||
}
|
||||
|
||||
char const *
|
||||
@@ -610,7 +618,7 @@ muscle_percent_define_check_values (char const * const *values)
|
||||
|
||||
name = UNIQSTR_CONCAT ("percent_define(", *variablep, ")");
|
||||
|
||||
value = muscle_string_decode (name);
|
||||
value = string_decode (name);
|
||||
if (value)
|
||||
{
|
||||
for (++values; *values; ++values)
|
||||
|
||||
Reference in New Issue
Block a user