//define method attribute, increase scope, and check body public void VisitNode(MethodDeclaration node) { //VisitChildren(node); var typeVisitor = new TypeVisitor(); AbstractNode firstChild = node.Child; var returnTypeNode = firstChild.Sib; returnTypeNode.Accept(typeVisitor); var attr = new MethodAttributes("Method"); attr.returnType = CreateTypeDiscriptor(typeVisitor.type).type; var MethodSig = returnTypeNode.Sib; MethodSig.Child.Accept(this); // visiting first child to get the name of method var methodName = this.name; attr.methodName = methodName; Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("< In MethodDeclaration.VisitNode for " + node.ClassName() + " > " + name + " " + attr.returnType); Console.ResetColor(); table.enter(name, attr); //table.PrintTable(); SetCurrentMethod(attr); // Visiting Paramter of methods if (MethodSig.Child.Sib != null) { MethodSig.Child.Sib.Accept(this); } var methodBodyNode = MethodSig.Sib; methodBodyNode.Accept(this); }
//define method attribute, increase scope, and check body public void VisitNode(MethodDeclaration node) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("< In TopDeclVisitor.VisitNode for " + node.ClassName() + " >"); Console.ResetColor(); VisitChildren(node); }