summaryrefslogtreecommitdiff
path: root/src/print-graph.c
diff options
context:
space:
mode:
authorAkim Demaille <akim.demaille@gmail.com>2020-06-13 16:03:53 +0200
committerAkim Demaille <akim.demaille@gmail.com>2020-06-13 16:58:13 +0200
commitefbcadeca72dc339802e1760db7f8336bd20f514 (patch)
treec16f87f9e45e3e324f77aca4221c94126892df95 /src/print-graph.c
parente4d33cf57914b3718762183bcc9237fc03f3c1fe (diff)
downloadbison-efbcadeca72dc339802e1760db7f8336bd20f514.tar.gz
reports: don't escape the labels
Currently we use "quotearg" to escape the strings output in Dot. As a result, if the user's locale is C for instance, all the non-ASCII are escaped. Unfortunately graphviz does not interpret this style of escaping. For instance: 5 -> 2 [style=solid label="\"\303\221\303\271\341\271\203\303\251\342\204\235\303\264\""] was displayed as a sequence of numbers. We now output: 5 -> 2 [style=solid label="\"Ñùṃéℝô\""] independently of the user's locale. * src/system.h (obstack_backslash): New. * src/graphviz.h, src/graphviz.c (escape): Remove, use obstack_backslash instead. * src/print-graph.c: Likewise. * tests/report.at: Adjust.
Diffstat (limited to 'src/print-graph.c')
-rw-r--r--src/print-graph.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/print-graph.c b/src/print-graph.c
index 5691c6d8..adaa8bed 100644
--- a/src/print-graph.c
+++ b/src/print-graph.c
@@ -72,19 +72,28 @@ print_core (struct obstack *oout, state *s)
obstack_printf (oout, "%*s| ",
(int) strlen (previous_lhs->symbol->tag), "");
else
- obstack_printf (oout, "%s: ", escape (r->lhs->symbol->tag));
+ {
+ obstack_backslash (oout, r->lhs->symbol->tag);
+ obstack_printf (oout, ": ");
+ }
previous_lhs = r->lhs;
for (item_number const *sp = r->rhs; sp < sp1; sp++)
- obstack_printf (oout, "%s ", escape (symbols[*sp]->tag));
+ {
+ obstack_backslash (oout, symbols[*sp]->tag);
+ obstack_1grow (oout, ' ');
+ }
obstack_1grow (oout, '.');
if (0 <= *r->rhs)
for (item_number const *sp = sp1; 0 <= *sp; ++sp)
- obstack_printf (oout, " %s", escape (symbols[*sp]->tag));
+ {
+ obstack_1grow (oout, ' ');
+ obstack_backslash (oout, symbols[*sp]->tag);
+ }
else
- obstack_printf (oout, " %%empty");
+ obstack_sgrow (oout, " %empty");
/* Experimental feature: display the lookahead tokens. */
if (report_flag & report_lookahead_tokens
@@ -104,7 +113,7 @@ print_core (struct obstack *oout, state *s)
BITSET_FOR_EACH (biter, reds->lookahead_tokens[redno], k, 0)
{
obstack_sgrow (oout, sep);
- obstack_sgrow (oout, escape (symbols[k]->tag));
+ obstack_backslash (oout, symbols[k]->tag);
sep = ", ";
}
obstack_1grow (oout, ']');