public void Execute(List <Expression> instruction) { //Eliminar keyword de tipo IExecutable. No lo necesito para compilar. instruction.RemoveAt(0); if (SyntacticAnalysis(instruction)) { string nameVariable = instruction[0].ToString(); //Solo trabajar con las expresiones de la derecha del = instruction.RemoveAt(0); instruction.RemoveAt(0); //Si es un tipo Text y del operador =, y no hay mas tokens if (instruction.Count == 1 && (instruction[0] is Text)) { Memory.SaveText(nameVariable, (instruction[0] as Text).Value); } //Es un tipo number else { ConditionalFunction ecuation = ConvertToConditionalFunction.FetchFunction(instruction); if (ecuation != null) { float toSave = ecuation.Evaluate(0); // Guardar variable en la memoria if (!Compiler._haveError) { Memory.SaveVariable(nameVariable, toSave); } } } } }
public void Execute(List <Expression> instruction) { //Eliminar keyword de tipo IExecutable. No lo necesito para compilar. instruction.RemoveAt(0); if (SyntacticAnalysis(instruction)) { ConditionalFunction functionGraph = ConvertToConditionalFunction.FetchFunction(instruction); if (functionGraph != null) { Random rn = new Random((Environment.TickCount + instruction.GetHashCode()) % int.MaxValue); float pp = functionGraph.Evaluate(5); Display._fViewer.Functions.Add(new XControls.FunctionInfo() { Name = "f" + Environment.TickCount.ToString(), Function = x => functionGraph.Evaluate(x), Color = Color.FromArgb(rn.Next(255), rn.Next(255), rn.Next(255)) }); Display.onActivateGraph = true; } } }
/// <summary> /// Constructor de Funcion /// </summary> /// <param name="body">Cuerpo de la funcion</param> /// <param name="proposition">Proposicion a evaluar</param> /// <param name="ptrElse">Puntero a otra funcion condicional</param> public ConditionalFunction(FunctionArithmetic body, FunctionBoolean proposition, ConditionalFunction ptrElse) { this.body = body; this.proposition = proposition; this.ptrElse = ptrElse; }