Programski prevodioci

Σχετικά έγγραφα
Parser primer kalkulatora

FORMALNI SISTEMI KAO OSNOVA ZA PROJEKTOVANJE KOMPAJLERA

Računarska grafika. Rasterizacija linije

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET SIGNALI I SISTEMI. Zbirka zadataka

3.1 Granična vrednost funkcije u tački

Računarska grafika. Rasterizacija linije

Kontrolni zadatak (Tačka, prava, ravan, diedar, poliedar, ortogonalna projekcija), grupa A

Iskazna logika 3. Matematička logika u računarstvu. novembar 2012

XI dvoqas veжbi dr Vladimir Balti. 4. Stabla

DISKRETNA MATEMATIKA - PREDAVANJE 7 - Jovanka Pantović

PARCIJALNI IZVODI I DIFERENCIJALI. Sama definicija parcijalnog izvoda i diferencijala je malo teža, mi se njome ovde nećemo baviti a vi ćete je,

Zavrxni ispit iz Matematiqke analize 1

PRAVA. Prava je u prostoru određena jednom svojom tačkom i vektorom paralelnim sa tom pravom ( vektor paralelnosti).

Algoritmi zadaci za kontrolni

IZRAČUNAVANJE POKAZATELJA NAČINA RADA NAČINA RADA (ISKORIŠĆENOSTI KAPACITETA, STEPENA OTVORENOSTI RADNIH MESTA I NIVOA ORGANIZOVANOSTI)

IZVODI ZADACI ( IV deo) Rešenje: Najpre ćemo logaritmovati ovu jednakost sa ln ( to beše prirodni logaritam za osnovu e) a zatim ćemo

Operacije s matricama

41. Jednačine koje se svode na kvadratne

IZVODI ZADACI (I deo)

2 tg x ctg x 1 = =, cos 2x Zbog četvrtog kvadranta rješenje je: 2 ctg x

Program testirati pomoću podataka iz sledeće tabele:

Apsolutno neprekidne raspodele Raspodele apsolutno neprekidnih sluqajnih promenljivih nazivaju se apsolutno neprekidnim raspodelama.

Diskretna matematika. Prof. dr Olivera Nikolić

ELEKTROTEHNIČKI ODJEL

radni nerecenzirani materijal za predavanja

Kaskadna kompenzacija SAU

MATRICE I DETERMINANTE - formule i zadaci - (Matrice i determinante) 1 / 15

III VEŽBA: FURIJEOVI REDOVI

Teorijske osnove informatike 1

Programiranje I. Smer Informatika Matematički fakultet, Beograd. Jelena Tomašević, Sana Stojanović November 16, 2005

