«« ( Date ) »» // «« ( Thread ) »» // ri4pp - 2006

Domaci >> Semantika >> createItem problemi

by Milan Aleksic
utorak, 23. maj 2006 - 17:04.

U skripti za semanticku analizu pise:

algoritam CreateItem

ulaz : Simbol iz tabele simbola

izlaz : Item koji sadrži informacije o simbolu

1.Kreira se novi Item i u njega se prepisuju adresa, ime i tip
simbola.

2. Postavlja se vrsta simbola (polje *kind)*.

Ako je vrsta simbola:

2.1. Globalna promenljiva : vrsta Item-a je Static

2.2. Lokalna promenljiva ili parametar : vrsta
Item-a je Local

2.3. Polje u klasi : vrsta Item-a je Field

2.4. Element niza : vrsta Item-a je Elem

2.5. Funkcija ili konstanta: vrsta Item-a je Stack

3. Vraća se referenca na kreirani Item

dok u SemanticAnalyzer.ItemFactory stoji:

public Item CreateItem(Obj o)
{
Item item = new Item();
item.name = o.name ;
if(o instanceof Variable)
{
//Set the type and address for
Variable var = (Variable)o;
item.type = var.type;
item.adr = var.adr;
}
//Set a item kind
if (o.isA(ObjFactory.CONSTANT))
item.kind = Item.Con;
else if (o.isA(ObjFactory.STATIC))
item.kind = Item.Static;
else if (o.isA(ObjFactory.STATIC ))
item.kind = Item.Local;
else if (o.isA(ObjFactory.FIELD))
{
item.kind = Item.Fld;
}
else if (o instanceof Function)
{
item.kind = Item.Meth ;
item.obj = o;
}
return item;
}




dakle razlike su:

1. u kodu funkcija prelazi u metod (umesto u "stek"),
2. Item.konstanta uopste ne postoji u skripti, kao ni Item.Method ali
se koristi u kodu
3. u datom kodu ne postoji uopste podrska za parametre a za ulaz
Obj.LOCAL nema obrade ----- ovo je najmanji problem, vidi se izdaleka
ali ajd i to da spomenem...

Ono sto mene pre svega interesuje je: da li da se u ovakvim i slicnim
situacijama slobodno 100% oslonimo na skriptu a da po potrebi (kada hocemo
da prosirujemo klase zbog rada sa objektima i slicnim neobradjenim stvarima)
nadogradjujemo te nase objekte, a da uopste ne gledamo na dat izvorni kod,
vec da sami radimo nadogradnju? Sta je 100% tacno, skripta/primeri/neka
dokumentacija?

p.s. znam da bih znao odgovor na moje pitanje da sam procitao sve skripte do
kraja ali mislim da je ovo jedan od najbitnijih delova analizatora pa mislim
da bi bilo dobro da razjasnimo ovu funkciju do kraja...

postovanje & pozdrav

Milan Aleksic