Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
        }