/**
* Finds the strongly connected components and their recursion kinds.
*/
public StronglyConnectedComponents<Nonterminal, Component> getComponents(boolean find_recursion_kinds) {
StronglyConnectedComponents<Nonterminal, Component> comp =
new StronglyConnectedComponents<Nonterminal, Component>(new GrammarAsDirectedGraph(this));
if (find_recursion_kinds) {
for (Component c : comp.getComponents()) {
c.findRecursion();
}
}