void compilarDeclaracion(vector< Simbolo* > &vectorSimbolos, Tipo *tipo, bool global) { for(int i=0; i < vectorSimbolos.size(); i++ ){ //antes de insertar el nuevo simbolo, comprobar que no //hay otro ya con el mismo nombre presente if( existeSimbolo( tablaSimbolos, vectorSimbolos[i] ) ){ string err; err = "Existe declaración previa del símbolo " + (vectorSimbolos[i]->getNombre()); yyerror(err.c_str()); } if( vectorSimbolos[i]->getDimension() > 0 ){ //array size_t tamArray = vectorSimbolos[i]->getDimension(); Simbolo* simboloArray = vectorSimbolos[i]; TipoArray* nuevoArray = new TipoArray(tipo, tamArray); simboloArray->setTipo( nuevoArray ); tablaTipos.insertar("array", nuevoArray); } else vectorSimbolos[i]->setTipo(tipo); if( global ) vectorSimbolos[i]->setGlobal(); tablaSimbolos.insertar(vectorSimbolos[i]); } }
void ManejadorClass::escribirMain(void) { string metodo = "main"; string firma = "9"; escribirCabeceraMetodo(metodo, firma, T_INVALIDO); Simbolo* dummy = new Simbolo("Args"); dummy->setTipo(T_CADENA)->setInicializado(); registrarVariableLocal(dummy, 2); }