private Nodo seleccion() {
        ArrayList<Nodo> lis;
        Nodo tem = new Nodo("if", Nodo.tipoToken.PalabraReservada);
        if (aux.getTipo()==Nodo.tipoToken.ParentesisIzquierdo) {
            aux=(Tokens2)tok.next();
        } else {
            error("Se esperaba (");
        }
        Nodo temR = new Nodo("Condición", null);
        Nodo res=expresion();
        if(res==null){
            error("No se encontró expresión");
        }else{
            if(!res.getTipoDato().equals("bool")){
                error("Expresión incompatible");
            }
        }
        temR.addNodo(res);
        tem.addNodo(temR);
        if (aux.getTipo()==Nodo.tipoToken.ParentesisDerecho) {
            aux=(Tokens2)tok.next();
        } else {
            error(" Se esperaba )");
        }
        lis = this.listaSentencias(1);
        
        Nodo tem2 = new Nodo("Lista_Sentencias_true", null);
        Iterator nex = lis.iterator();
        while (nex.hasNext()) {
            tem2.addNodo((Nodo) nex.next());
        }
        tem.addNodo(tem2);
        if (aux.getToken().equals("else")) {
            aux=(Tokens2)tok.next();
            lis.clear();
            lis = listaSentencias(1);
            
            tem2 = new Nodo("Lista_Sentencias_else", null);
            nex = lis.iterator();
            while (nex.hasNext()) {
                tem2.addNodo((Nodo) nex.next());
            }
            tem.addNodo(tem2);
        } 
        if (aux.getToken().equals("fi")) {
            aux=(Tokens2)tok.next();
        } else {
            error(" Se esperaba fi");
        }
        return tem;
    }