Professional Documents
Culture Documents
a) (8) ta je poljska translaciona gramatika, zato je ona vana i kako se neka translaciona gramatika
transformie u poljsku?
akcioni simboli su na samom kraju desne strane smene
Primeri:
<X> a {T} {V} OK
<Y> {R}
OK
<Z> {T} y
NIJE OK
Ukoliko gramatika nije poljska, moemo je transformisati:
1. <X> A {y} B
transformiemo u:
<X> <N> B
<N> A {y}
Druga varijanta:
1. <X> A <M> B
transformiemo u:
<M> {y}
a) (8) U po jednoj reenici objasniti semantiku izraza, iskaza i deklaracija.
Terminologija:
Izrazi se izraunavaju i daju vrednost (i mogu ali ne moraju imati bone efekte)
Iskazi se izvravaju i proizvode bone efekte.
Deklaracije se elaboriraju da proizvedu vezivanja
Izraz
1.
2.
3.
U optem sluaju, na osnovu datih pravila formira se sistem skupovnih jednakosti koji se reava iterativno:
Inicijalno se usvoji da su svi FOLLOW skupovi prazni.
Usvojene vrednosti se uvrste u jednakosti ime se dobijaju nove vrednosti FOLLOW skupova.
Korak 2. ponavlja se sve dok postoji promena bar u jednom skupu. Krajnje vrednosti predstavljaju konano
reenje.
a) (8) Nacrtati dijagram klasa objektno orijentisane implementacije konanog automata sa dva stanja A i B prema
projektnom uzorku State.
2008
1. [8] Objasniti podelu aktivnosti kod dvoprolaznih prevodilaca. Nabrojati
prednosti i mane
dvoprolaznih prevodilaca u odnosu na jednoprolazne.
2. [8] Nacrtati izgled run time steka i navesti sekvencu koda za formiranje
pristupne veze
procedure D. Procedure C i D su ugnedene u proceduru B, koja je ugnedena
u
proceduru A. Iz A se poziva B, iz B se poziva C, iz C se poziva D.
<A> <B>
<B> 1
<A> 1
<B> 2 zameniti sa <A> 2
...
...
<B> n
<A> n
prethodno ukloniti smenu <B> <B> ako eventualno
postoji.
podataka.
tok podataka
2. [3] Navesti razloge zbog kojih se skener ne realizuje kao sastavni deo parsera.
-ovo nije odgovor xD
Leksiki analizator ima ulogu pripreme ulaza za sintaksno-semantiku analizu i prevoenje. Ulaz
u leksiki analizator je program u obliku niza znakova. Zadatak leksikog analizatora je da u
nizu znakova identifikuje pojavu logiki povezanih grupa znakova (leksikih jedinica, odnosno
leksema) i na izlazu izda za svaku prepoznatu leksemu njoj odgovarajui interni leksiki kod.
Klasni deo internog koda slui da oznai tip leksike jedinice, a vrednosni deo daje eventualne
dodatne informacije.
1. [3] Napisati (ako postoji) gramatiku koja je LL(1) ali nije LR(0).
a) LL(1) ali nije LR(0)
b) LR(0) ali nije LL(1)
c)
a)
Reenje predstavlja bilo koja LL(1) gramatika sa praznom smenom, s obzirom da LR(0) gramatike ne poseduju
prazne smene, na primer:
1.
<S>a
SELECT(1) = {a}
2.
<S>
SELECT(2) = {}
b) Reenje predstavlja bilo koja LR(0) gramatika sa levom rekurzijom, na primer (LR(0) proveriti konstrukcijom
parsera)
c)
1.
<S><S> a
SELECT(1) = {a}
2.
<S>a
SELECT(2) = {a}
Svaka LL(1) gramatika nije nuno i SLR(1) gramatika. Dok se kod LR(1) gramatika pri svoenju ruke na neki
neterminal <A> gleda taan kontekst u kome se neterminal <A> javlja, kod SLR(1) gramatika stvar se
uproava korienjem skupa FOLLOW(<A>). Sledi primer LL(1) gramatike u kome se <A> javlja dva puta u
razliitom kontekstu prvo deavanje je praeno terminalom a, a drugo terminalom b.
1.
<S><A> a <A> b
2.
<S>b
SELECT(2) = {b}
3.
<A>
simbola.
TS u vidu jednostruko ulanane liste:
Primer deklaracija
mikroJave:
Prednosti:
jednostavnost,
zapamen redosled
deklarisanja
Nedostatak: sporost
(u nastavku
1. [8] a) Navesti i ukratko prokomentarisati metode koje se pojavljuju u interfejsu tabele
simbola. predavanja o TS bie
Prilikom svakog korienja nekog simbola poziva se find
obj = tab.find(name);
usvojena ova
Pretraga poinje u listi topScope
Ako se ne nae tamo, pretraga se nastavlja u sledeem okruujuem opsegu
realizacija)
(sledei
na steku ispod)
Za svaku deklaraciju pozivamo insert:
....
....
<X> <X> n transformie se u:
<X> n <Y>
<X> 1
<Y> 1 <Y>
.....
....
<X> n
<Y> n <Y>
<Y>
Uklanjanje indirektne leve rekurzije:
Primer indirektne leve rekurzije:
<X> <Y> a
<Y> <X> b
<Y> c
Algoritam:
Poreati neterminale u nekom redosledu A1, A2, , An
for i 1 to n
for j 1 to i 1
zameniti svaku smenu oblika
<A>i <A>j
sa
<A>i 1 | 2 || k,
gde su <A>j 1| 2|| k sve aktuelne smene za <A>j
end_for
eliminisati direktno levo rekurzivne smene za <A> i
novodobijene neterminale dodati na kraj
end_for
pretpostavka algoritma je da inicijalna gramatika ne sadri cikluse (<A>i +
<A>i )
Leva faktorizacija :
Pravilo leve faktorizacije glasi (uvodi se novi neterminal <S'>):
S 1
S S
....
S 1
S n
....
S n
kontrolna veza
aktivacioni zapis
pozivaoca
stvarni parametri
povratna adresa
kontrolna veza
aktivacioni zapis
pozvane procedure
BP
nie
memorijske
adrese
lokalne promenljive
SP
Pascal:
vie
memorijske
adrese
aktivacioni zapis
procedure u kojoj
je deklarisana
pozvana procedura
. . .
aktivacioni zapis
pozivaoca
stvarni parametri
pristupna veza
povratna adresa
kontrolna veza
aktivacioni zapis
pozvane procedure
BP
nie
memorijske
adrese
lokalne promenljive
SP
2009
1. [8] Semantika analiza
a) ta je to sistem tipova?
b) ta je provera tipa i kakve vrste provere postoje?
c) Kada se jezik naziva strogo tipiziranim?
- odgovoreno
- Funkcije generatora koda.*
- Formula za raunanje selekcionog skupa smene.*
- Nabrojati memorijske klase promenljivih. Za svaku od njih navesti u kom
delu
operativne memorije se promenljiva smeta i koji nain adresiranja se koristi
za pristup
promenljivoj.*
1. [8] Napisati fragment rekurzivnog parsera za prepoznavanje smene:
<A>x,y,z1 aq {cv} <A>x1,z,u1 <A>u,t,y1
v x - q x1 x y y1 z1 z u 3
Napomena: minimizovati broj naredbi dodele vrednosti u kodu.
1. [8] ( ).
Za zadati reg. izraz odreuje nedeterministiki konani automat :
S0
S1
a S3
S4
NKA for
a*
2. [8] .
-odgovoreno
2. [8] Objasniti naredbe ENTER i LEAVE kod x86 procesora (za korienje u Cu,
bez
pristupa nelokalnim promenljivim).
vie
memorijske
adrese
aktivacioni zapis
pozivaoca
stvarni parametri
povratna adresa
kontrolna veza
BP
aktivacioni zapis
pozvane procedure
displej
nie
memorijske
adrese
lokalne promenljive
SP
Ova naredba izvrava se kao prva naredba pozvane procedure na sledei nain:
1. Sadraj registra BP ide na stek (ime se definie polje kontrolne veze)
2. U registar BP upisuje se sadraj registra SP (ime je BP postavljen da ukazuje na polje
kontrolne veze).
3. Ako je Level = 0 preskae se sledei korak (Level = 0 vai za procedure u C-u kod koga se
ne javlja problem pristupa nelokalnim promenljivim).
4. Oznaimo vrednost Level -1 sa N, a sadraj polja kontrolne veze sa A. Na stek se smeta N
rei koje se kopiraju redom poev od lokacije A-2 ka niim memorijskim lokacijama. Potom
se na stek smeta adresa polja kontrolne veze. Ovime je uspostavljen displej pozvane
procedure.
5. Registar SP umanjuje se za vrednost operanda Size ime se alocira prostor za lokalne
promenljive pozvane procedure.
Naredba LEAVE
Naredba LEAVE realizuje deo sekvence povratka koji izvrava pozvana procedura.
2. Sa steka se skida sadraj polja kontrolne veze i smeta u registar BP. Time je BP
nameten za pozivaoca, a polje kontrolne veze pozvane procedure je uklonjeno sa steka.
1. [8] Navesti i objasniti uslove koje atributivno translaciona gramatika mora
da zadovolji za parsiranje od dna ka vrhu.
-Da nema konflikta ?
2. [8] Objasniti povratnu transformaciju iz SSA u obini troadresni meukod.
"Vraanje" iz SSA forme nazad u obian meukod
U najjednostavnijoj varijanti, -funkciju sa N argumenata u bloku B treba zameniti sa N obinih
dodela, po jednom na kraju svakog bloka prethodnika bloku X u grafu. Ovim se nekada dobija
neefikasan kod sa suvinim dodelama, ali se on moe poboljati dodatnim optimizacijama koje
nisu predmet naeg razmatranja.
2010
1.[5] Navesti opti algoritam rada potisnog automata u pseudojeziku.
- odgovoreno ranije
2.[5] Navesti algoritam dekompozicije koda na osnovne blokove.
2. Dekompozicija programa na osnovne blokove:
Odrediti voe (prve iskaze) osnovnih blokova: prvi iskaz u programu, iskazi koji predstavalju
odredita uslovnih ili bezuslovnih skokova i iskazi koji neposredno slede bezuslovne ili
uslovne skokove.
Svakom voi pridruiti iskaze koji ga slede do prvog sledeeg voe (iskljuujui taj iskaz) ili do
kraja programa.
2011
1) (6 poena)
a) ta je to sistem tipova?
b) ta je provera tipa i kakve vrste provere postoje?
c) Kada se jezik naziva strogo tipiziranim?
Odgovor:
1. a) Sistem tipova je skup pravila kako se dodeljuju tipovi razliitim delovima programa
(deklaracijama, izrazima, iskazima).
b) Proverom tipa implementira se odreeni sistem tipova. Provera moe biti:
- statika, ako je vri kompajler, ili
- dinamika, ako se izvodi u vreme izvravanja programa
c) Jezik se naziva strogo tipiziranim ako uspena statika provera tipova garantuje da u
izvravanju
programa nee doi do greke tipa.
2) (7 poena)
Posmatra se sledea situacija (radi se o poslednjoj naredbi u bazinom bloku):
Meukod ivot i sledee kori. Deskriptori registara Adresni deskriptori
a = t - u a(,-) t(m,-) u(m,-) EAX:t EBX:u a:mem t:EAX u:(mem, EBX)
a) Objasniti po koracima primenu jednostavnog algoritma generisanja koda za dati primer.
b) Prikazati generisani mainski kod i sadraj svih deskriptora posle toga.
Reenje:
Korak 1. Poziva se getreg(t), koji vraa EAX i uklanja EAX iz deskriptora za t.
Korak 2. Generie se SUB EAX, EBX
Korak 3. Auriraju se deskriptori: EAX:a EBX:u a:EAX t:- u:(mem, EBX)
Korak 4. Poto je kraj bloka, a je ivo i nalazi se u registru, generie se MOV a', EAX
SEP-OKT
1. Navesti uslove L-atributivnosti gramatike.
L-atributivna: - Sintaksno-upravljano prevoenje od vrha ka dnu
Kojim redom rekurz. parser pri prepoznavanju smene <A> <B><C>
odreuje atribute?
nasleeni atributi X su ulazni parametri za PROCX
sintetizovani atr. X su izlazni parametri za PROCX
1. nasleeni atributi od <A> su ve poznati (prosleuje pozivalac).
2. nasleeni atributi od <B> zavise od nasleenih od <A> i oni se
izraunavaju
3. posle uparivanja <B> sa ulazom saznaemo sintetizovane atribute
<B>
4. nasleeni atributi od <C> zavise od nasleenih od <A> i bilo kog
atributa <B>
Kojim redom rekurz. parser pri prepoznavanju smene <A> <B><C>
odreuje atribute?
5. posle uparivanja sa ulazom <C> saznajemo sintetizovane atribute od
<C>
6. kad uparimo celu desnu stranu izraunavamo sintetizovane atribute od
<A>
7. vraanje kontrole pozivaocu sa sint. atr. <A>
moraju se uvesti ogranienja u pravila izraunavanja atributa, da bi
parser paralelno sa konstrukcijom stabla izvoenja (od vrha ka dnu)
raunao vrednosti svih atributa).
Gramatike koje zadovoljavaju ova pravila nazivaju se L-atributivne
gramatike
Nasleeni atributi simbola sa desne strane smene mogu da
zavise od nasleenog atributa simbola sa leve strane i bilo kog atributa
bilo kog simbola koji je na desnoj strani ispred posmatranog simbola.
zato samo jedan ulazni simbol leks. analizatora slovo. Pripremu vri transliterator
izvorni
program
(niz znakova)
ulazna
azbuka
interni
leksiki kod
Leksiki
analizator
Transliterator
(klasa, vrednost)
...
122
Slov
o
ASC
II(z
)
. . . . . . . . . . . . . . . . . . . .
simbol povrede
Parser ima svojstvo ispravnog prefiksa ako za sve neispravne ulazne sekvence niz
simbola pre simbola povrede predstavlja prefiks nekog prihvatljivog ulaznog niza.
Kod takvih parsera moemo modifikacijom preostalog ulaza uiniti ceo ulayni niz
prihvatljivim
Parseri konstruisani metodima koje prouavamo na kursu imaju ovo svojstvo
Poruka o greci najee se formulie na osnovu vrnog simbola steka i tekueg ulaznog
simbola, uz navoenje linije i pozicije na liniji koda na kojoj je nastupila greka.
Potom se vri oporavak parsera od greke, koji potencijalno moe da prouzrokuje nove
nepostojee greke. Kvalitet oporavka ceni se po tome koliko malo nepostojeih greaka
se prijavljuje.
Ostalo:
S-atributivna
Gramatika je S - atributivna, ako:
Svi atributi neterminalnih simbola su sintetizovani.
Nijedan sintetizovani atribut ne moe da zavisi od drugog
sintetizovanog atributa iste pojave simbola u gramatici.