Re: designator problem
Moze i tako samo pazi kada trazis funkciju i napravis findFunction() moras
da pored imena prosledis i tipove parametara da bi razlikovao f(int) od
f(char).
Pogledaj u kodu koji sam postavio funkciju equals u klasi Function tu
mozes videti (videti citaj copy-paste-ovati ;)) kako se iz liste tipova
izvlace tipovi (objekti klase Struct) i uporedjuju sa tipovima parametara
u tabeli simbola. Posto vec postoji ta funkcija nema smisla da je pises od
pocetka.
Pozdrav,
Jovan
> Hvala na brzom i opsirnom odgovoru.
> Nisam bas kopirao Vasu tabelu simbola, tako da ne mogu da iskoristim bas
> takve metode jer su kod mene malo drugacije. Problem sam (nadam se) resio
> tako sto sam kreirao metodu findVariable u klasi Scope koja ispituje kind
> simbola i ako je kind: VAR, FIELD, LVAR ili FPAR vraca taj simbol.
>
> Pozdrav
>
> 2006/6/7, Jovan Popovic <jovan@etf.bg.ac.yu>:
>>
>>
>> Ako koristis funkcije tabele simbola koje sam postavio mozes da koristis
>> funkcije find(String name) i
>> find(String name, int, Object obj)
>>
>> find("x") ce naci bilo koji simbol koji ima ime x a nije funkcija. Ovo
>> se
>> postize tako sto se u find() kreira privremeni simbol prototype kome se
>> postavlja name="x" i obj==null i on se uporedjuje sa svim simbolima u
>> tabeli. Simbol tipa funkcija proverava da li je obj == null i ako JESTE
>> vraca rezultat false tako da poziv find("x") nikada ne moze da nadje
>> funkciju x. Simbol tipa promenljiva ili klasa proverava da li je obj ==
>> null i NIJE vraca false tako da poziv find("x") uvek vraca promenljive,
>> klase itd. U ovom slucaju ce naci promenljivu x.
>>
>> Ako hoces da pronadjes funkciju x() pozovi ovo:
>>
>> ArrayList parameterTypes = new ArrayList();
>> //Ubacivanje simbola koji predstavljaju tipove u listu
>> //u ovom slucaju lista ostaje prazna
>> find("x", Obj.Function, parametertypes);
>>
>> ova funkcija postavlja polje obj prototipa na vrednost parametertypes
>> tj.
>> praznu ArrayListu, tako da ce funkcija function::equals(Obj) vratiti
>> true
>> a Variable::equals(Obj symbol) vratiti false. Na ovaj nacin mozes da
>> nadjes funkciju koja se zove "x" a nema parametre.
>>
>> Pogledajte Junit testove klasa TestCaseMethods u jednoj od test funkcija
>> se kreira simbol funkcije bez parametara i onda se pomocu find(String
>> name, int, Object obj) nalazi taj simbol.
>>
>>
>> Pazite
>> find("x", Obj.Function, new ArrayList()); nalazi funkciju bez parametara
>>
>> find("x", Obj.Function, null); ne nalayi tu funkciju zato sto se polje
>> obj
>> postavlja na null i function::equals(Obj) vraca false.
>>
>> Pozdrav,
>> Jovan
>>
>> > Izvinjavam se zbog prethodne poruke (poslata je slucajno pre
>> zavrsetka).
>> >
>> > Evo ovako izgleda jedan deo gramatike vezano za designator smenu:
>> >
>> > <designator>:=ID;
>> > <designator>:=<designator> TACKA ID;
>> > <designator>:=<designator> ( <act_pars> );
>> >
>> > Sto znaci, da u prvoj smeni ID moze da bude identifikator neke
>> > promenljive,
>> > polja klase ili naziv funkcije (metode).
>> > Javlja se sledeci problem, ako imamo ovakav pogram:
>> >
>> > ...
>> > struct A {
>> > var int a;
>> > }
>> > ...
>> > int x() {}
>> > ...
>> > var A x;
>> >
>> > ...
>> > begin
>> > x.a=2;
>> > end;
>> >
>> > Ovde je prvo deklarisana funkcija x, pa zatim promenljiva tipa A.
>> > Ako se metoda checkIdentificator(String name) implementira kao u
>> skripti,
>> > onda ce parser ovde da javi semanticku gresku, jer ce pronaci
>> > identifikator
>> > x koji je funkcija i koja nema u svom opsegu polje a, a ne ovaj koji
>> je
>> > referenca tipa A.
>> >
>> > Da li postoji nacin da se algoritam modifikuje da radi kako treba ili
>> mora
>> > da se menja gramatika?
>> >
>> > Pozdrav, Rade
>> >
>>
>>
>>
>> -----------------------------------------------------------------
>> unsubscribe:
>> minimalist@rti.etf.bg.ac.yu?subject=unsubscribe%20ri4pp
>> -----------------------------------------------------------------
>>
>
- References:
- designator problem
- From: "Rade Jakovljević" <radegm@gmail.com>
- designator problem
- From: "Rade Jakovljević" <radegm@gmail.com>
- Re: designator problem
- From: "Jovan Popovic" <jovan@etf.bg.ac.yu>
- Re: designator problem
- From: "Rade Jakovljević" <radegm@gmail.com>
- designator problem
Previous by date: Re: designator problem
Next by date: jos uvek problem sa designatorom
Previous by thread: Re: designator problem Next by thread: jos uvek problem sa designatorom
Previous by thread: Re: designator problem Next by thread: jos uvek problem sa designatorom