From efbcadeca72dc339802e1760db7f8336bd20f514 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Sat, 13 Jun 2020 16:03:53 +0200 Subject: reports: don't escape the labels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- src/print-graph.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'src/print-graph.c') 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, ']'); -- cgit v1.2.1