Trigonometrija 2. Adicijske formule. Formule dvostrukog kuta Formule polovičnog kuta Pretvaranje sume(razlike u produkt i obrnuto

Elementi spektralne teorije matrica

radni nerecenzirani materijal za predavanja R(f) = {f(x) x D}

numeričkih deskriptivnih mera.

Osnovni primer. (Z, +,,, 0, 1) je komutativan prsten sa jedinicom: množenje je distributivno prema sabiranju

Najjednostavnija metoda upravljanja slijedom instrukcija:

Strukture podataka i algoritmi 1. kolokvij 16. studenog Zadatak 1

Riješeni zadaci: Nizovi realnih brojeva

M086 LA 1 M106 GRP. Tema: Baza vektorskog prostora. Koordinatni sustav. Norma. CSB nejednakost

Pismeni ispit iz matematike Riješiti sistem jednačina i diskutovati rješenja sistema u zavisnosti od parametra: ( ) + 1.

Ispitivanje toka i skiciranje grafika funkcija

Interpretacija programa Semantička analiza. Krunoslav Puljić 2013/2014

Iskazna logika 1. Matematička logika. Department of Mathematics and Informatics, Faculty of Science, University of Novi Sad, Serbia.

7 Algebarske jednadžbe

for <brojacka_promenljiva> := <pocetna_vrednost> to <krajnja_vrednost> do <naredba>

Konstruisati efikasan algoritam znači dati skup preciznih uputstava kako doći do rešenja zadatog problema Algoritmi se mogu opisivati:

IspitivaƬe funkcija: 1. Oblast definisanosti funkcije (ili domen funkcije) D f

Zadaci sa prethodnih prijemnih ispita iz matematike na Beogradskom univerzitetu

Sortiranje prebrajanjem (Counting sort) i Radix Sort

1. Pojam fazi skupa. 2. Pojam fazi skupa. 3. Funkcija pripadnosti, osobine i oblici. 4. Funkcija pripadnosti, osobine i oblici

21. ŠKOLSKO/OPĆINSKO/GRADSKO NATJECANJE IZ GEOGRAFIJE GODINE 8. RAZRED TOČNI ODGOVORI

Programski jezik C - 1. deo. Struktura C-programa. Struktura programa u C-u. (materijal sa predavanja D. Vitasa)

5. Karakteristične funkcije

KOMUTATIVNI I ASOCIJATIVNI GRUPOIDI. NEUTRALNI ELEMENT GRUPOIDA.

Mašinsko učenje. Regresija.

SKUPOVI I SKUPOVNE OPERACIJE

Azbuka, niska: formalizam

Algoritmi i strukture podataka - 1.cas

a M a A. Može se pokazati da je supremum (ako postoji) jedinstven pa uvodimo oznaku sup A.

Riješeni zadaci: Limes funkcije. Neprekidnost

Cauchyjev teorem. Postoji više dokaza ovog teorema, a najjednostvniji je uz pomoć Greenove formule: dxdy. int C i Cauchy Riemannovih uvjeta.

18. listopada listopada / 13

Klasifikacija blizu Kelerovih mnogostrukosti. konstantne holomorfne sekcione krivine. Kelerove. mnogostrukosti. blizu Kelerove.

Sistem sučeljnih sila

SISTEMI NELINEARNIH JEDNAČINA

Univerzitet u Nišu Građevinsko-arhitektonski fakultet. Informatika2. 4. Ciklična algoritamska struktura 5. Jednodimenzionalno polje.

RIJEŠENI ZADACI I TEORIJA IZ

(P.I.) PRETPOSTAVKA INDUKCIJE - pretpostavimo da tvrdnja vrijedi za n = k.

DIMENZIONISANJE PRAVOUGAONIH POPREČNIH PRESEKA NAPREGNUTIH NA PRAVO SLOŽENO SAVIJANJE

Programske paradigme

2log. se zove numerus (logaritmand), je osnova (baza) log. log. log =

OM2 V3 Ime i prezime: Index br: I SAVIJANJE SILAMA TANKOZIDNIH ŠTAPOVA

Sistemi veštačke inteligencije primer 1

MATEMATIKA 2. Grupa 1 Rexea zadataka. Prvi pismeni kolokvijum, Dragan ori

APROKSIMACIJA FUNKCIJA

Trigonometrijske nejednačine

Betonske konstrukcije 1 - vežbe 3 - Veliki ekscentricitet -Dodatni primeri

Prediktor-korektor metodi

Pravilo 1. Svaki tip entiteta ER modela postaje relaciona šema sa istim imenom.

- pravac n je zadan s točkom T(2,0) i koeficijentom smjera k=2. (30 bodova)

Obrada signala

KVADRATNA FUNKCIJA. Kvadratna funkcija je oblika: Kriva u ravni koja predstavlja grafik funkcije y = ax + bx + c. je parabola.

Pismeni ispit iz matematike GRUPA A 1. Napisati u trigonometrijskom i eksponencijalnom obliku kompleksni broj, zatim naći 4 z.

5 Ispitivanje funkcija

Ĉetverokut - DOMAĆA ZADAĆA. Nakon odgledanih videa trebali biste biti u stanju samostalno riješiti sljedeće zadatke.

Veleučilište u Rijeci Stručni studij sigurnosti na radu Akad. god. 2011/2012. Matematika. Monotonost i ekstremi. Katica Jurasić. Rijeka, 2011.

Predikatska logika. January 8, 2012

POTPUNO RIJEŠENIH ZADATAKA PRIRUČNIK ZA SAMOSTALNO UČENJE

( ) ( ) 2 UNIVERZITET U ZENICI POLITEHNIČKI FAKULTET. Zadaci za pripremu polaganja kvalifikacionog ispita iz Matematike. 1. Riješiti jednačine: 4

SEMINAR IZ KOLEGIJA ANALITIČKA KEMIJA I. Studij Primijenjena kemija

Konstruisanje. Dobro došli na... SREDNJA MAŠINSKA ŠKOLA NOVI SAD DEPARTMAN ZA PROJEKTOVANJE I KONSTRUISANJE

π π ELEKTROTEHNIČKI ODJEL i) f (x) = x 3 x 2 x + 1, a = 1, b = 1;

INTEGRALNI RAČUN. Teorije, metodike i povijest infinitezimalnih računa. Lucija Mijić 17. veljače 2011.

OSNOVI ELEKTRONIKE VEŽBA BROJ 1 OSNOVNA KOLA SA DIODAMA

10 Iskazni račun - deduktivni sistem za iskaznu logiku

