public IHolderCil Visit(WhileExprContext parserRule, IFunctionCil cilTree, IContextCil contextCil)
        {
            var whileElse = cilTree.CreateLabel("while");

            //Voy para esa etiqueta para evaluar la cod del while
            cilTree.ThreeDirInses.Add(new GotoCil(whileElse));
            var loop = cilTree.CreateLabel("loop");

            //Esta etiqueta indica evalua el cuerpo de while
            cilTree.ThreeDirInses.Add(new Label(loop));
            Visit(parserRule.loopExpr, cilTree, contextCil);
            //Pongo la etiqueta de while
            cilTree.ThreeDirInses.Add(new Label(whileElse));
            var condValue = Visit(parserRule.whileExpr, cilTree, contextCil);

            condValue = GetValue(condValue, cilTree, CilAst.Bool);
            cilTree.ThreeDirInses.Add(new IfGoto(condValue, loop));
            //retorno el valor
            var value = Visit_void(cilTree);

            return(value);
        }
 //No se si en el while si algun tipo no esta definido cambio su tipo estatico
 public void Visit(WhileExprContext parserRule, IObjectContext <IVar, IVar> context)
 {
     Visit(parserRule.whileExpr, context);
     Visit(parserRule.loopExpr, context);
     //Si la expresion ifExpr es undefined devuelvo como tipo estatico undefined
     if (!globalContext.IfDefineType(parserRule.whileExpr.computedType))
     {
         parserRule.computedType = globalContext.Undefined;
     }
     else if (!parserRule.whileExpr.computedType.Equals(globalContext.Bool))
     {
         errorLogger.LogError($"({parserRule.whileExpr.Start.Line},{parserRule.whileExpr.Start.Column + 1}) - TypeError: The predicate of the while must have static type 'Bool', not '{parserRule.whileExpr.computedType.Name}'");
         parserRule.computedType = globalContext.Undefined;
     }
     //verifico si la expresion loopExpr es undefined
     else if (!globalContext.IfDefineType(parserRule.loopExpr.computedType))
     {
         parserRule.computedType = globalContext.Undefined;
     }
     else//Si al menos uno es undefined entonces el tipo estatico lo sera
     {
         parserRule.computedType = globalContext.Object;
     }
 }