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

Re: jos jedno pitanje i jedan veeeeeliki problem...

by Vladimir Mitrovic
ponedeljak, 21. januar 2008 - 21:35.

Sasa Vitorovic wrote:

P.S.
a imam istovremeno i problem sa Tab.insert(int kind,
String name, Struct type) jer sta se desava kada je
topScope.locals null? onda baca exception!!!! ja jesam dodao: if (scopeSyms == null) scopeSyms = new
HashTable();
ali ne znam da li to sme!!!

Sme, i treba.


Kolko ja smatram, mislim da je to development error. Ao vec hoces to da pokrijes nemoj otvarati novi opseg(to se radi na drugim mestima u kodu) vec baci neki Exception. Ja na ovo nisam niako reagovao.

Jeste development error, i to u kodu koji smo dobili kao implementaciju tabele simbola. Naime, metoda openScope() u originalu izgleda ovako:

public static void openScope() {
Scope s = new Scope();
s.outer = topScope;
topScope = s;
level++;
}

Greska lezi u tome sto se nigde ne pravi novi HashTable objekat. Dakle, ili treba napraviti konstruktor za klasu Scope (jer ne postoji) i tu dodati inicijalizaciju, ili direktno u openScope() dodati s.locals = new HashTable(); Ja sam u nastupu lenjosti izabrao ovo drugo. :)

Nije mi jasno kako si uspeo da ignorises te NullException-e, kada se svaki put kada otvoris novi scope pojavi i null pointer? Jesi ti uopste otvarao novi scope kada udjes npr. u definiciju metode?

Pozdrav,
Vladimir