void CAstScope::toDot(ostream &out, int indent) const { string ind(indent, ' '); CAstNode::toDot(out, indent); CAstStatement *s = GetStatementSequence(); if (s != NULL) { string prev = dotID(); do { s->toDot(out, indent); out << ind << prev << " -> " << s->dotID() << " [style=dotted];" << endl; prev = s->dotID(); s = s->GetNext(); } while (s != NULL); } vector<CAstScope*>::const_iterator it = _children.begin(); while (it != _children.end()) { CAstScope *s = *it++; s->toDot(out, indent); out << ind << dotID() << " -> " << s->dotID() << ";" << endl; } }
void CAstStatIf::toDot(ostream &out, int indent) const { string ind(indent, ' '); CAstNode::toDot(out, indent); _cond->toDot(out, indent); out << ind << dotID() << "->" << _cond->dotID() << ";" << endl; if (_ifBody != NULL) { CAstStatement *s = _ifBody; if (s != NULL) { string prev = dotID(); do { s->toDot(out, indent); out << ind << prev << " -> " << s->dotID() << " [style=dotted];" << endl; prev = s->dotID(); s = s->GetNext(); } while (s != NULL); } } if (_elseBody != NULL) { CAstStatement *s = _elseBody; if (s != NULL) { string prev = dotID(); do { s->toDot(out, indent); out << ind << prev << " -> " << s->dotID() << " [style=dotted];" << endl; prev = s->dotID(); s = s->GetNext(); } while (s != NULL); } } }