public override object Ejecutar(Entorno e, bool funcion, bool ciclo, bool sw, bool tc, LinkedList <Salida> log, LinkedList <Error> errores) { if (!Else) { object valCond = Cond.GetValor(e, log, errores); if (valCond != null) { if (valCond is Throw) { return(valCond); } if (Cond.Tipo.IsBoolean()) { Entra = (bool)valCond; } else { errores.AddLast(new Error("Semántico", "Se esperaba un booleano en condicion if.", Linea, Columna)); return(null); } } } if (Else || Entra) { Entorno local = new Entorno(e); return(Bloque.Ejecutar(local, funcion, ciclo, sw, tc, log, errores)); } return(null); }
public override object Ejecutar(Entorno e) { if (Cond is Relacional) { Tipo tipCond = Cond.GetTipo(e); if (tipCond != Tipo.NULL) { if (tipCond == Tipo.ENTERO || tipCond == Tipo.DECIMAL) { Simbolo label = e.GetSimbolo(Label); if (label != null) { int valCond = Convert.ToInt32(Cond.GetValor()); if (valCond == 1) { if (Type == 1) { return(label.Valor); } } else { if (Type == 2) { return(label.Valor); } } } else { Console.WriteLine("Error, etiqueta " + Label + " no encontrada. Línea: " + Linea); } } } } else { Console.WriteLine("Error, no se puede realizar el salto condicional. Línea: " + Linea); } return(null); }