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

Re: Pitanja u vezi sa 4. parc. domacim

by Nikola Mihajlović
utorak, 07. jun 2005 - 14:28.

Ne pratim ni ja vežbe ali možda mogu da ti pomognem.
Postoje dva načina kako može da se uradi kompajler:
- dodavanjem akcionog koda u cup fajl koji radi ono što ti je
potrebno + korišćenje pomoćnih klasa (tabela simbola)
- dodavanjem akcionog koda u cup fajl čija je jedina svrha da
generiše ast. Sa ast-om kasnije možeš da radiš šta hoćeš,
apstraktniji je i lepši od gramatike i nisi više vezan za cup
(više prolaza npr. za semantičku analizu, generisanje koda)

Treći domaći je rađen na prvi način (bez ast-a). Ovaj pristup ne
možeš da koristiš ako tvoj kompajler treba da radi recimo i
semantičku analizu i generisanje koda. Komplikovano je i
uzaludno da implementiraš to u jednom prolazu pomoću akcionog
koda.

Međutim, u postavci domaćeg je rečeno da je ulazni fajl ispravan i
da koristiš i dalje prvi način, tako da zaboravi na ast, a kao polaznu
tačku za četvrti domaći iskoristi treći koji ćeš da očistiš od semantičke
i sintaksne (god bless) analize.

----- Original Message ----- From: "Uros" <urke_etf@yahoo.it>
To: <ri4pp@titan.etf.bg.ac.yu>
Sent: Tuesday, June 07, 2005 6:36 AM
Subject: [ri4pp] Pitanja u vezi sa 4. parc. domacim


Da li koristimo tabelu simbola koju smo kreirali u 3. domacem, u koju
prethodno ubacimo adrese?
Pretpostavljam da treba da kreiramo AST za ceo program, pa sam
malo zbunjen nekim definicijama u materijalima sa vezbi, o tome kako
primena AST razdvaja sintaksnu analizu od semanticke i generisanja koda...
Zar nismo vec napravili CUP fajl u kome smo dodali semanticku analizu? Kako
sad to da razdvojimo?

Takodje se govori o ugradnji semantickih pravila u klase od kojih se gradi AST,
a u 3. domacem su ta pravila ugradjena u CUP fajl...

Molio bih nekoga kome je ovo jasno (ja bas nisam bio redovan na vezbama u poslednjih
mesec dana), ili asistenta ako stigne, da malo objasni sta treba da se radi, jer mi se cini
da ovo sto pise u postavci moze da se uradi na razlicite nacine...

Da li se radi ovako:
- Ubacivanje adresa u tabelu simbola
- Pravljenje AST-a od elemenata iz tabele i novih klasa koje predstavljaju izraze, if/else/while strukture itd...
- generisanje asemblerskih instrukcija pomocu AST-a
(da li ovo gore treba sve da uradimo dodavanjem akcionog koda u cup fajl iz 3. domaceg i dodatnih klasa u paket?)
- generisanje bajt koda od asem. instr., pomocu klasa Code, Item itd...
?

Hvala unapred!
Pozdrav,
Uros