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

Re: pitanja

by Marko Bojovic
sreda, 10. januar 2007 - 06:47.

U pravu ste. Vi u domacem striktno postujte MikroJava gramatiku. Ali delimicna neispravnost koda u koleginom primeru nije bitna za sustinu onoga sto sam hteo da kazem, da je u slucajevima pozivanja operatora pristupa poljima (inace, polja u unutrasnjim klasama mogu biti tipa druge klase) potrebno vrsiti provere tipova da bi mogli da pronadjemo odgovarajuci simbol ili utvrdimo gresku, i da moramo uzeti u razmatranje i povratni tip metoda.

Pozdrav,
Bojovic Marko

Nikola Vujic wrote:
Imam samo da dodam u vezi ovoga jednu stvar. Po gramatici Mikro jave koju smo dobili u prvom domacem imamo sledece


Designator = IdentExprList.



Ide IdentExprList = IdentExprList "[" Expr "]"

| ident

| IdentExprList "." ident.


I pristup do polja klase je dozvoljen samo u ovim slucaju nigde vise. A IdenExprList ne moze da bude poziv metode pa je po ovome ovaj deo koda

metod1(un3.c[7].b[4]).c[9].b[1].a=75;

sintaksno neispravan.


Pozdrav,
Nikola Vujic.



On 1/9/07, *Djole* <djolent@gmail.com <mailto:djolent@gmail.com>> wrote:

1. Da li je u MJ dozvoljeno preklapanje metoda po imenu? Npr,
nije svejedno kada ubacujem metodu
int saberi(int a, int b, int c);
ako vec postoji
int saberi(int a);
Trenutna metoda Tab.insert(...) ne dozvoljava tako nesto.
Problem nije samo pri umetanju, vec i pri ispitivanju poklapanja
stvarnih i formalnih argumenata.

2. Ako posmatram sledeci fragment koda

Class Program
Class Unutra1{
int a; }
Class Unutra2{
Unutra1 b[];
}
Class Unutra3{
Unutra2 c[];
}
{
Unutra3 metod1(Unutra1 x) {...}
void main()
Unutra1 un1; // (**)
Unutra2 un2;
Unutra3 un3;
{ ...
metod1(un3.c[7].b[4]).c[9].b[1].a=75; // (***)

}
}

Da li treba da se detektuje koriscenje i greske u
kompatibilnosti za ovakvo igranje sa poljima klase i povratnim
tipovima metoda, posto je ovaj izraz (***) sasvim regularan za
zadatak 1a, varijanta od 8 poena? Primer sa vezbi ne konstatuje
sta ce biti rezultat izraza npr. b[1], kog je on tipa, vec kao
resultat vraca RESULT = b, tj. sam niz.
Da li to znaci da pri pozivu metoda prakticno moramo da
posmatramo i povratni tip da li se slaze, jer i vracena vrednost
moze biti argument neke druge metode?

Da li u tacki (**) treba da prijavimo, pored unosenja simbola un1 u tabelu simbola, i koriscenje simbola Unutrasnja1? To bi
znacilo da i za svaku deklaraciju tipa int a; moramo da kazemo
:"Koriscen predeklarisani simbol "int" u toj i toj liniji", jer
zaista i jeste?

-- Поздрав,
Ђоле
-----------------------------------------------------------------
unsubscribe:
minimalist@rti.etf.bg.ac.yu?subject=unsubscribe%20ir4pp1
<http://minimalist@rti.etf.bg.ac.yu?subject=unsubscribe%20ir4pp1>
-----------------------------------------------------------------