Simbolo::Simbolo(Simbolo const& otro): _ptr(otro._ptr->clone()), _identificador(otro.getIdentificador()), _tipo(otro.getTipo()), _constante(otro.esConstante()), _cantDimensiones(otro.getCantidadDimensiones()), _inicializado(otro.estaInicializado()) { }
Tipo* buscaYapilaDireccion(string nombre) { Simbolo *simbolo; simbolo = tablaSimbolos.buscar(nombre); if( !simbolo ){ char error[64]; sprintf(error, "Identificador %s no encontrado", nombre.c_str()); yyerror(error); } if( simbolo->getGlobal() ) printf("IPUSH %d\n", simbolo->getDireccion()); else{ printf("IPUSHBP %d\n", simbolo->getDireccion()); if(simbolo->getParametroPorRef()){ printf("ILOAD\n"); //cargar el entero que representa la //direccion de memoria de la referencia } } return simbolo->getTipo(); }