21 for (RulePointer rule = g->rules.begin (); rule != g->rules.end (); ++rule)
22 out << rindex++ <<
")\t" << *rule << Qt::endl;
23 out << Qt::endl << Qt::endl;
28 out <<
"state " << index++ << Qt::endl << Qt::endl;
30 for (
ItemPointer item = state->kernel.begin (); item != state->kernel.end (); ++item)
32 out <<
" * " << *item;
34 if (item->dot == item->end_rhs ())
35 out <<
" " << aut->lookaheads [item];
41 for (Bundle::iterator arrow = state->bundle.begin (); arrow != state->bundle.end (); ++arrow)
51 out <<
" " << *arrow.key () <<
" shift, and go to state " << std::distance (aut->states.begin (), *arrow) << Qt::endl;
55 for (
ItemPointer item = state->closure.begin (); item != state->closure.end (); ++item)
57 if (item->dot != item->end_rhs () || item->rule == state->defaultReduce)
65 const auto lookaheads = aut->lookaheads.value(item);
66 for (
const Name &la : lookaheads)
67 out <<
" " << *la <<
" reduce using rule " << aut->id (item->rule) <<
" (" << *item->rule->lhs <<
")" << Qt::endl;
71 for (Bundle::iterator arrow = state->bundle.begin (); arrow != state->bundle.end (); ++arrow)
81 out <<
" " << *arrow.key () <<
" go to state " << std::distance (aut->states.begin (), *arrow) << Qt::endl;
84 if (state->defaultReduce != g
->rules.end ())
87 <<
" $default reduce using rule " << aut->id (state->defaultReduce) <<
" (" << *state->defaultReduce->lhs <<
")" << Qt::endl;