public override AST_Node VisitMethod([NotNull] CoolParser.MethodContext context) { AST_Id id = new AST_Id(context.ID(), context.ID().GetText()); AST_Type_Node type = new AST_Type_Node(context.TYPE(), context.TYPE().GetText()); List <AST_ClassProperty> param = new List <AST_ClassProperty>(); AST_Expresion corpus = (AST_Expresion)Visit(context.expr()); foreach (var item in context.formal()) { var iid = new AST_Id(item.ID(), item.ID().GetText()); var ity = new AST_Type_Node(item.TYPE(), item.TYPE().GetText()); var formald = new AST_FormalDec(item, iid, ity); AST_ClassProperty i = new AST_ClassProperty(item, formald, null); param.Add(i); } return(new AST_MethodDef(context, id, type, new AST_ListProp(context, param), corpus)); }
public override ASTNode VisitMethod([NotNull] CoolParser.MethodContext context) { var methodNode = new MethodNode(context); methodNode.Id = new IdNode(context.ID().Symbol.Line, context.ID().Symbol.Column, context.ID().GetText()); var formalNodes = new List <FormalNode>(); foreach (var x in context.formal()) { formalNodes.Add(Visit(x) as FormalNode); } methodNode.Arguments = formalNodes; methodNode.TypeReturn = new TypeNode(context.TYPE().Symbol.Line, context.TYPE().Symbol.Column, context.TYPE().GetText()); methodNode.Body = Visit(context.expr()) as ExpressionNode; return(methodNode); }