Prevođenje programskih jezika

Prikazani su podaci za akademsku godinu: 2023./2024.

Predavanja

Laboratorijske vježbe

Opis predmeta

Proučavaju se procesi postupnog hijerarhijskog prevođenja korisničkih jezika, viših programskih jezika i jezika hijerarhije virtualnih strojeva u ciljni jezik odabranog računalnog sustava. Opisuju se tehnike i načela procesa prevođenja jezika potrebnih u suvremenim sveprisutnim, svakidašnjim i nevidljivim raspodijeljenim računalnim sustavima. Daje se kratki pregled i povijest programskih jezika i jezičnih procesora. Prevođenje jezika objašnjava se osnovnim procesima analize izvornog i sinteze ciljnog programa. Uključene su osnovne faze analize (leksička, sintaksna i semantička analiza) i sinteze (generiranje međukôda, generiranje ciljnog programa i optimiranje). Razmatra se priprema i potpora izvođenju programa. Proučavaju se generatori jezičnih procesora.

Studijski programi

Sveučilišni preddiplomski
(5. semestar)
[FER2-HR] Obradba informacija - modul
Obvezni predmeti modula - po izboru (5. semestar)
[FER2-HR] Programsko inženjerstvo i informacijski sustavi - modul
(5. semestar)
[FER2-HR] Računarska znanost - modul
Obvezni predmeti modula - po izboru (5. semestar)
[FER2-HR] Telekomunikacije i informatika - modul
Obvezni predmeti modula - po izboru (5. semestar)

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

Predavanja popraćena PowerPoint projekcijom s prikazom teorijskih načela, popratnim primjerima i rješavanjem zadataka

Laboratorij

Programsko ostvarenje dijelova ili cjelokupnog jezičnog procesora. Studenti samostalno programski ostvaruju laboratorijski zadatak i putem web-aplikacije predaju rješenja na automatizirano ocjenjivanje.

Način ocjenjivanja

Kontinuirana nastava Ispitni rok
Vrsta provjere Prag Udio u ocjeni Prag Udio u ocjeni
Laboratorijske vježbe 50 % 30 % 50 % 0 %
Međuispit: Pismeni 50 % 35 % 0 %
Završni ispit: Pismeni 50 % 35 %
Ispit: Pismeni 50 % 100 %
Ispit: Usmeni 100 %

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

Literatura

Siniša Srbljić (2009.), Prevođenje programskih jezika, Element
Dick Grune, Kees van Reeuwijk, Henri E. Bal, Ceriel J.H. Jacobs, Koen Langendoen (2012.), Modern Compiler Design, Springer Science & Business Media
Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman (2007.), Compilers: Principles, Techniques, and Tools, Pearson College Division
Keith Cooper, Linda Torczon (2011.), Engineering a Compiler, Elsevier
Steven Muchnick, Muchnick and Associates (1997.), Advanced Compiler Design Implementation, Morgan Kaufmann
O. G. Kakde (2003.), Algorithms for Compiler Design, Charles River Media

Za studente

Izvedba

ID 183425
  Zimski semestar
5 ECTS
R3 Engleski jezik
R2 E-učenje
60 Predavanja
0 Seminar
0 Auditorne vježbe
10 Laboratorijske vježbe
0 Konstrukcijske vježbe
0 Vježbe tjelesnog odgoja

Ocjenjivanje

88 izvrstan
75 vrlo dobar
63 dobar
50 dovoljan

Sličan predmet