Prevođenje programskih jezika

Ishodi učenja

  1. raščlaniti postupak oblikovanja računalnog sustava na analizu problema i sintezu rješenja
  2. opisati leksička, sintaksna i semantička svojstva programskog jezika primjenom formalne gramatike
  3. usporediti i odabrati formalnu gramatiku optimalne složenosti za potrebe opisa programskog jezika
  4. usporediti i odabrati postupak parsiranja optimalne složenosti za potrebe prevođenja programskog jezika
  5. razviti prevoditelj programskog jezika na osnovi formalnog opisa jezika
  6. dizajnirati proces prevođenja programskog jezika koji učinkovito koristi sredstva procesora i memorijske hijerarhije

Oblici nastave

Predavanja

Mješovito e-učenje

Laboratorij

Tjedni plan nastave

  1. Programi za analizu (drugih) programa: interpretatori. kompilatori. programi za provjeru tipova podataka. generatori dokumentacije, Strukture podataka za prikaz programa tijekom izvođenja. prevođenja i prijenosa, Razlika između interpretacije. prevođenja u strojni jezik i prevođenja u prenosivi međukod, Faze prevođenja programskog jezika: parsiranje. provjera tipova podataka. prevođenje. povezivanje. izvođenje
  2. Leksička analiza primjenom regularnih izraza, Generatori leksičkog analizatora
  3. Parsiranje od vrha prema dnu (S. Q i LL(k) gramatika. tehnika rekurzivnog spusta)
  4. Parsiranje od dna prema vrhu (pomakni-pronađi. pomakni-reduciraj. LR parsiranje)
  5. Generatori parsera (sintaksnog analizatora)
  6. Apstraktno sintaksno stablo, Atributno sintaksno stablo, Međukod visoke razine. apstraktno sintaksno stablo, Djelokrug deklaracije imena
  7. Provjera tipova podataka, Atributna i atributna prijevodna gramatika
  8. Međuispit
  9. Potpora izvođenju programa: tablice metoda za rukovanje objektima i okruženja za rukovanje funkcijama, Organizacija memorije tijekom izvođenja programa: stog. gomila. statička memorija, Pozivi procedura i metoda
  10. Upravljanje memorijom, Izravno upravljanje memorijom: zauzimanje. oslobađanje i ponovno korištenje memorije gomile, Automatsko upravljanje memorijom: pronalazak napuštenih memorijskih područja, Postupci i tehnike dinamičkog upravljanja memorijom: zauzmi/oslobodi. pronalazak napuštenih memorijskih područja
  11. Memorijska organizacija programskih objekata i poziva potprograma, Dinamičko interpretiranje programa, Osnovna svojstva virtualnih strojeva: učitavanje razreda. višedretvenost. sigurnost, Statičko i dinamičko povezivanje
  12. Osnovni blokovi, Statičko jednostruko pridruživanje, Izvorni program. strojni program. program virtualnog stroja, Zasebno prevođenje dijelova programa; Povezivanje, Izvodivi ciljni program. premjestivi ciljni program. program virtualnog stroja, Sintaksom upravljano generiranje ciljnog programa, Generiranje međukoda
  13. Graf tijeka izvođenja, Definicija-uporaba lanci, Izbor redoslijeda instrukcija, Odabir strojnih naredbi, Dodjela registara
  14. Programsko ostvarenje petlji. rekurzije i završnih funkcijskih poziva, Strojno nezavisno optimiranje, Strojno zavisno optimiranje, Optimiranje zasnovano na prozorčiću
  15. Završni ispit

Studijski programi

Sveučilišni preddiplomski
Računarstvo (studij)
(5. semestar)

Literatura

(.), Prevođenje programskih jezika, S. Srbljić, Element,
(.), Modern Compiler Design, D. Grune, H. E. Bal, C. J. H. Jacobs, K. G. Langendoen, Wiley,
(.), Compilers: Principles, Techniques, and Tools, A. V. Aho, R. Sethi, J. D. Ullman, Addison-Wesley,
(.), Engineering a Compiler, K. Cooper, L. Torczon, Morgan Kaufmann,
(.), Advanced Compiler Design and Implementation, S. S. Muchnick, Morgan Kaufmann,
(.), Algorithms for Compiler Design, O. G. Kakde, Charles River Media,

Izvedba

ID 183425
  Zimski semestar
5 ECTS
R1 Engleski jezik
R1 E-učenje
60 Predavanja
0 Auditorne vježbe
0 Laboratorijske vježbe
0 Konstrukcijske vježbe

Ocjenjivanje

izvrstan
vrlo dobar
dobar
dovoljan