private void AssertParameterCount(IFunctionType ft) { var paramTypes = ft.ParameterTypes; if (paramTypes.Count() != Exprs.Count()) { throw new TranspilationException($"Expected {paramTypes.Count()} parameter(s) when invoking function '{Name}', but got {Exprs.Count()}", Location); } }
public override object Ejecutar(Entorno e, bool funcion, bool ciclo, bool sw, bool tc, LinkedList <Salida> log, LinkedList <Error> errores) { if (Exprs != null) { if (Exprs.Count() == 1) { Expresion expr = Exprs.ElementAt(0); object valExpr = expr.GetValor(e, log, errores); if (valExpr != null) { if (valExpr is Throw) { return(valExpr); } Valor = new Literal(expr.Tipo, valExpr, Linea, Columna); return(this); } Error = true; } else { Valores = new LinkedList <Literal>(); foreach (Expresion expr in Exprs) { object valExpr = expr.GetValor(e, log, errores); if (valExpr != null) { if (valExpr is Throw) { return(valExpr); } Valores.AddLast(new Literal(expr.Tipo, valExpr, Linea, Columna)); continue; } Error = true; } } } return(this); }