Preskoči na glavno vsebino

Prevajalniki

2018/2019
Program:
Interdisciplinarni univerzitetni študijski program 1. stopnje Računalništvo in matematika
Letnik:
3 letnik
Semester:
drugi
Vrsta:
izbirni
Skupina:
Modul: Algoritmi in sistemski programi
ECTS:
6
Jezik:
slovenski
Nosilec predmeta:

Boštjan Slivnik

Ure na teden – 2. semester:
Predavanja
3
Seminar
0
Vaje
0
Laboratorij
2
Vsebina

Uvod:razbitje prevajalnika na prednji in zadnji del, zgradba prevajalnika kot cevovoda, izbira prevajanega programskega jezika in ciljnega zbirnika.
Leksikalna analiza:opis simbolov programskega jezika z regularnimi izrazi in razbitje prevajanega programa na osnovne simbole,- domača naloga: izdelava leksikalnega analizatorja na osnovi končnih avtomatov.
Sintaksna analiza:opis sintakse s kontekstno neodvisno gramatiko, postopek sintaksne analize in reševanje iz napak med sintaksno analizo,- domača naloga: izdelava sintaksnega analizatorja na osnovi skladovnega avtomata po algoritmu LR.
Abstraktna sintaksa:poenostavljena interna predstavitev prevajanega programa,- domača naloga: generiranje abstraktnega sintaksnega drevesa prevajanega programa.
Semantična analiza:analiza podatkovnih tipov, (ne)dosegljivosti kode,…,- domača naloga: izdelava semantičnega analizatorja za preverjanje tipov.
Klicni zapisi:klicni zapisi za aktivacijo (gnezdenih, rekurzivnih) podprogramov, uporaba sklada ali kopice za realizacijo klicnih zapisov,- domača naloga: načrt klicnih zapisov.
Vmesna koda:drevesna ali ukazna vmesna koda, uporaba začasnih spremenljivk, nivoji vmesne kode, prevod v vmesno kodo,- domača naloga: izdelava generatorja vmesne kode.
Osnovni bloki:kanonizacija klicev in skokov v vmesni kodi, oblikovanje osnovnih blokov, permutacija osnovnih blokov,- domača naloga: izračun osnovnih blokov.
Izbira strojnih ukazov:prevod vmesne kode v ukaze zbirnika z uporabo začasnih spremenljivk,- domača naloga: generator strojne kode brez registrov.
Analiza aktivnosti začasnih spremenljivk:analiza aktivnosti začasnih spremenljivk na osnovi grafov poteka in podatkovnih enačb,- domača naloga: izračun interferenčnega grafa spremenljivk.
Izbira registrov:barvanje interferenčnega grafa in izračun preliva začasnih spremenljivk v klicni zapis,- domača naloga: izračun preslikave začasnih spremenljivk v registre in preliv.
Zaključek:domača naloga: združitev prvih desetih domačih nalog v delujoč prevajalnik.

Temeljni literatura in viri

Andrew W. Appel, Modern Compiler Implementation in Java, Cambridge University Press, 2002.
Boštjan Vilfan, Prevajanje programskih jezikov, 1. del, Fakulteta za elektrotehniko in računalništvo, 1991.
Steven Muchnick, Advanced Compiler Design and Implementation, Morgan Kaufmann, 1997.

Cilji in kompetence

Predstavitev zgradbe, delovanja in izdelave prevajalnika za prevajanje programskih jezikov v zbirnik.

Splošne kompetence:
Sposobnost razumevanja in reševanja strokovnih izzivov v računalništvu in informatiki
Sposobnost definiranja, razumevanja in reševanja strokovnih izzivov v računalništvu in informatiki
Sposobnost uporabe pridobljenega znanja pri samostojnem reševanju tehničnih in znanstvenih problemov v računalništvu in informatiki, sposobnost razširjanja pridobljenega znanja
Predmetno-specifične kompetence:
Praktično znanje in veščine s področja strojen in programske opreme ter informacijske tehnologije, ki so potrebne za uspešno strokovno delo v računalništvu in informatiki
Sposobnost samostojnega izvajanja enostavnih in zahtevnih opravil v določenih ožjih področjih in samostojno reševanje specifičnih dobro definiranih opravil v računalništvu in informatiki
Osnovne veščine v računalništvu in informatiki, ki omogočajo nadaljevanje študija na drugi stopnji

Predvideni študijski rezultati

Znanje in razumevanje:
Poznavanje sodobnih postopkov razvoja programske opreme in razumevanje njihovega izvora ter medsebojne povezanosti.
Uporaba:
Uporaba inženirskih metod pri razvoju programske opreme.
Refleksija:
Razumevanje primernosti uporabe določenih postopkov razvoja programske opreme glede na tip in zahteve.
Prenosljive spretnosti - niso vezane le na en
predmet:
Poznavanje in uporaba metod za delo v skupini, ki rešuje intelektualno zahtevne naloge, trening učinkovitega pisnega in ustnega sporazumevanja s sodelavci.

Metode poučevanja in učenja

Predavanja in domače naloge (seminarski način dela). Poseben poudarek je na sprotnem oddajanju domačih nalog.

Načini ocenjevanja

Sprotno preverjanje (domače naloge)
Končno preverjanje (pisni in ustni izpit)
(ocene: 5 (negativno), 6-10 (pozitivno), ob upoštevanju Statuta UL)

Reference nosilca

SLIVNIK, Boštjan. LL conflict resolution using the embedded left LR parser. Computer science and information systems, ISSN 1820-0214. [Print ed.], Sep. 2012, vol. 9, no. 3, str. 1105-1124, ilustr. [COBISS-SI-ID 9583700]
POTOČNIK, Matic, ČIBEJ, Uroš, SLIVNIK, Boštjan. Linter - a tool for finding bugs and potential problems in Scala code. V: Proceedings of the 29th Annual ACM Symposium on Applied Computing, Gyeongju, Korea, March 24-28, 2014, Proceedings of the 29th Annual ACM Symposium on Applied Computing, Gyeongju, Korea, March 24-28, 2014. [S. l.]: Association for Computing Machinery, cop. 2014, str. 1615-1616, graf. prikazi. [COBISS-SI-ID 10520660]
SLIVNIK, Boštjan. LLLR parsing. V: Proceedings of the 28th annual ACM Symposium on Applied Computing 2013, Coimbra, Portugal, March 18-22. [S. l.]: Association for Computing Machinery, 2013, str. 1698-1699. [COBISS-SI-ID 9735508]
SLIVNIK, Boštjan. The embedded left LR parser. V: GANZHA, Maria (ur.), MACIASZEK, Leszek (ur.), PAPRZYCKI, Marcin (ur.). FedCSIS : proceedings of the Federated Conference on Computer Science and Information Systems, September 18-21, 2011, Szczecin, Poland. Los Alamitos: IEEE Computer Society Press, 2011, str. 871-878, graf. prikazi. [COBISS-SI-ID 8628564]
SLIVNIK, Boštjan, VILFAN, Boštjan. Producing the left parse during bottom-up parsing. Information processing letters, ISSN 0020-0190. [Print ed.], Dec. 2005, vol. 96, no. 6, str. [220]-224. [COBISS-SI-ID 5075284]
SLIVNIK, Boštjan, VILFAN, Boštjan. Improved error recovery in generated LR parsers. Informatica, ISSN 0350-5596, 2004, vol. 28, no. 3, str. 257-263, ilustr. [COBISS-SI-ID 4902484]