public override void Visit(GraphNode node) { // GraphNodes are magic, and have a lot of complex scope rules. // SymbolTable.SetCurrentNode(node); if (CheckAlreadyDeclared(node.Name)) { SymbolTable.EnterSymbol(node.Name, AllType.GRAPH); SymbolTable.SetAssigned(node.Name); // Visits all the different vertex declarations in the graph declaration foreach (var Vertex in node.Vertices) { Vertex.Accept(this); } // Visits all the different Edge declarations in the graph declaration foreach (var Edge in node.Edges) { Edge.Accept(this); } // Now the last children of the graph node will be visited, this is stuff like the set Directed // This also includes extended attributes on the graph. VisitChildren(node); } }