public object VisitCallStatementAST([NotNull] CallStatementASTContext context) { Identifier identifier = (Identifier)Visit(context.designator()); if (identifier != null && identifier is MethodIdentifier) { MethodIdentifier methodId = (MethodIdentifier)identifier; if (context.actPars() != null) { Visit(context.actPars()); } else if (methodId.FormPars != null) { InsertError(context.BL().Symbol, "El método '" + methodId.Id + "' recibe " + methodId.FormPars.ident().Length + (methodId.FormPars.ident().Length > 1 ? " parámetros" : " parámetro") + ", y no se recibió ninguno"); } } else { IToken token = context.BL() != null?context.BL().Symbol : ((IdentASTContext)((DesignatorASTContext)context.designator()).ident()[0]).IDENT().Symbol; InsertError(token, "El identificador " + ((DesignatorASTContext)context.designator()).ident()[0].GetText() + " no corresponde a un método"); } return(new List <Pair <string, IToken> >()); }
public object VisitCallStatementAST([NotNull] CallStatementASTContext context) { string scope = Visit(context.designator()) as string; string ident = context.designator().GetText(); AddLine($"LOAD_{scope} {ident}"); if (context.actPars() != null) { string numParams = Visit(context.actPars()) as string; AddLine($"CALL_FUNCTION {numParams}"); } else { AddLine($"CALL_FUNCTION 0"); } return(null); }