- if (i < k)
- {
- for (; i < k; i++)
- {
- if (!shiftp->shifts[i])
- continue;
- state1 = shiftp->shifts[i];
- symbol = accessing_symbol[state1];
-
- new_edge (&edge);
- open_edge (&edge, &graph_obstack);
- edge.sourcename = node->title;
- edge.targetname = buff;
+ for (i = 0; i < shiftp->nshifts; i++)
+ if (!SHIFT_IS_DISABLED (shiftp, i))
+ {
+ int state1 = shiftp->shifts[i];
+ int symbol = states[state1]->accessing_symbol;
+
+ new_edge (&edge);
+
+ if (state->number > state1)
+ edge.type = back_edge;
+ open_edge (&edge, fgraph);
+ /* The edge source is the current node. */
+ edge.sourcename = node_name;
+ sprintf (buff, "%d", state1);
+ edge.targetname = buff;
+ /* Shifts are blue, gotos are green, and error is red. */
+ if (SHIFT_IS_ERROR (shiftp, i))