Re: Par Pitanja DZ3
Klasa Scope ima i atribut nVars (broj polja u tom opsegu), koji metoda
Tab.insert inkrementira kada uspesno ubaci novi objekat!
Iskoristi to.
>> >Pri deklaraciji metoda moze se desiti da se pojavi ponovljena
>> deklaracija.
>>> int error(int x, char c, char c){...}
>>>
>>
>> Nisam bas siguran da je gornja situacija korektna. Kako sada ta tvoja
>> f-ja da
>> razlikuje koju od promenljivih u ovom slucaju C adresiras? Ja mislim da
>> je
>> potrebno da se u definiciji f-je pojave sve razlicite promenljive, a tek
>> pri
>> pozivu one mogu biti iste tj. ako bi se gornja f-ja pozvala sa int i =
>> error
>> (x,c,c) sve bi trebalo da funkcionise.
>>
>
> Naravno, ovo jeste nekorektna deklaracija, medjutim, nije problem u tome
> da
> li je ovo ispravno ili ne ! Problem je u tome sto pri pokusaju da se ubaci
> CHAR C drugi put u TOPSCOPE.locals, metoda TAB.INSERT vraca upravo onaj
> prvi
> CHAR C, koji je vec u TOPSCOPE.locals . Na osnovu ovoga, ne moze da se
> 'provali' da li je drugi CHAR C uspesno ili ne ubacen u TS.locals .
> Pogledaj
> ovo :
>
> public static Obj insert (int kind, String name, Struct type) {
> // check for duplicate
> for (Obj p = topScope.locals; p != null; p = p.next)
> if (p.name.equals(name)) {
> error(name + " already declared");
> return p;
>
> }
> ....
>
> Dakle, pokusavas da u TS.locals drugi put ubacis CHAR C. Posto se ovaj Obj
> vec nalazi u TS.locals, TAB.INSERT vraca pronadjeni Obj CHAR C ( prvi ) i
> kada u parseru pokusas da ih uporedis ( da bi znao da li je uspesno
> ubacen,
> obzirom da tekstualna poruka o gresci za parser ne znaci nista ), sa
> recimo,
> Obj1.equals(Tab.insert(Obj1.kind,Obj1.name,Obj1.type) --> dobijes
> jednakost
> iako operacija nije uspela. ( Ako je operacija uspesna vraca se ubaceni
> Obj
> )---> Dakle u oba slucaja se dobije jednakost....
>
> Da li mesto (return p) u Tab.insert staviti (return noObj) i tako
> promeniti
> clasu Tab?... To je bilo pitanje.
>
> -----------------------------------------------------------------
> unsubscribe:
> minimalist@titan.etf.bg.ac.yu?subject=unsubscribe%20ri4pp
> -----------------------------------------------------------------
>
Tab.insert inkrementira kada uspesno ubaci novi objekat!
Iskoristi to.
>> >Pri deklaraciji metoda moze se desiti da se pojavi ponovljena
>> deklaracija.
>>> int error(int x, char c, char c){...}
>>>
>>
>> Nisam bas siguran da je gornja situacija korektna. Kako sada ta tvoja
>> f-ja da
>> razlikuje koju od promenljivih u ovom slucaju C adresiras? Ja mislim da
>> je
>> potrebno da se u definiciji f-je pojave sve razlicite promenljive, a tek
>> pri
>> pozivu one mogu biti iste tj. ako bi se gornja f-ja pozvala sa int i =
>> error
>> (x,c,c) sve bi trebalo da funkcionise.
>>
>
> Naravno, ovo jeste nekorektna deklaracija, medjutim, nije problem u tome
> da
> li je ovo ispravno ili ne ! Problem je u tome sto pri pokusaju da se ubaci
> CHAR C drugi put u TOPSCOPE.locals, metoda TAB.INSERT vraca upravo onaj
> prvi
> CHAR C, koji je vec u TOPSCOPE.locals . Na osnovu ovoga, ne moze da se
> 'provali' da li je drugi CHAR C uspesno ili ne ubacen u TS.locals .
> Pogledaj
> ovo :
>
> public static Obj insert (int kind, String name, Struct type) {
> // check for duplicate
> for (Obj p = topScope.locals; p != null; p = p.next)
> if (p.name.equals(name)) {
> error(name + " already declared");
> return p;
>
> }
> ....
>
> Dakle, pokusavas da u TS.locals drugi put ubacis CHAR C. Posto se ovaj Obj
> vec nalazi u TS.locals, TAB.INSERT vraca pronadjeni Obj CHAR C ( prvi ) i
> kada u parseru pokusas da ih uporedis ( da bi znao da li je uspesno
> ubacen,
> obzirom da tekstualna poruka o gresci za parser ne znaci nista ), sa
> recimo,
> Obj1.equals(Tab.insert(Obj1.kind,Obj1.name,Obj1.type) --> dobijes
> jednakost
> iako operacija nije uspela. ( Ako je operacija uspesna vraca se ubaceni
> Obj
> )---> Dakle u oba slucaja se dobije jednakost....
>
> Da li mesto (return p) u Tab.insert staviti (return noObj) i tako
> promeniti
> clasu Tab?... To je bilo pitanje.
>
> -----------------------------------------------------------------
> unsubscribe:
> minimalist@titan.etf.bg.ac.yu?subject=unsubscribe%20ri4pp
> -----------------------------------------------------------------
>
- References:
- Re: Par Pitanja DZ3
- From: lilit78yu@softhome.net
- Re: Par Pitanja DZ3
Previous by date: Re: Definicija metoda u MJ
Next by date: Re: Definicija metoda u MJ
Previous by thread: Re: Par Pitanja DZ3 Next by thread: Re: Par Pitanja DZ3
Previous by thread: Re: Par Pitanja DZ3 Next by thread: Re: Par Pitanja DZ3