/// <summary> /// Ejecuta una sentencia de impresión /// </summary> private VariableModel ExecutePrint(ImplicitFunctionModel function) { VariableModel result = Context.Actual.VariablesTable[function.Arguments[0].Name]; // Imprime el resultado if (result == null) { AddError($"Method Print: Cant find value for argument {function.Arguments[0].Name}"); } else { Interpreter.DbScriptExecutor.ConsoleWriteLine(result.GetStringValue()); } // Devuelve el resultado return(result); }
/// <summary> /// Ejecuta las funciones implícitas /// </summary> protected override async Task <VariableModel> ExecuteAsync(ImplicitFunctionModel function, CancellationToken cancellationToken) { VariableModel result = null; // Evita el warning de async / await await Task.Delay(1); // Ejecuta la función adecuada if (string.IsNullOrWhiteSpace(function.Definition.Name)) { AddError("Function unreconized"); } else if (function.Definition.Name.Equals("print", StringComparison.CurrentCultureIgnoreCase)) { result = ExecutePrint(function); } else { AddError($"Function undefined: {function.Definition.Name}"); } // Devuelve el resultado return(result); }
/// <summary> /// Ejecuta una función implícita /// </summary> protected abstract Task <VariableModel> ExecuteAsync(ImplicitFunctionModel function, CancellationToken cancellationToken);