KVADRATNA FUNKCIJA. Kvadratna funkcija je oblika: Kriva u ravni koja predstavlja grafik funkcije y = ax + bx + c. je parabola.

4.7. Zadaci Formalizam diferenciranja (teorija na stranama ) 343. Znajući izvod funkcije x arctg x, odrediti izvod funkcije x arcctg x.

Pismeni dio ispita iz Matematike Riješiti sistem jednačina i diskutovati rješenja u zavisnosti od parametra a:

Zadatak 2 Odrediti tačke grananja, Riemann-ovu površ, opisati sve grane funkcije f(z) = z 3 z 4 i objasniti prelazak sa jedne na drugu granu.

TRIGONOMETRIJSKE FUNKCIJE I I.1.

Transcript:

Programski prevodioci dr Miroslav Hajduković dr Zorica Suvajdžin mr Žarko Živanov Praktični uvod u programske prevodioce s ciljem predstavljanja tipičnih problema i načina njihovog rešavanja Novi Sad 2012.

Uvod Zadatak programskih prevodilaca je da: prevode programe koji su napisani jednim izvornim programskim jezikom u programe istog značenja koji su napisani drugim ciljnim programskim jezikom 2

Uvod Primer izvornog jezika: C, C++, Pascal Primer ciljnog jezika: hipotetski asemblerski jezik, Intelov asemblerski jezik, mašinski jezik 3

Uvod 4

Mašinski jezik Mašinski kod ili mašinski jezik je sistem nedeljivih instrukcija koje izvršava CPU Svaka instrukcija izvršava specifičan zadatak operacije nad podacima (u registru ili u memoriji, npr. add ili mov) jump operacije (odlučivanje koja će se sledeća instrukcija izvršiti, često uslovna u zavisnosti od rezultata izvršavanja prethodne instrukcije) Svaki izvršni (executable) program sastoji se od niza ovih atomskih instrukcija 5

Uvod Za prevođenje je potrebno: uspostaviti korespondenciju iskaza ( rečenica ) izvornog i ciljnog programskog jezika prepoznati iskaze ( rečenice ) izvornog programskog jezika i zameniti ih korespondentnim iskazima ( rečenicama ) ciljnog programskog jezika 6

Primer prevođenja Segment programa za računanje najvećeg zajedničkog delioca dva prirodna broja, napisan programskim jezikom C: a = 12; b = 8; while (a!= b) if (a > b) a = a b; else b = b a; Prethodni segment programa treba prevesti u segment programa koji je napisan hipotetskim asemblerskim jezikom 7

Hipotetski asemblerski jezik Naredba CMP[S,U] op1, op2 JMP labela JEQ labela JNE labela JGT[S,U] labela JLT[S,U] labela JGE[S,U] labela JLE[S,U] labela PUSH operand POP operand CALL labela RET Značenje Status na osnovu op1 - op2 Bezuslovni skok na adresu Skok ako nakon poređenja op1 = op2 Skok ako nakon poređenja op1!= op2 Skok ako nakon poređenja op1 > op2 Skok ako nakon poređenja op1 < op2 Skok ako nakon poređenja op1 >= op2 Skok ako nakon poređenja op1 <= op2 Vrednost operanda na stek Vrednost sa steka u operand Poziv potprograma Povratak iz potprograma 8

Hipotetski asemblerski jezik Naredba ADD[S,U] op1, op2, op3 op3 <- op1 + op2 SUB[S,U] op1, op2, op3 op3 <- op1 - op2 MUL[S,U] op1, op2, op3 op3 <- op1 * op2 DIV[S,U] op1, op2, op3 op3 <- op1 / op2 MOV op1, op2 WORD n Direktiva op2 <- op1 Značenje Značenje Zauzimanje n memorijskih lokacija Sve memorijske lokacje i registri su 32-bitni (4 bajta) Aritmetičke naredbe i skokovi mogu biti označeni (S) ili neoznačeni (U). Radni registri imaju imena od %0 do %15, pri čemu je %13 registar za povratnu vrednost funkcije, %14 je pokazivač frejma, dok je %15 pokazivač vrha steka. Konstante se označavaju sa prefiksom $ (na primer $15). Labele se pišu navođenjem imena praćenim dvotačkom (na primer petlja:). Sistemske labele počinju znakom @ (na primer @for:). 9

Primer prevođenja Korespondencija iskaza programskog jezika C i naredbi hipotetskog asemblerskog jezika (podrazumeva se da neoznačenoj celobrojnoj promenljivoj a odgovara memorijska lokacija sa labelom a, a neoznačenoj celobrojnoj promenljivoj b odgovara memorijska lokacija sa labelom b) Iskazi pridruživanja a = 12; b = 8; a = a - b; b = b a; MOV MOV SUBU SUBU $12,a $8,b a,b,a b,a,b 10

