algoritamske osnove program a prevodilaca
DESCRIPTION
UNIVERZITET U ISTOČNOM SARAJEVU FILOZOFSKI FAKULTET PALE STUDIJSKI PROGRAM ZA MATEMATIKU I RAČUNARSTVO. Algoritamske osnove program a prevodilaca. Završni – diplomski rad. Mentor : Prof. Dr Milorad K.Banjanin. Student : Milan Vasiljević. Pale, 2012. godine. ZADATAK. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/1.jpg)
Algoritamske osnove programa prevodilaca
UNIVERZITET U ISTOČNOM SARAJEVUFILOZOFSKI FAKULTET PALE
STUDIJSKI PROGRAM ZA MATEMATIKU I RAČUNARSTVO
Mentor :Prof. Dr Milorad K.Banjanin
Student :Milan Vasiljević
Završni – diplomski rad
Pale, 2012. godine
![Page 2: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/2.jpg)
ZADATAK• Tema ovog završnog diplomskog rada pripada polju računarskih i informacionih
nauka gde je posebno bitna primjenjena matematika a predmet istraživanja su algoritamske osnove programskih prevodilaca. U računaru, kao elektronskom sistemu za informaciono procesiranje sa šestoslojevitom arhitekturom programi prevodioci se nalaze na petom sloju u kategoriji sistemskih softera
U rešenju zadatka završnog – dipomskog rada potrebno je :• 1. IDENTIFIKOVATI I INTERPRETIRATI glavne pojmove i termine koji figurišu u
naslovu teme i tekstu zadatka završnog – diplomskog rada, kao i ostale koncepte iz predmeta istraživanja;
• 2.ANALIZIRATI programske jezike, složenost algoritama, alati koji se koriste pri izradi dizajna programa, leksiku, sintaksu i semantiku programskog koda
• 3. KOMPARIRATI formalne i neformalne definicje algoritama, principe rada kompajlera i interpretera, algoritme leskičke i sintaksne analize
• 4. ISTRAŽITI uloge programa prevodioca u komunikacionom procesu između programera i procesora, programe prevodioce kao sisteme determisitičkih konačnih automata
• 5. PRIMENITI tehničke, tehnološke, opšte lingvističke i jezičke standarde, kao i druge kriterijume u izradi dobrog displeja sadržaja rada, logičkog i grafičkog struktuiranja multimedijalnih dokumenata.
![Page 3: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/3.jpg)
Analiza problema
Dizajn rešenja
Kodiranje
Dekodiranje
Izvršavanje
Sakupljanje informacija o problemu i sastavljanje( specifikacija) zahteva
Struktura softverskih komponenti(modula), njihovih veza i podataka koja zadovoljava specifikovane zahteve
Zapis algoritma na nekom od programskih jezika
Prvođenje programa u formu koja je razumljiva računaru
Računar izvršava program
![Page 4: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/4.jpg)
Analiza problema
Definiše ŠTA proizvod treba da ispuni pričemu se izostavlja KAKO to rešiti
Specifikacija zahteva
Zahtevi se ne odnose samo na funkcionalnost,nego i na ostale karaktristike proizvoda koje nisu
u tesnoj vezi sa njegovom funkcionalnošću
ULAZ OBRADA IZLAZ
KONTROLA
MEMORISANJEKoji je ulaz
na raspolaganju
Šta se želina izlazuKoje podatke
memorisatiKoje su
procedurepotrebne
Koje se kontrolneprocedure
koriste
Informacije o ulazu, obradi i izlazu su relevantne za opisproblema koji je potrebno rešiti pomoću računara
![Page 5: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/5.jpg)
Dizajn programa
Inicijalizacija( deklaracije )
Ulaz Obrada Izlaz
Alati koji se koriste za dizajniranje svakog od modula
Srtukturni dijagram HIPO dijagram Dijagram toka Tabele odlučivanja Pseudokod
1.Finansijsko knjigovodstvo
2.Kontrolni plan 4.Nalog za knjiženje
3.ažuriranje kontrolnog plana
5.Kumuliranje i kontrola naloga
6.Štampanje
Pokazuje tok podataka i poslove procesiranja podataka u
strukturi hijerarhijskog "stabla" modula za procesiranje podataka
Tabelapreduzeća
Tabela kontrolnogplana
Tabela naloga za knjiženje
Knjiženje naloga
Pronalaže-nje konta
Unos naloga
Listanje
Tabela proknjižen-ih naloga
Tabela stanja konta
Ulaz Obrada Izlaz
Prikazuje karakteristikeulaza/obrade/izlazaraznovrsnih modula
u sistemu
START
STOP
Procesiranje
Odluka
Po~etak/Kraj (terminalna ta~ka)
Konektor stranice
Konektor za drugi dijagram toka
Ulaz/Izlaz
Predefinisani proces(Operacije koje nisu detaljno predstavljene ukonkretnom dijagramu)
Pravci toka
Procesiranje
Odluka
Početak / Kraj ( terminalna tačka )
Konektor stranice
Konektor za drugi dijagram toka
Ulaz / Izlaz
Predefinisani proces
Pravci toka
Paušal T T F F F
Varijabla F F T T F
Potrošnja < 100 kWh T F T F
Potrošnja > 100 kWh F T F T
Minimalna naplata X
Račun A X X
Račun B X
Drugi tretman X
USLOVI
AKCIJA
PRAVILA
Identifikuju uslovnu logikuodlučivanja softverskogproizvoda. Pravila govorekoju akciju treba preduzetiza set uslova
BEGIN / Počni program READ / Učitaj matricu DO WHILE / Radi dok ima podataka
Invertuj matricu i = 1, nj = i, n
PRINT Štampaj inverznu matricu END DO
END / Kraj programa
Pseudokod se sastoji od iskaza govornog jezika
(obično je to engleski) i upravljačkih struktura koji zajedno definišu
logiku softvera
Postoje različiti programski dizajni koji zadovoljavaju isti skup zahteva, pa jebitno da se odabere onaj dizajn programa koji daje najkvalitetnije rešenje.
Mehanizami koji se koriste za sprovođenje aktivnosti faza dizajna su algoritmi.Analizom algoritama može se odabrati dizajn programa koji daje najkvalitetnije rešenje.
![Page 6: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/6.jpg)
Algoritamske osnove informacionog procesiranja
U matematici i računarskoj nauci algoritam je uređeni skup definisanih
naredbi za obavljanje nekog zadatka. Algoritmi se koriste u računarskim
programima kao način rešavanja nekog zadatka
Predstavlja vodilju za programera
koji pomoću njega
predstavlja viziju
programa koji želi napisati
u programskom
jeziku.
Koncept algoritma je dobio formu 1936. preko Tjuringovih mašina (TM). Apstraktni (zamišljeni) uređaj kojim se, na izvesan način,
definiše način razmišljanja računara i algoritam.
x yA
Bez obzira kako je izražen, algoritam transformiše podatak x u rezultat ytako da ima istu ulogu i moć kao i izračunavanje funkcije
(x) = y
![Page 7: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/7.jpg)
Skup svih funkcija je neprebrojiv skup.
Odakle proizilazi da je skup svih algoritama prebrojiv skup.
Algoritam se može posmatrati kao konačan nizkoraka koji su elementi nekog prebrojivog skupa.
A4
A3
A2
A1
.
.
.
.
.
.
AFf
g
.
.
.
Odnosno, ne postojibijekcija sa skupa
A na skup F.
Postoje problemikoji nisu
algoritamski rešivi.
NPR. TjuringovHalting problem
![Page 8: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/8.jpg)
Problem zadržavanja(eng. Halting problem) Neka takav algoritam T postoji. Uzimaju se
dve proizvoljne sekvence S,Q. Operacija S(Q) ima smisla ako je S legitimno kodiranjealgoritma ( može se reći ako je S algoritam )
Dati proizvoljni algoritam za proizvoljni podatak D , odlučuje da li u konačnom vremenu operacija A(D)prestaje .
Može se definisati ponašanje algoritma T:- T(S,Q) = yes ako je S algoritam i operacija S(Q) daje rezultat ( završava se )- T(S,Q) = no ako S nije algoritam ili operacija S(Q) ne daje rezultat ( ne završava se )
ANT(D) if ( T(D,D) = yes ) loop forever else answer yes;
ANT(D) se ne završava ako i samo ako je T(D,D) = yes. Kako je D algoritam i možemo pisati:ANT(D) se ne završava akko se D(D) završava.
Ali pošto je ANT(D) algoritam, operacija se može izvršiti za D = ANT i tako dobijamo:
ANT(ANT) ne prestaje akko ANT(ANT) prestaje
DA NE
Pouka Tjuringa je da je nemoguće zaključiti kakvi će biti rezultati dobijeni od drugih,
čak i ako znamo sve o njima ( T zna S i D )
![Page 9: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/9.jpg)
Za svaki konkretan problem postoji nekoliko rešenja i za rešavanje istog može se dizajnirati više odgovarajućih algoritama, koji se dramatično razlikuju po svojoj efikasnosti. Ozbiljno poređenje ovih algoritama mora biti izvedeno na čvrstoj matematičkoj osnovi. Teorija računarske složenosti ima za cilj upravo to.
Kažemo da niz (an) asimptotski dominira niz (bn) ako postoje konstante n0 i M>0 takve da je:
( bn ) M( an), za sve n ≥ n0 .
U početku su samo dve stvari razmatrane: brzina izvršavanja (vremenska složenost) i uslov za skladištenje (prostorna složenost).Danas se drugi parametar uglavnom zanemaruje, osim za aplikacije na mašinama sa veoma malom količinom memorije, kao što su mobilni telefoni, ili mreže u kojima se ogromna količina podataka kopira na više lokacija zbog bržeg pristupa
Složenost algoritma iskazuje se asimptotskim ponašanjem niza koji predstavlja gornju granicu za broj računskih operacija (ili broj upoređivanja) dovoljnih da bi se algoritam realizovao. Zavisno od problema, najčešće se složenost izražava u zavisnosti od ulaznih podataka.
Sa O(an) označava se skup svih nizova (bn) koji su asimptotski dominirani nizom (an). Skup O(an) zovemo veliko O od (an ) i pišemo:
bn = O( an ) (an ) asimptotski dominira niz (bn)
Algoritamska složenost
![Page 10: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/10.jpg)
4 5 3 1 2
> 1> 15 >
> 1> 25 >
> 1> 2> 35 >
10
Analiza složenosti algoritma za sortiranje insertovanjem
Najlošiji slučaj (Worst case) složenosti ovog sortiranja je: T(n) = 1+2+3+...+(n-1) = O(n2)
Jer za dvočlani niz vrši se jedno poređenje, za tročlani dva poređenja...i za n-ti član n-1 poređenje.
T(n) = 0,5*n(n-1) = 0,5n2 – 0,5 n2 ( n0 = 1, M = 1)
![Page 11: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/11.jpg)
Osobine algoritama
Definisanost
Konačnost
Ula
z i iz
laz
Izvrši
vost
Determinisanost (određenost)
Posle izvršenja nekog algoritamskog koraka
strogo je definisan prelaz na sledeći
algoritamski korak.
Algoritamski korak izvršiv ako je čovek u stanju da ga izvrši za
konačno vreme (pomoću olovke i
papira)
Izvršenje svakog algoritma je postignuto posle konačno mnogo primena algoritamskih
koraka
Skup ulaznih veličina algoritma predstavlja
polazne veličine (podatke) zadatka koji se rešava. Skup izlaznih veličina jeste traženo rešenje (rezultat) postavljenog
zadatka
![Page 12: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/12.jpg)
Formalna definicija algoritma
Numerički metod je uređena četvorka ( Q , I , Ω , f )
Skup stanja izračunavanja
Ulazni skup
Izlazni skup
Pravilo izračunavanja
I Q
Ω Q
f : Q → Q i (qΩ)f(q)=q
Za svako x I definiše senumerički niz (xi); i= 0,1,2...
x0 = x xi = f ( x i –1 )
x = x0 x1 x2 ... xk-1 xk
f f f f f
f
Ω
Q
Kaže se da se numerički niz završava u k koraka ako je k najmanji prirodan broj za koji je xk iz Ω
Algoritam je numerički metod čija se primena završava posle konačno
mnogo koraka za svako x iz ulaznog skupa I.
![Page 13: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/13.jpg)
viši programski jezici, koji su proceduralni
neproceduralni jezici, sa usko specijalizovanom namenom (SQL, HTML, PHP, ASP )
mašinski jezici
simbolički mašinski jezici - asambleri i makro-asambleri
Računarski zavisni ( svaki tip računara ima svoj vlastiti
mašinski jezik )
Upotrebljava skraćene notacije od slova i brojeva za komunikaciju sa računarom
umesto binarnih grupa
Jezici na višem nivou apstrakcije, ali se u njima
prezentuju kompletne algoritamske strukture
Još veći nivo apstrakcije, “znaju” kako da izračunaju funkcionalne podatke bez specifikacije odgovarajućih
algoritama
![Page 14: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/14.jpg)
kompajler linker
Objektnikod
Izvršni kod
loader
memorija
Izvorni kod
KOMPAJLER
Kompajleri (engl. compiler) su programi koji izvorni program, napisan na višem (simboličkom) programskom jeziku, prevodeu objektni program napisan na mašinskom programskom jeziku prevodeći celi program odjednom i formirajući poseban programu mašinskom programskom jeziku koji se naziva izvršna verzija programa.
Objektni kod je verzija programa u mašinskom jeziku ali se ne može izvršavatijer može pozivati potprograme koji nisu konvertovaniu mašinski jezik u isto vreme kad i tekući program ilipozivati funkcije koje se nalaze u nekoj biblioteci..
Taj problem rešavaju linkeri i stvaraju izvršnu verziju programa.Izvršni fajl koga je linker stvorio poseduje logičke adrese.
Loader izvršava relokaciju ( logičke adrese zamenjuje fizičkim)
![Page 15: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/15.jpg)
interpreter
loader
memorija
Izvorni kod
INTERPRETER
Interpreteri su programi koji instrukcije izvornog programa napisanog na višem(simboličkom) programskom jeziku, prevode u instrukcije na mašinskom programskomjeziku prevodeći instrukciju po instrukciju programa tokom njegovog izvršavanja. Interpreter ne stvara objektnu formu već u isto vreme obrađuje internu formu programa i podatke.
![Page 16: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/16.jpg)
Faze zavisne od ciljnog jezika (sinteza) pripadaju zadnjem modulu kompajlera.
Faze zavisne od izvornog jezika (analiza) pripadaju prednjem
modulu kompajlera.
KOMPAJLERIKOMPAJLERI
Faze kompajliranja se grupišu na faze zavisne od izvornog jezika i na faze zavisne od ciljnog jezika:
Faze u kompajliranju:
Praktična važnost podele kompajlera na prednji i zadnji modul proizlazi iz činjenice da se prevođenje sa jednog izvornog jezika na više ciljnih jezika može ostvariti pravljenjem jednog prednjeg modula i više zadnjih modula kompajlera, a da se prevođenje sa više izvornih jezika na jedan ciljni jezik može ostvariti pravljenjem više prednjih i jednog zadnjeg modula.
Program „prerađuje“ na oblik pogodan za dalju analizu.
Izbacuju se komentari i višak razmaka između simbola,
prepoznaju se imena, rezervisane reči, simboli i brojevi i
zamenjuju se pogodnim simbolima
Proverava da li program
ima „gramatičkih grešaka“.
Poverava da li program ima „smisla“,
tj. da li su tipovi izraza koji se upoređuju
saglasni, da li su pri pozivu procedure parametri
odgovarajućeg tipa, itd.
Stvara se međuprikaz izvornogprograma s ciljem da se
prikaz lako generišei da se jednostavno
prevede u ciljni programMeđuprikaz transformiše seu funkcionlno ekvivalentne
ali brže i manje oblike
Stvara se ciljni program
![Page 17: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/17.jpg)
Znak (simbol)
Reč
Alfabet
Jezik
Osnovni univerzalni koncepti za sve
programe prevodioce
Jedinstven, nedeljiv element, kao što je: a, b, ..., A, B, ..., 0, 1, ..., +, -, *, itd.
Konačni niz znakova (string) oblikovan
nadovezivanjem nekog broja znakova.
Konačan skup znakova kojeg označavamo sa A.
Podskup skupa svih nizova znakova nad alfabetom
Ako je A alfabet i A * skup svih nizova znakova nad A, jezik L nad alfabetom A
jeste bilo koji podskup od A *, tj.
L A *
Nizovi znakova koji čine elemnte jezika nazivamo rečenicama. Odnosno jezik
je skup rečenica.
Metoda koja se koristi za specifikovanje skupa koji čini jezik je gramatika.
Da bi se napravio program koji prevodi izvorni program u objektni potrebno je
imati precizan opis izvornog jezika u pogodnijem obliku, tj opis u kome se ogleda
njegova struktura.Kako računar ne može da razume sadržaj
programa potrebno je opisati jezikkao niz simbola koji zadovoljavaju neka pravila.
![Page 18: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/18.jpg)
gde je:
N - konačan skup neterminalnih simbola (pomoćnih simbola),
T - konačan skup terminalnih simbola,
S N početni neterminalni simbol,
P - skup pravila, relacija između skupa N i skupa reči nad alfabetom N T.
- uređena četvorka G = (N,T,S,P)Reči jezika ( meta jezik )
kojim se opisuje jezik koji se razmatraReči jezika koji se opisuje(objekt jezik)
Pravila kojim se simbol S zamenjuje nizom simbola iz skupa N T, sve dok se ne
dobije reč koja je sastavljena od simbola iz T
text → { sentence }sentence → capital_word words dotwords → { ( word | capital_word ) }word → small_letter { small_letter }capital_word → capital_letter { small_letter }dot → ".
N = { text, sentence, words, word, capital_word, dot }
T = reči nad azbukom { a,b,c,d...,z } { A,B,C,...,Z} { . }
S = text
FORMALNA GRAMATIKA ZA OBIČAN TEKST
Pravila opisana proširenom BNF
{ ... } da označe da se sadržaj zagrada može pojaviti nijednom, jednom
ili višestruko( ... ) da označe grupisanje
| da označi alternative
![Page 19: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/19.jpg)
F,q,,,Q 0konačan
skup stanja
konačan skup znakov
a
alfabet jezika kojeg automat prihvata
funkcija prelaza
QQ:
govori automatu u koje stanje da napreduje, u zavisnosti od trenutnog stanja i trenutno pročitanog znaka
početno (inicijalno)
stanjestanje u kojem
se automat nalazi u trenutku kad još nijedan
znak nije obrađen
(q0 Q),
skup prihvatljivih
stanja
podskup skupa stanja Q (FQ)
je model diskretnog matematičkog sistema koji čitanjem znak po znak odlučuje je li
pročitani niz element zadatog jezika.
Sastoji se od konačnog broja stanja, prelaza između tih stanja i akcija koje automat obavlja
Stanje priprema informacije o prošlosti, tj. odražava promene na ulazu od početka sistema do sadašnjosti
Prelaz indicira promenu stanja i opisan je uslovom koji treba biti
zadovoljen da bi se omogućio prelaz.
Akcija je opis aktivnosti koja treba biti obavljena u datom trenutku
![Page 20: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/20.jpg)
Skener preuzima (skenira) znak po znak (programskog) teksta radi prepoznavanja simbola sastavljenih od zadanih znakova ili njihovih sekvenci.
Zadužen je za leksičku analizu.SKENERSKENER
Ignoriše znakove koji razdvajaju simbole (delimiteri ili separatori) i reaguje na nedozvoljene znakove ili njihove sekvence.
Obično je potprogram parsera. On prepoznaje jedan simbol i isporučuje ga parseru (zbog sintaksne analize).
Skener isporučuje parseru dve vrednosti – TOKEN (numeričku oznaku vrste simbola) i VREDNOST SIMBOLA.
Tokeni su jedinice koje imaju za jezik
smisleno značenje (npr. ključne reči, identifikatori,
konstante i sl.).
![Page 21: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/21.jpg)
Opšti skener preuzmima opis simbola i na osnovu njega prepoznaje i klasifikuje simbole.
omogućuje GRAMATIKA SIMBOLA.
Može se prikazati u grafičkom obliku pomoću DIJAGRAMA PRELAZA (engl. transition diagram) koji daje osnovu za sistematičan način
prepoznavanja simbola.
SKENERSKENER
OPISIVANJE SIMBOLA
za simbole sastavljene od jednog znaka, pojava tog znakaprevodi skener iz polaznog u završno stanje,
polazno stanje,
po jedno završno stanje za svaki prepoznati simbol,
zahteva uvođenje sledećih stanja skenera:
za simbole sastavljene od više znakova, pojava prvog znaka prevodi skener iz polaznog u prvo međustanje, a pojava svakog narednog znaka prevodi skener u sledeće međustanje, kada ima više međustanja.
usmereni graf u čiji sastav ulaze:
Čvorovi koji predstavljaju
STANJA SKENERA –
jedan od ovihčvorova je polazni, a više njih mogu biti
završni čvorovi.
USMERENE SPOJNICE
između čvorova koje ukazuju na
moguće prelaske iz
jednog u drugo stanje.
LABELE USMERENIH SPOJNICA - svaka labela
odgovara skupu
znakova.
ZNAKOVI od kojih se mogu
obrazovati labele.
![Page 22: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/22.jpg)
10
3
5
2
4
start dot_DOT
capital_letter
other_CAPITAL_WORD
small_letter
small_letter
small_letter
other
_WORD
SKENERSKENERPodrazumeva se da početno stanje skenera odgovara početnom čvoru.
Kada se ne nalazi u završnom stanju, skener preuzima znak i proverava
da li on pripada skupu znakova neke od labela
spojnica izlazećih iz čvora koji odgovara trenutnom
stanju skenera.Ako preuzeti znak
pripada skupu znakova jedne od labela pomenutih spojnica, skener prelazi u stanje
određeno čvorom koga ukazuje
dotična spojnica.
Ako ne pripada, tada je otkrivena leksička greška.
Kada dospe u stanje koje odgovara
završnom čvoru, skener je prepoznao
simbol i može da ponovo pređe u početno stanje.
U nekim od završnih stanja skener mora da vrati poslednje preuzeti znak, ako on ne pripada
prepoznatom simbolu, jer tada on pripada sledećem simbolu.
![Page 23: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/23.jpg)
10
3
5
2
4
start dot_DOT
capital_letter other
_CAPITAL_WORD
small_letter
small_letter
small_letter
other
_WORD
SKENERSKENER
On je .
Onje.
_CAPITAL_WORD _WORD
.
_DOT
![Page 24: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/24.jpg)
Proverava da li je ulazni niz simbola (tokena), dobijen od skenera, u skladu sa gramatikomPARSERPARSER
PROVERA: 2 pristupaPROVERA: 2 pristupa
SILAZNO PARSIRANJE Parser u toku izvođenja formira niz izvođenja koji se može prikazati u obliku DRVETA PARSIRANJA (engl. parse tree).
Izvođenja mogu biti:
Primeri nizova izvođenja i korespondentnog drveća
parsiranja za iskaz
Ovo je tekst.
(2) s desna: u svakom koraku se zamenjuje krajnje desni pojam.
(1) s leva: u svakom koraku se zamenjuje krajnje levi pojam
DRVO PARSIRANJA ZA IZVOĐENJE S LEVADRVO PARSIRANJA ZA IZVOĐENJE S DESNA
POGODNIJE JE POGODNIJE JE PRIMENITI IZVOĐENJE PRIMENITI IZVOĐENJE S LEVA, JERS LEVA, JER SE TADA SE TADA
SIMBOLI SA ULAZA SIMBOLI SA ULAZA PREUZIMAJU U PREUZIMAJU U
PRIRODNOM PRIRODNOM REDOSLEDUREDOSLEDU..
![Page 25: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/25.jpg)
Najpre se alternativama produkcija gramatike G
proizvoljno pridruže indeksi. Na primer, ako su a1, a2, ...,an sve
alternative produkcije za A, onda je a1 prva alternativa, a2
druga alternativa, itd.
Neka je w =a1 a2 . . . an ulazni niz za koji treba utvrditi je li u
jeziku generisanim sa G. Upotrebićemo kazaljku koja će
pokazivati na tekući znak ulaznog niza (na početku je to
znak a1).
Početni simbol S predstavlja koren stabla sintaksne analize i
istovremeno aktivni čvor.
Ako je aktivni čvor neterminalni simbol X, bira se njegova prva
alternativa i generiše k njegovih naslednika. Neka su označeni sa X1 , ..., Xk . Xi je novi aktivni čvor. Ako je k=0, aktivni čvor postaje
simbol koji sledi X.
Ako je aktivni čvor terminalni simbol, upoređuje se sa aktuelnim
simbolom ulaznog niza (simbolom na koji pokazuje kazaljka). Ako su
jednaki, kazaljka se pomiče za jedan simbol udesno. Aktivni čvor
postaje simbol desno od terminalnog simbola.
1111
2222
3333
4444
5555
Ako terminalni simbol nije jednak aktuelnom simbolu ulaznog niza, vraća se na čvor gde je bila upotrebljena prethodna produkcija i izvodi sledeća alternativa.
Ako nijedna alternativa nije moguća, vraća se na prethodni čvor, itd.
Ako su upotrebljene sve alternative i postupak izjednačavanja ulaznog niza w nije usešno izveden, ulazni niz nije u jeziku generisanom gramatikom G
Algoritam sintaksne analizeod vrha ka dnu
![Page 26: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/26.jpg)
S aSbS | aS | c1. aSbS2. aS 3. c
w = aacbc
S
S je koren i inicijalni aktivni čvor. Kazaljka pokazuje na simbol a.
a a c b c
Generisana su četiri naslednika S(prva alternativa). Terminal a jeaktivni čvor i jednak je tekućem simbolu. Kazaljka sepomiče za jedno mesto
aSbSAktivni čvor je neterminal S, pa se ponovo generišu četirinaslednika (prva alternativa).Aktivni čvor je terminal a, jednak je simbolu ulaznog niza,pa se kazaljka pomiče za jedno mesto aSbS
Neterminal S je ponovno aktivničvor.Generišu se naslednici odS prema prvoj alternativi
aSbS
Terminal a je aktivni čvor i nije jednak tekućem simbolu. Pokušava se s drugomalternativom.Terminal a je aktivničvor i nije jednak tekućem simbolu.
aS
Pokušava se s trećom alternativom.Prvo je terminal c aktivni čvor i jednak je tekućem simbolu. Kazaljka se pomiče za jedno mesto. Sada je terminal b aktivni čvor i jednak je tekućem simbolu. Kazaljka se pomiče za jedno mesto
c
Neterminal S je aktivni čvor. Generišu se naslednici prema prvoj alternativi. Posle toga je terminal aaktivni čvor i nije jednak tekućem znaku.Pokušava se s drugom alternativom.Opet je terminal a aktivni čvor i nije jednaktekućem znaku. Pokušava se s trećom alternativom. Tada je terminal c aktivni čvor i jednak je tekućem znaku. Kazaljka se pomiče za jedno mesto.
aSbSaSc
Kazaljka je iza poslednjeg znaka ulaznog niza, a u stablusu ostala još dva znaka, b i S.
Vraćamo se do mesta gde jeposlednji put ekspandirano stablo. Ne postoji više alternativa, pa se vraćamo na prethodno mesto ekspanzije stabla. Ni tu nije moguća nova ekspanzija, pa se dalje vraćamo.
Primer
![Page 27: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/27.jpg)
S a a c b c
aSbS
aS
Razmatra se druga alternativa.Aktivni čvor je terminala i jednak je tekućem znaku.Kazaljka se pomiče za jedno mesto.
Aktivni čvor je S. Generiše se podstablo izprve alternative. Novi aktivni čvor je terminal a i nije jednak tekućem znaku. Pokušava se s drugom alternativom. Opet je aktivni čvor terminal a. Pokušava se s trećom alternativom.Aktivni čvor je terminal c i jednak je tekućem znaku.
aSbSaSc
Kazaljka se pomiče za jedno mesto i pokazuje na teminal b. Aktivni čvor je b i jednak je tekućem znaku.Kazaljka se pomiče za jedno mesto i pokazuje na terminal c a aktivni čvor je neterminal S kojiposlije bezuspešne prve i druge produkcije prelazi u terminal c.
c
Kazaljka se pomiče i pokazuje iza poslednjeg znaka. Više nema aktivnih čvorova. Ulazni niz je u jeziku
Postoji veoma opasna zamka u predstavljenoj proceduri. Ako je gramatika rekurzivna s leva proces se ne bi nikada završio!U tom slučaju bi se smenom nekog neterminala (aktivnog čvora)dobio isti aktivni čvor, pa njegovom smenom opet isti itd
S
Sa
Sa
.
.
.
![Page 28: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/28.jpg)
S ABA abB aba
w = ababaababa
ab
Aab
AAa
a
AB
S
Premeštanje se sastoji od ispitivanja nizana vrhu liste i utvrđivanja postoji li desnastrana produkcije koja može biti izjednačena sa vrhom liste. Ako postojivrh liste se zamenjuje sa njom.Ako postoji više desnih strana produkcijekoje se mogu upotrebiti za redukovanjevrha liste, uz pretpostavku prethodnoguređenja produkcija, biće upotrebljena prva. Ako nije moguća nijedna redukcijasledeći simbol se smešta u listu i ponavlja se postupak.Ako se dosegne kraj ulaznog niza i nije moguća nijednaredukcija, vraća se na poslednje premeštanje gde je redukcija učinjenai pokušava se sa drugom redukcijom.Ulazni niz je u jeziku ako lista sadrži početni simbol i ako je dosegnut kraj niza.
Primer
Algoritam silazne sintaksne analize
![Page 29: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/29.jpg)
Principi semantičke analize
Značenje ( semantika ) programskogjezika opisuje se neformalno.
Proverava da li sintaksno stablo ima semantičkih grešaka.
Otkrivaju se greške kao što su:
Nedeklarisane varijable Funkcije povezanesa neodgovarajućim
argumentima
Nekompatibilnioperandi
Nepodudaranjetipova
Pristup zabranjenim
objektima
int a;int b;
...c = a + b
...
c je tipa int
Program leksički,sintaksno i semantičkiispravan
int a;char b;
...c = a + b
...
Program leksički,sintaksno ispravan,
a semantičkineispravan
![Page 30: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/30.jpg)
- Izložen je jedan deo puta kojim se treba proći da bi se došlo do rešenja nekog problema pomoću računara odnosno od samog nastanka problema do njegovog formulisanja u oblik koji je pogodan za računarsku obradu.
- Rešenje jednog problema se može na više načina dizajnirati a koji način je najbolji može se utvrditi analizom složenosti algoritama.
- Ulogu dekodera u komunikacionom sistemu između programera i procesora imaju programski prevodioci
- Programi prevodioci mogu proučavati sa više aspekata, na primer kao sistemi determinističkih konačnih automata, kao dielovi komunikacionog sistema između programera i procesora i na kraju krajeva, identično svim programima napisanim u nekom programskom jeziku, kao kód nekog problema.
Zaključci
![Page 31: Algoritamske osnove program a prevodilaca](https://reader036.vdocuments.mx/reader036/viewer/2022062500/56815137550346895dbf4ed4/html5/thumbnails/31.jpg)