/// <summary> /// Ejecuta una sentencia de declaración /// </summary> private async Task ExecuteDeclareAsync(SentenceDeclare sentence, CancellationToken cancellationToken) { VariableModel variable = new VariableModel(sentence.Variable.Name, ConvertSymbolType(sentence.Variable.Type)); // Si es un tipo conocido, añade la variable al contexto if (variable.Type == VariableModel.VariableType.Unknown) { AddError($"Unknown variable type: {sentence.Variable.Name} - {sentence.Variable.Type}"); } else { // Ejecuta la expresión if (sentence.Expressions.Count != 0) { variable.Value = (await ExecuteExpressionAsync(sentence.Expressions, cancellationToken)).Value; } else { variable.AssignDefault(); } // Si no hay errores, añade la variable a la colección if (!Stopped) { // Ejecuta la sentencia Context.Actual.VariablesTable.Add(variable); // Debug AddDebug($"Declare {sentence.Variable.Name} = " + variable.GetStringValue()); } } }