/// <summary>
        ///		Ejecuta la sentencia para devolver el resultado de una función
        /// </summary>
        private async Task ExecuteFunctionReturnAsync(SentenceReturn sentence, CancellationToken cancellationToken)
        {
            if (string.IsNullOrWhiteSpace(Context.Actual.ScopeFuntionResultVariable))
            {
                AddError("Cant execute a return because there is not function block");
            }
            else
            {
                VariableModel result = await ExecuteExpressionAsync(sentence.Expression, cancellationToken);

                // Si no hay error, añade el resultado al contexto
                if (result != null)
                {
                    Context.Actual.VariablesTable.Add(Context.Actual.ScopeFuntionResultVariable, result.Type, result.Value);
                }
            }
        }
Beispiel #2
0
        /// <summary>
        ///		Ejecuta la sentencia para devolver el resultado de una función
        /// </summary>
        private void ExecuteFunctionReturn(SentenceReturn sentence)
        {
            if (string.IsNullOrWhiteSpace(Context.Actual.ScopeFuntionResultVariable))
            {
                AddError("Cant execute a return because there is not function block");
            }
            else
            {
                VariableModel result = new Compiler.Interpreter().EvaluateExpression(Context, sentence.Expression, out string error);

                // Si no hay error, añade el resultado al contexto
                if (!string.IsNullOrWhiteSpace(error))
                {
                    AddError(error);
                }
                else
                {
                    Context.Actual.VariablesTable.Add(new VariableModel(Context.Actual.ScopeFuntionResultVariable, result.Value));
                }
            }
        }
 /// <summary>
 ///		Transforma una sentencia return
 /// </summary>
 /// <remarks>
 ///		return expresion
 /// </remarks>
 private void TransformReturn(SentenceReturn sentence)
 {
     AddSentence("return " + TransformExpressions(sentence.Expression));
 }