Primer prevođenja while iskaz while (a!= b) while_telo @while0: CMPU a,b JEQ @false0 @true0: while_telo JMP @while0 @false0: if iskaz if (a > b) then_telo else else_telo @if1: @true1: @false1: @exit1: CMPU JLEU then_telo JMP @exit1 else_telo a,b @false1 11

Primer prevođenja a = 12; b = 8; while (a!= b) if (a > b) a = a b; else b = b a; MOV... $12,a 12

Primer prevođenja a = 12; b = 8; while (a!= b) if (a > b) a = a b; else b = b a; MOV MOV... $12,a $8,b 13

Primer prevođenja a = 12; b = 8; while (a!= b) if (a > b) a = a b; else b = b a; @while0: @true0: @false0: MOV MOV $12,a $8,b CMPU a,b JEQ @false0... JMP @while0 14

Primer prevođenja a = 12; b = 8; while (a!= b) if (a > b) a = a b; else b = b a; @while0: @true0: @if1: @true1: @false1: @exit1: @false0: MOV MOV $12,a $8,b CMPU a,b JEQ @false0 CMPU a,b JLEU @false1... JMP... JMP @exit1 @while0 15

Primer prevođenja a = 12; b = 8; while (a!= b) if (a > b) a = a b; else b = b a; @while0: @true0: @if1: @true1: @false1: @exit1: @false0: MOV MOV $12,a $8,b CMPU a,b JEQ @false0 CMPU a,b JLEU @false1 SUBU a,b,a JMP @exit1... JMP @while0 16

Primer prevođenja a = 12; b = 8; while (a!= b) if (a > b) a = a b; else b = b a; @while0: @true0: @if1: @true1: @false1: @exit1: @false0: MOV MOV $12,a $8,b CMPU a,b JEQ @false0 CMPU a,b JLEU @false1 SUBU a,b,a JMP @exit1 SUBU b,a,b JMP @while0 17

Analiza prevedenog programa MOV $12,a MOV $8,b @while0: CMPU a,b JEQ @false0 @true0: @if1: CMPU a,b JLEU @false1 @true1: SUBU a,b,a JMP @exit1 @false1: SUBU b,a,b @exit1: JMP @while0 @false0: suvišna druga naredba CMPU a,b naredbu JMP @exit1 treba zameniti naredbom JMP @while0 da bi se izbegla dva uzastopna skoka: do neefikasnosti je došlo zbog parcijalnog pristupa prilikom zamene iskaza izvornog jezika iskazima ciljnog jezika i nesagledavanja šireg konteksta u kome se zamena obavlja ovim problemom bavi se optimizacija MOV MOV @while0: CMPU JEQ @true0: @if1: JLEU @true1: SUBU JMP @false1: SUBU @exit1: JMP @false0: $12,a $8,b a,b @false0 @false1 a,b,a @while0 b,a,b @while0 18

Osvrt na prevođenje Prevođenje je zasnovano na prepoznavanju iskaza (rečenica) izvornog jezika Sastoji se od prepoznavanja nizova znakova koji obrazuju simbole (reči) nizova simbola koji obrazuju iskaze (rečenice) U toku prevođenja se otkrivaju i greške koje se prijavljuju korisnicima 19

Osvrt na prevođenje - analiza Prepoznavanje iskaza izvornog programskog jezika analiza SIMBOLI a = 12 ; b 8 while (!= ) if > else prepoznavanje simbola: leksička analiza otkrivanje pogrešnih simbola: leksičke greške primer: upotreba nedozvoljenih karaktera, npr: cou%nt prepoznavanje iskaza: sintaksna analiza otkrivanje (formalno) pogrešnih iskaza: sintaksne greške primer: izostavljanje otvorene male zagrade iza if prepoznavanje značenja iskaza: semantička analiza otkrivanje semantički pogrešnih iskaza: semantičke greške primer: korišćenje nedefinisane promenljive 20

