20 for (RulePointer rule = g->rules.begin (); rule != g->rules.end (); ++rule)
21 out << rindex++ <<
")\t" << *rule << Qt::endl;
22 out << Qt::endl << Qt::endl;
27 out <<
"state " << index++ << Qt::endl << Qt::endl;
29 for (
ItemPointer item = state->kernel.begin (); item != state->kernel.end (); ++item)
31 out <<
" * " << *item;
33 if (item->dot == item->end_rhs ())
34 out <<
" " << aut->lookaheads [item];
40 for (Bundle::iterator arrow = state->bundle.begin (); arrow != state->bundle.end (); ++arrow)
50 out <<
" " << *arrow.key () <<
" shift, and go to state " << std::distance (aut->states.begin (), *arrow) << Qt::endl;
54 for (
ItemPointer item = state->closure.begin (); item != state->closure.end (); ++item)
56 if (item->dot != item->end_rhs () || item->rule == state->defaultReduce)
64 const auto lookaheads = aut->lookaheads.value(item);
65 for (
const Name &la : lookaheads)
66 out <<
" " << *la <<
" reduce using rule " << aut->id (item->rule) <<
" (" << *item->rule->lhs <<
")" << Qt::endl;
70 for (Bundle::iterator arrow = state->bundle.begin (); arrow != state->bundle.end (); ++arrow)
80 out <<
" " << *arrow.key () <<
" go to state " << std::distance (aut->states.begin (), *arrow) << Qt::endl;
83 if (state->defaultReduce != g
->rules.end ())
86 <<
" $default reduce using rule " << aut->id (state->defaultReduce) <<
" (" << *state->defaultReduce->lhs <<
")" << Qt::endl;