«« ( Date ) »» // «« ( Thread ) »» // ir4pp1 - 2008

domaci 2 problem

by Bojan
četvrtak, 10. januar 2008 - 17:23.

Meni se cini da postoji greska u kodu metode u fajlu Tab.java



public static Obj find(String name) {

HashTable scopeSyms;

Obj o = null;

for (Scope s = topScope; s != null; s = s.outer) {

scopeSyms = s.locals;

if (scopeSyms != null) {

o = (Obj) scopeSyms.searchKey(name);

// ovde bih dodao

//if(o != null) break;

} else {

o = null;

}

}

if (o == null) {

error("GRESKA: Simbol " + name + " nije pronadjeno.");

return noObj;

} else {

return o;

}

}



Naime ako bi se pretrazivao neki scopeSyms i pronasao Obj sa trazenim
kljucem, algoritam nastavlja dalje sa pretragom i prelazi na
outerScope.locals i ako tu ne pronadje trazeni kljuc on vraca null iako je
pronasao kljuc u nekom predhodnom scope-u, (prakticno on ce ovde vratiti Obj
samo ako ga pronadje u universe scope-u !) Dodavanjem linije koda koju sam
zakomentarisao bi se resio taj problem.

Zamolio bih asistenta da proveri ovo i odgovori da li sam u pravu.

Hvala.