Osvrt na prevođenje - analiza leksička analiza (lexical analisys) leksički ispravno: count, a3, = leksička greška: cou%nt, 3a, := sintaksna analiza (syntax analisys) sintaksno ispravno: if(a>3) a=1; sintaksna greška: if(a>3 a=1; semantička analiza (semantic analisys) semantički ispravno: int a; a=3; semanička greška: int a; b=3; 21

Osvrt na prevođenje - sinteza Generisanje iskaza ciljnog jezika sinteza PREVOÐENJE PROGRAMA ANALIZA SINTEZA = IZVORNOG + CILJNOG + PROGRAMA PROGRAMA OPTIMIZACIJA CILJNOG PROGRAMA Program prevodilac: KOMPAJLER Deo kompajlera zadužen za leksičku analizu: SKENER Deo kompajlera zadužen za sintaksnu analizu: PARSER Deo kompajlera zadužen za sintezu: KOD GENERATOR Optimizacija izgenerisanog programa (izraz optimizacija se koristi u smislu poboljšanja programa, a ne u smislu pravljenja optimalnog programa) 22

Leksička i sintaksna analiza teksta Sintaksna analiza se oslanja na leksičku analizu Leksička i sintaksna analiza omogućuju prepoznavanje iskaza programskog kao i rečenica govornog jezika, pa se mogu primeniti ne samo na programski nego i na obični tekst Na primer, leksička i sintaksna analiza običnog teksta su potrebne da bi se odredio ukupan broj reči u tekstu ukupan broj rečenica u tekstu ukupan broj linija 23

Sintaksa jezika Za leksičku i sintaksnu analizu (programskog ili običnog) teksta potrebno je poznavati sintaksu, odnosno gramatiku (programskog ili govornog) jezika koja određuje pravila pisanja njegovih iskaza Gramatika može biti zadana neformalno: reč je niz slova rečenica je niz reči iza kojih dolazi tačka tekst je niz rečenica Neformalna gramatika je neprecizna 24

Formalna gramatika Gramatika (programskog) jezika se izražava na formalan način u BNF obliku: Bakus-Naurova forma (Backus-Naur form) Ovako izražena gramatika se sastoji od pravila koja određuju dozvoljene načine ređanja pojmova i simbola : pojam pojmovi i/ili simboli Leva strana pravila (pre znaka ) sadrži pojam koji može biti zamenjen sekvencom pojmova i/ili simbola koje sadrži desna strana pravila (iza znaka ). Jedan od pojmova predstavlja polazni pojam. Pojmovi su vezani za sintaksnu analizu (nonterminal symbol), a simboli su vezani za leksičku analizu (terminal symbol) primer: dodela ime = izraz ; 25

Formalna gramatika za običan tekst text ε text sentence sentence capital_word words dot words ε words word words capital_word word small_letter word small_letter capital_word capital_letter capital_word small_letter dot "." 26

Formalna gramatika za običan tekst capital_letter "A" "B" "C"... "Z" small_letter "a" "b" "c"... "z" Napomene Pojmovi su napisani ukošenim slovima (italikom) ε označava praznu desnu stranu pravila Razmak i kraj linije imaju funkciju separatora simbola 27

Formalna gramatika Proširena Bakus-Naurova forma (Extended Bacus-Naur Form) uvodi sledeće elemente na desnoj strani pravila mogu da se koriste: [... ] da označe da se sadržaj zagrada može pojaviti nijednom ili jednom {... } da označe da se sadržaj zagrada može pojaviti nijednom, jednom ili višestruko (... ) da označe grupisanje da označi alternative 28

Formalna gramatika za običan tekst text { sentence } sentence capital_word words dot words { ( word capital_word ) } word small_letter { small_letter } capital_word capital_letter { small_letter } dot "." 29

Formalna gramatika za običan tekst capital_letter "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z" small_letter "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" 30

Primer primene formalne gramatike Gramatika svakog (programskog) jezika obuhvata: simbole pojmove pravila i polazni pojam Gramatika (programskog) jezika je potrebna za proveru ispravnosti (programskog) teksta Tokom provere ispravnosti ulaznog teksta, leva strana pravila se zamenjuje desnom sve dok se ne dobije ulazni niz simbola. Ovaj proces zamene se naziva izvođenje (derivation). Ukoliko se svaki put prvo zameni pojam koji se nalazi krajnje levo u pravilu onda se proces naziva izvođenje s leva. Ako se zamenjuje krajnje desni pojam u pravilu, proces se zove izvođenje s desna. 31

Primer primene formalne gramatike Primer primene tekst gramatike za dokazivanje da je iskaz Ovo je tekst. ispravan tekst (tj. da je u skladu sa gramatikom) izvođenje s leva u desno text text sentence ɛ sentence sentence capital_word words dot Ovo words dot Ovo words word dot * Ovo word word dot Ovo je word dot Ovo je tekst dot Ovo je tekst. znak označava izvođenje u jednom koraku, a znak * označava izvođenje u više koraka text * Ovo je tekst. 32

Primer primene formalne gramatike prikaz izvođenja u obliku stabla 33