Re: HITNO PITANJE!!
:(((
Zar niko ne moze pomoci?
LJudi, gustooo je.
Precizniji opis problema:
trebam na pocetku deklaracije unutrasnje klase kreirati novi Obj.Type i
odgovorajuci Struct.Class i zapamtiti da sam u telu te klase i onda sva
polja u deklaraciji unurasnje klase da "znaju" da su deo klase i da znaju
koje klase (jer kod stabla ne mozemo znati koji je poslednji uneti element)
da se ne bi stavljala u scope, nego dodala unutar tipa klase.
i da se potom, kada se "zatvori" deklaracija, reesetuje na null promenljiva
classDeclared koja mi govori u kojoj sam klasi.
Isto kod metode moram na pocetku njene definicije otvoriti novi Scope, a na
kraju njene definicije postaviti njene locals na scope locals i zatvoriti
Scope.
Medjutim, kao sto pise nize u mejlu, neterminali iz desne strane produkcije
se izvrse pre akcije vezane za celu produkciju.
Hvala unapred!
Током 13.6.07., Sinisa Rudan <sinisa.rudan@gmail.com> је написао:
--
Sinisa Rudan
--------------------------------------------------------------------------
Associate editor of multimedia part of InfoM Journal,
Journal of Information technology and multimedia systems.
http://www.infoM.org.yu
MAGIC WAND solutions * Studio
founder and owner
http://www.MagicWandSolutions.com
http://galeb.etf.bg.ac.yu/~sir
--------------------------------------------------------------------------
Zar niko ne moze pomoci?
LJudi, gustooo je.
Precizniji opis problema:
trebam na pocetku deklaracije unutrasnje klase kreirati novi Obj.Type i
odgovorajuci Struct.Class i zapamtiti da sam u telu te klase i onda sva
polja u deklaraciji unurasnje klase da "znaju" da su deo klase i da znaju
koje klase (jer kod stabla ne mozemo znati koji je poslednji uneti element)
da se ne bi stavljala u scope, nego dodala unutar tipa klase.
i da se potom, kada se "zatvori" deklaracija, reesetuje na null promenljiva
classDeclared koja mi govori u kojoj sam klasi.
Isto kod metode moram na pocetku njene definicije otvoriti novi Scope, a na
kraju njene definicije postaviti njene locals na scope locals i zatvoriti
Scope.
Medjutim, kao sto pise nize u mejlu, neterminali iz desne strane produkcije
se izvrse pre akcije vezane za celu produkciju.
Hvala unapred!
Током 13.6.07., Sinisa Rudan <sinisa.rudan@gmail.com> је написао:
Kada definisemo glavnu klasu (Program), onda zelimo da neke stvari
odradimo cim se naidje na pocetak definicije, a neke nakon sto se zavrsi
cela definicija, tj. ceo program.
To funkcionise kako treba, ali ne znam zasto nece na isti nacin da radi i
kod definicije unutrasnjih klasa??
Kod glavnog programa smo zavrsne akcije obavljali ovako (tj. stavljali smo
ih uz svaku opciju:
Program ::= CLASS ProgId:ProgObj DeclarationList LBRACE
MethodDeclarationList RBRACE
{:
ProgObj.locals=Tab.topScope.locals;
Tab.closeScope();
:}
| CLASS ProgId:ProgObj LBRACE MethodDeclarationList RBRACE
{:
ProgObj.locals=Tab.topScope.locals;
Tab.closeScope();
:}
itd......
a akciju koju smo zeleli da se obavi na pocetku definicije, smo ovako:
ProgId ::= IDENT: id
{:
//trace("Started with class");
Obj obj = Tab.insert(Obj.Prog, id, Tab.noType);
Tab.openScope();
RESULT = obj;
:};
dakle, prvo se razresi ProgId pa onda cela produkcija u kojoj se ovaj
neterminal nalazi.
Ali kada uradim to isto kod deklaracije unutrasnje klase:
ClassDecl ::= CLASS ClassName LBRACE LocalFieldList RBRACE
{:
System.out.println("Setting classDeclared = null");
:}
|
| CLASS ClassName LBRACE RBRACE
{:
classDeclared = null;
:}
| error RBRACE {: System.out.println("***** Error in declaration
of internal class"); :};
Dakle ovo zelim da se obavi nakon zavrsetka deklaracije klase tj. nakon
njene zatvorene } zagrade.
Svakako zelim nakon sto sam sva njena polja ubacio u tabelu simbola.
A sledecu akciju sam zeleo da se obavi na pocetku, cim se pronadje
deklaracija unutrasnje klase, pre nego se pocnu obradjivati njena polja.
ClassName ::= IDENT:id
{: System.out.println("Internal class '"+id +"'
declared");
Struct t = new Struct(Struct.Class );
classDeclared = Tab.insert(Obj.Type, id, t);
System.out.println("Setting classDeclared =
"+classDeclared);
RESULT = id;
:};
Medjutim, obe akcije se izvrse pre nego se razrese LocalFieldList!!!
Kako moze da se prepozna cela klasa pre nego su se razresila njena polja?
Zbog cega kod glavnog programa radi, a ovde ne?
Da li redosled definicije (ne)terminala utice ili redosled produkcija?
Mada ne verujem,
a pored toga sam i pokusao sa raznim izmenama redosleda svega i svacega!
-----------------------------------
(inace, imam:
LocalFieldList ::= LocalFieldList VarDecl SEMICOLON | VarDecl SEMICOLON;
VarDecl ::= Type:t {: TypeForVarList = t; :} VarList;
VarList ::= VarList COMMA VarPart | VarPart;
VarPart ::= IDENT:id
{:
System.out.println("id="+id+".
classDeclared="+classDeclared);
if(classDeclared == null)
{
Tab.insert(Obj.Var,id,TypeForVarList);
}
else
{
classDeclared.type.insertField(Obj.Var
,id,TypeForVarList);
}
:}
| IDENT:id LBRACKET RBRACKET;
DeclarationList ::= DeclarationList DeclarationPart | DeclarationPart;
DeclarationPart ::= ConstDecl SEMICOLON | VarDecl SEMICOLON |
ClassDecl;
-----------------------------
Jos jedno pitanje,
vezano za asistentov poslednji odgovor oko level:
Da li je za polja klase postavljamo uvek da im je level=0 ili uvek da je
level=1 ili ...?
Hvala unpared
dobroj dusi :)
Hitno je!
--
Sinisa Rudan
--------------------------------------------------------------------------
Associate editor of multimedia part of InfoM Journal,
Journal of Information technology and multimedia systems.
http://www.infoM.org.yu
MAGIC WAND solutions * Studio
founder and owner
http://www.MagicWandSolutions.com
http://galeb.etf.bg.ac.yu/~sir <http://galeb.etf.bg.ac.yu/%7Esir>
--------------------------------------------------------------------------
--
Sinisa Rudan
--------------------------------------------------------------------------
Associate editor of multimedia part of InfoM Journal,
Journal of Information technology and multimedia systems.
http://www.infoM.org.yu
MAGIC WAND solutions * Studio
founder and owner
http://www.MagicWandSolutions.com
http://galeb.etf.bg.ac.yu/~sir
--------------------------------------------------------------------------
- References:
- HITNO PITANJE!!
- From: "Sinisa Rudan" <sinisa.rudan@gmail.com>
- HITNO PITANJE!!
Previous by date: Re: Formalni parametri i lokalne promenljive metode!
Next by date: Spisak predatih radova
Previous by thread: HITNO PITANJE!! Next by thread: Formalni parametri i lokalne promenljive metode!
Previous by thread: HITNO PITANJE!! Next by thread: Formalni parametri i lokalne promenljive metode!