Beispiel #1
0
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();
}