public override object ejecutarSinposicion(ZContenedor e) { ZBool cond = Utilidades.evaluarCondicion(condicion, e); return(cond.obtenerValor() ? Utilidades.desenvolver(valor1.ejecutar(e)) : Utilidades.desenvolver(valor2.ejecutar(e))); }
public override object ejecutarSinposicion(ZContenedor e) { //switch (2) //{ // case 3: //case 2 : instruciones //. //defualt: //} ZContenedor local = new ZContenedor(e, null); //crear el entorno local.enFuncion = e.enFuncion; local.enProcedimiento = e.enProcedimiento; foreach (NodoCase @case in cases) { //entorno local por caso NodoIgualQue aux = new NodoIgualQue(exp, @case.Exp); ZBool condicion = Utilidades.evaluarCondicion(aux, e); //--- boleando return if (condicion.obtenerValor()) { var result = @case.ejecutar(local); if (result is NodoBreak) { return(null); } if (result is Retorno || result is RetornoProc) { return(result); } } } var resultDefault = defult.ejecutar(local); if (resultDefault is NodoBreak) { return(null); } if (resultDefault is Retorno || resultDefault is RetornoProc) { return(resultDefault); } // si hay un continue se ignora return(null); }