private Nodo factor() {
        Nodo tem = null;

        if (aux.getTipo()==Nodo.tipoToken.ParentesisIzquierdo){
            aux=(Tokens2)tok.next();
                tem = this.expresion();
            if (aux.getTipo()==Nodo.tipoToken.ParentesisDerecho) {
                aux=(Tokens2)tok.next();
            } else {
                error(" Se esperaba )");
            }
        }else{
            if (aux.getTipo()==Nodo.tipoToken.Numero){
                try{
                    int num=Integer.parseInt(aux.getToken());
                    tem=new Nodo(aux.getToken(),aux.getTipo(),"int");
                    tem.setValorNum(num);
                }catch(Exception e){
                    float numf=Float.parseFloat(aux.getToken());
                    tem=new Nodo(aux.getToken(),aux.getTipo(),"float");
                    tem.setValorNum(numf);
                }
                aux=(Tokens2)tok.next();
            }else{
                if (aux.getTipo()==Nodo.tipoToken.Identificador){
                    tem = new Nodo(aux.getToken(), aux.getTipo(),table.isType(aux.getToken()));
//                    if(this.table.isType(aux.getToken())==null || this.table.isType(aux.getToken())==""){
                    if(this.table.find(aux.getToken())==false){
                        error("Identificador no declarado -> "+aux.getToken());
                    }else if("int".equals(tem.getTipoDato())){
                        tem.setValorNum(this.table.getValueInt(aux.getToken()));
                    }else if("float".equals(tem.getTipoDato())){
                        tem.setValorNum(this.table.getValuefloat(aux.getToken()));
                    }else{
                        error("Tipo incompatible");
                    }
                    aux=(Tokens2)tok.next();
                }else{
                    error(" Error de Sintaxis ");
                }
            }
        }
        return tem;
    }