/* Output Graphviz specification of a state machine generated by Bison.
- Copyright (C) 2006-2007, 2009-2012 Free Software Foundation, Inc.
+ Copyright (C) 2006-2007, 2009-2014 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
/* If no lookahead tokens were valid transitions, this reduction is
actually hidden, so cancel everything. */
if (first)
- return (void) obstack_finish0 (out);
+ (void) obstack_finish0 (out);
else
{
- char const *ed = enabled ? "e" : "d";
+ char const *ed = enabled ? "" : "d";
char const *color = enabled ? ruleno ? "3" : "1" : "5";
/* First, build the edge's head. The name of reduction nodes is "nRm",
fprintf (fout, " %1$d -> \"%1$dR%2$d%3$s\" [",
source, ruleno, ed);
+ /* (The lookahead tokens have been added to the beginning of the
+ obstack, in the caller function.) */
if (! obstack_empty_p (out))
- /* (The lookahead tokens have been added to the beginning of the
- obstack, in the caller function.) */
- fprintf (fout, "label = \"[%s]\" ", obstack_finish0 (out));
+ {
+ char *label = obstack_finish0 (out);
+ fprintf (fout, "label=\"[%s]\", ", label);
+ obstack_free (out, label);
+ }
/* Then, the edge's tail. */
- fprintf (fout, "style = solid]\n");
+ fprintf (fout, "style=solid]\n");
/* Build the associated diamond representation of the target rule. */
- fprintf (fout, " \"%dR%d%s\" [style = filled, "
- "shape = diamond, fillcolor = %s, ",
- source, ruleno, ed, color);
-
- if (ruleno)
- fprintf (fout, "label = \"R%d\"]\n", ruleno);
+ fprintf (fout, " \"%dR%d%s\" [label=\"",
+ source, ruleno, ed);
+ if (ruleno)
+ fprintf (fout, "R%d", ruleno);
else
- fprintf (fout, "label = \"Acc\"]\n");
+ fprintf (fout, "Acc");
+ fprintf (fout, "\", fillcolor=%s, shape=diamond, style=filled]\n",
+ color);
}
}
bool defaulted = false;
bool firstd = true;
bool firste = true;
- rule_number ruleno = reds->rules[j]->user_number;
+ rule_number ruleno = reds->rules[j]->number;
rule *default_reduction = NULL;
if (yydefact[s->number] != 0)
}
/* Do the actual output. */
- conclude_red (&eout, source, ruleno, true, firste && !defaulted, fout);
conclude_red (&dout, source, ruleno, false, firstd, fout);
+ conclude_red (&eout, source, ruleno, true, firste && !defaulted, fout);
}
- obstack_free (&eout, 0);
obstack_free (&dout, 0);
+ obstack_free (&eout, 0);
+ bitset_free (no_reduce_set);
}
void