[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 3/5] graphs: change the output format of the rules
From: |
Theophile Ranquet |
Subject: |
[PATCH 3/5] graphs: change the output format of the rules |
Date: |
Thu, 18 Oct 2012 15:38:31 +0000 |
Use something similar to the report file.
* src/print_graph.c (print_lhs): New, obstack equivalent of rule_lhs_print.
(print_core): Use here.
---
src/print_graph.c | 27 +++++++++++++++++++++++++--
1 file changed, 25 insertions(+), 2 deletions(-)
diff --git a/src/print_graph.c b/src/print_graph.c
index 61aa1e3..d5ec5fb 100644
--- a/src/print_graph.c
+++ b/src/print_graph.c
@@ -40,11 +40,32 @@
| Construct the node labels. |
`----------------------------*/
+/* Print the lhs of a rule in such a manner that there is no vertical
+ repetition, like in *.output files. */
+
+static void
+print_lhs (struct obstack *oout, rule *previous_rule, rule *r)
+{
+ if (previous_rule && STREQ (previous_rule->lhs->tag, r->lhs->tag))
+ {
+ int i;
+ for (i = 0; i < strlen (r->lhs->tag); ++i)
+ obstack_1grow (oout, ' ');
+ obstack_1grow (oout, '|');
+ }
+ else
+ {
+ obstack_sgrow (oout, escape (r->lhs->tag));
+ obstack_1grow (oout, ':');
+ }
+}
+
static void
print_core (struct obstack *oout, state *s)
{
- size_t i;
item_number *sitems = s->items;
+ rule *previous_rule = NULL;
+ size_t i;
size_t snritems = s->nitems;
/* Output all the items of a state, not only its kernel. */
@@ -70,7 +91,9 @@ print_core (struct obstack *oout, state *s)
r = item_number_as_rule_number (*sp);
- obstack_printf (oout, "%d: %s ->", r, escape (rules[r].lhs->tag));
+ obstack_printf (oout, "%3d ", r);
+ print_lhs (oout, previous_rule, &rules[r]);
+ previous_rule = &rules[r];
for (sp = rules[r].rhs; sp < sp1; sp++)
obstack_printf (oout, " %s", escape (symbols[*sp]->tag));
--
1.7.11.4
- [PATCH 0/5] {maint} graph improvements, Theophile Ranquet, 2012/10/18
- [PATCH 3/5] graphs: change the output format of the rules,
Theophile Ranquet <=
- [PATCH 1/5] graphs: address an issue with R/R conflicts, Theophile Ranquet, 2012/10/18
- [PATCH 2/5] graphs: style changes, Theophile Ranquet, 2012/10/18
- [PATCH 5/5] graphs: add tests, introducing -k graphs, Theophile Ranquet, 2012/10/18
- [PATCH 4/5] graphs: documentation, Theophile Ranquet, 2012/10/18
- Re: [PATCH 0/5] {maint} graph improvements, Akim Demaille, 2012/10/18