Re: Par Pitanja DZ3
DA ali mozes da izvrsis akciju upisa u level kada se zavrsi opseg
formalnih parametara. Mada sam ja za to uveo posebnu pomocnu prom.
U svakom slucaju, nisam mislio na to, vec da proveru da li je objekat
ubacen mozes da vrsis ispitivanjem nVars_a. Zapamtis vrednost u lokalnu
int prom n, uradis insert (...) i proveris da li se vrednost nVars
povecala za 1 u odnosu na n. Tako znas da li je insert ovavljen uspesno
ili vec postoji objekat sa istim imenom (tada se nece promeniti nVars). Na
taj nacin ne moras da proveravas povratni tip i menjas metodu Tab.inster
(...)
> Pazi! nVars predstavlja ukupan broj parametara, a level treba da
> predstavlja
> broj formalnih parametara !
>
>> 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
> -----------------------------------------------------------------
>
formalnih parametara. Mada sam ja za to uveo posebnu pomocnu prom.
U svakom slucaju, nisam mislio na to, vec da proveru da li je objekat
ubacen mozes da vrsis ispitivanjem nVars_a. Zapamtis vrednost u lokalnu
int prom n, uradis insert (...) i proveris da li se vrednost nVars
povecala za 1 u odnosu na n. Tako znas da li je insert ovavljen uspesno
ili vec postoji objekat sa istim imenom (tada se nece promeniti nVars). Na
taj nacin ne moras da proveravas povratni tip i menjas metodu Tab.inster
(...)
> Pazi! nVars predstavlja ukupan broj parametara, a level treba da
> predstavlja
> broj formalnih parametara !
>
>> 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
> -----------------------------------------------------------------
>
- References:
- Re: Par Pitanja DZ3
- From: lilit78yu@softhome.net
- Re: Par Pitanja DZ3
Previous by date: Re: Par Pitanja DZ3
Next by date: Re: Par Pitanja DZ3
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