1 / 31

Algoritamske osnove program a prevodilaca

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.

terra
Download Presentation

Algoritamske osnove program a prevodilaca

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. UNIVERZITET U ISTOČNOM SARAJEVU FILOZOFSKI FAKULTET PALE STUDIJSKI PROGRAM ZA MATEMATIKU I RAČUNARSTVO Algoritamske osnove programa prevodilaca Završni – diplomski rad Mentor : Prof. Dr Milorad K.Banjanin Student : Milan Vasiljević Pale, 2012. godine

  2. 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 INTERPRETIRATIglavne pojmove i terminekoji figurišu u naslovu teme i tekstu zadatka završnog – diplomskog rada, kao i ostale koncepte iz predmeta istraživanja; 2.ANALIZIRATIprogramske jezike, složenost algoritama, alati koji se koriste pri izradi dizajna programa, leksiku, sintaksu i semantiku programskog koda 3. KOMPARIRATIformalne i neformalne definicje algoritama, principe rada kompajlera i interpretera, algoritme leskičke i sintaksne analize 4. ISTRAŽITIuloge programa prevodioca u komunikacionom procesu između programera i procesora, programe prevodioce kao sisteme determisitičkih konačnih automata 5. PRIMENITItehnič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.

  3. Sakupljanje informacija o problemu i sastavljanje( specifikacija) zahteva Analiza problema Struktura softverskih komponenti(modula), njihovih veza i podataka koja zadovoljava specifikovane zahteve Dizajn rešenja Zapis algoritma na nekom od programskih jezika Kodiranje Prvođenje programa u formu koja je razumljiva računaru Dekodiranje Računar izvršava program Izvršavanje

  4. Specifikacija zahteva Analiza problema Definiše ŠTA proizvod treba da ispuni pri čemu se izostavlja KAKO to rešiti Zahtevi se ne odnose samo na funkcionalnost, nego i na ostale karaktristike proizvoda koje nisu u tesnoj vezi sa njegovom funkcionalnošću Koje se kontrolne procedure koriste KONTROLA Informacije o ulazu, obradi i izlazu su relevantne za opis problema koji je potrebno rešiti pomoću računara ULAZ OBRADA IZLAZ Šta se želi na izlazu Koji je ulaz na raspolaganju Koje su procedure potrebne Koje podatke memorisati MEMORISANJE

  5. Dizajn programa 1.Finansijsko knjigovodstvo 2.Kontrolni plan 4.Nalog za knjiženje 3.ažuriranje kontrolnog plana 5.Kumuliranje i kontrola naloga 6.Štampanje Ulaz Obrada Izlaz Tabela preduzeća Unos naloga Tabela stanja konta Tabela kontrolnog plana Pronalaže-nje konta Tabela proknjižen-ih naloga Tabela naloga za knjiženje Knjiženje naloga Listanje Inicijalizacija ( deklaracije ) Ulaz Obrada Izlaz Alati koji se koriste za dizajniranje svakog od modula Srtukturni dijagram HIPO dijagram Dijagram toka Tabele odlučivanja Pseudokod PRAVILA Procesiranje Pseudokod se sastoji od iskaza govornog jezika (obično je to engleski) i upravljačkih struktura kojizajedno definišu logiku softvera Postoje različiti programski dizajni koji zadovoljavaju isti skup zahteva, pa je bitno da se odabere onaj dizajn programa koji daje najkvalitetnije rešenje. U S L O V I BEGIN / Počni program READ / Učitaj matricu DOWHILE / Radi dok ima podataka Invertuj matricu i = 1, n j = i, n PRINT Štampaj inverznu matricu END DO END / Kraj programa Odluka Prikazuje karakteristike ulaza/obrade/izlaza raznovrsnih modula u sistemu Pokazuje tok podataka i poslove procesiranja podataka u strukturi hijerarhijskog "stabla" modula za procesiranje podataka Početak / Kraj ( terminalna tačka ) Identifikuju uslovnu logiku odlučivanja softverskog proizvoda. Pravila govore koju akciju treba preduzeti za set uslova 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. Konektor stranice Konektor za drugi dijagram toka A K C I J A Ulaz / Izlaz Predefinisani proces Pravci toka

  6. Algoritamske osnove informacionog procesiranja Predstavlja vodilju za programera koji pomoću njega predstavlja viziju programa koji želi napisati u programskom jeziku. 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 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. A x y (x) = y Bez obzira kako je izražen, algoritam transformiše podatak x u rezultat y tako da ima istu ulogu i moć kao i izračunavanje funkcije

  7. Skup svih funkcija je neprebrojiv skup. Odakle proizilazi da je skup svih algoritama prebrojiv skup. Algoritam se može posmatrati kao konačan niz koraka koji su elementi nekog prebrojivog skupa. F A f A1 g A2  . . . A3  A4 . . . . . . Odnosno, ne postoji bijekcija sa skupa A na skup F. Postoje problemi koji nisu algoritamski rešivi. NPR. Tjuringov Halting problem

  8. 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 ) 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 kodiranje algoritma ( može se reći ako je S algoritam ) ANT(D) if ( T(D,D) = yes ) loop forever else answer yes; DA NE Dati proizvoljni algoritam za proizvoljni podatak D , odlučuje da li u konačnom vremenu operacija A(D) prestaje . 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. • 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 ) 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

  9. 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. Algoritamska složenost 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šanjemniza 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. Kažemo da niz (an) asimptotski dominiraniz (bn) ako postoje konstante n0i M>0 takve da je: ( bn ) M( an), za sve n ≥ n0 . 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)

  10. > 1 5 > > 1 5 > > 2 > 1 10 5 > > 3 > 2 > 1 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)

  11. Posleizvršenjanekogalgoritamskogkorakastrogojedefinisanprelaznasledećialgoritamskikorak.Posleizvršenjanekogalgoritamskogkorakastrogojedefinisanprelaznasledećialgoritamskikorak. Definisanost Osobine algoritama 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 Ulaz i izlaz Determinisanost (određenost) Algoritamskikorakizvršivakoje čovekustanjudagaizvršizakonačnovreme (pomoćuolovkeipapira) Izvršenjesvakogalgoritmajepostignutoposlekonačnomnogoprimenaalgoritamskihkoraka Konačnost Izvršivost

  12. Formalna definicija algoritma Algoritam je numerički metod čija se primena završava posle konačno mnogo koraka za svako x iz ulaznog skupa I. Numerički metod je uređena četvorka ( Q , I , Ω , f ) Za svako x I definiše se numerički niz (xi); i= 0,1,2... Skup stanja izračunavanja x0 = x xi = f ( x i –1 ) Ulazni skup I  Q Ω f f f f f Izlazni skup Ω Q x = x0 x1 x2 ... xk-1 xk f Pravilo izračunavanja f : Q → Q i (qΩ)f(q)=q 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 Ω

  13. neproceduralni jezici, sa usko specijalizovanom namenom(SQL, HTML, PHP, ASP ) 4GL viši programski jezici, koji su proceduralni 3GL simbolički mašinski jezici - asambleri i makro-asambleri 2GL mašinski jezici 1GL VIŠI PROGRAMSKI JEZICI Još veći nivo apstrakcije, “znaju” kako da izračunaju funkcionalne podatke bez specifikacije odgovarajućih algoritama Jezici na višem nivou apstrakcije, ali se u njima prezentuju kompletne algoritamske strukture Upotrebljava skraćene notacije od slova i brojeva za komunikaciju sa računarom umesto binarnih grupa Računarski zavisni ( svaki tip računara ima svoj vlastiti mašinski jezik ) NIŽI PROGRAMSKI JEZICI Generacije programskih jezika

  14. KOMPAJLER Izvršni kod Objektni kod Izvorni kod loader kompajler linker memorija Kompajleri (engl. compiler) su programi koji izvorni program, napisan na višem (simboličkom) programskom jeziku, prevode u objektni program napisan na mašinskom programskom jeziku prevodeći celi program odjednom i formirajući poseban program u mašinskom programskom jeziku koji se naziva izvršna verzija programa. Objektni kod je verzija programa u mašinskom jezikuali se ne može izvršavati jer može pozivati potprograme koji nisu konvertovani u mašinski jezik u isto vreme kad i tekući program ili pozivati 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)

  15. INTERPRETER Izvorni kod loader interpreter memorija Interpreteri su programi kojiinstrukcije izvornog programa napisanog na višem (simboličkom) programskom jeziku, prevode u instrukcije na mašinskom programskom jeziku 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.

  16. Faze zavisne od izvornog jezika (analiza) pripadajuprednjem modulu kompajlera. Fazezavisne od ciljnog jezika (sinteza) pripadaju zadnjem modulu kompajlera. KOMPAJLERI Faze kompajliranja se grupišu na faze zavisne od izvornogjezika i na faze zavisne od ciljnog jezika: Faze u kompajliranju: 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 procedureparametri odgovarajućeg tipa, itd. Stvara se međuprikaz izvornog programa s ciljem da se prikaz lako generiše i da se jednostavno prevede u ciljni program Međuprikaz transformiše se u funkcionlno ekvivalentne ali brže i manje oblike PREDNJI MODUL KOMPAJLERA Stvara se ciljni program Praktična važnost podele kompajlera na prednji i zadnji modul proizlazi iz činjenice da se prevođenje sa jednog izvornogjezikanavišeciljnihjezikamožeostvaritipravljenjemjednogprednjegmodulaivišezadnjihmodulakompajlera, a da seprevođenje sa više izvornih jezika na jedan ciljni jezik možeostvaritipravljenjemvišeprednjihijednogzadnjegmodula. ZADNJI MODUL KOMPAJLERA Komunikacija prednjeg i zadnjeg modula kompajlera podrazumeva uvođenje međukoda. Onpredstavlja: (1) CILJNI JEZIK za prednji modul kompajlera, a (2) IZVORNI JEZIK za zadnji modul kompajlera.

  17. Znak (simbol) 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 jezik kao niz simbola koji zadovoljavaju neka pravila. Jedinstven, nedeljiv element, kao što je: a, b, ..., A, B, ..., 0, 1, ..., +, -, *, itd. Alfabet Konačan skup znakova kojeg označavamo sa A. Osnovni univerzalni koncepti za sve programe prevodioce Reč Konačni niz znakova (string) oblikovan nadovezivanjem nekog broja znakova. Jezik Podskup skupa svih nizova znakova nad alfabetom Ako je A alfabet i A * skup svih nizova znakova nad A, jezik Lnad 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.

  18. Gramatika Reči jezika ( meta jezik ) kojim se opisuje jezik koji se razmatra - uređena četvorka G = (N,T,S,P) Reči jezika koji se opisuje (objekt jezik) 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. 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 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 → ". N = {text, sentence, words, word, capital_word, dot } T = reči nad azbukom { a,b,c,d...,z } { A,B,C,...,Z} { . } • { ... } da označe da se sadržaj zagrada • može pojaviti nijednom, jednom • ili višestruko • ( ... ) da označe grupisanje • | da označi alternative S = text Pravila opisana proširenom BNF

  19. jemodeldiskretnogmatematičkogsistema koji čitanjemznakpoznakodlučujejeli pročitaninizelementzadatogjezika. KONAČNI AUTOMAT je predstavljen uređenom petorkom Sastoji seodkonačnogbrojastanja, prelaza izmeđutihstanjaiakcijakojeautomatobavlja početno (inicijalno) stanje podskup skupa stanja Q (FQ) skup prihvatljivih stanja stanje u kojem se automat nalazi u trenutku kad još nijedan znak nije obrađen (q0 Q), Stanjepripremainformacijeoprošlosti, tj. odražavapromenenaulazuod početkasistemadosadašnjosti Prelazindicirapromenustanja iopisanjeuslovomkojitrebabiti zadovoljendabiseomogućioprelaz. konačan skup stanja funkcija prelaza Akcijajeopisaktivnosti kojatrebabitiobavljenaudatomtrenutku konačan skup znakova govori automatu u koje stanje da napreduje, u zavisnosti od trenutnog stanja i trenutno pročitanog znaka alfabet jezika kojeg automat prihvata

  20. Zadužen je za leksičku analizu. SKENER Skener preuzima (skenira) znak po znak (programskog) tekstaradiprepoznavanjasimbolasastavljenihodzadanihznakovailinjihovihsekvenci. Ignorišeznakovekojirazdvajaju simbole (delimiteri ili separatori) i reaguje nanedozvoljeneznakoveilinjihovesekvence. Tokeni su jedinice koje imaju za jezik smisleno značenje (npr. ključne reči, identifikatori, konstante i sl.). Obično jepotprogram parsera.Onprepoznajejedansimboliisporučujegaparseru (zbog sintaksneanalize). Skenerisporučujeparserudvevrednosti – TOKEN(numeričkuoznakuvrstesimbola) iVREDNOST SIMBOLA. Simboli tekst gramatike Tokeni tekst gramatike

  21. SKENER Opšti skener preuzmima opis simbola i na osnovunjega prepoznaje i klasifikuje simbole. OPISIVANJE SIMBOLA omogućuje GRAMATIKA SIMBOLA. Može seprikazati u grafičkomoblikupomoćuDIJAGRAMAPRELAZA (engl. transition diagram) kojidajeosnovuzasistematičannačinprepoznavanjasimbola. usmereni grafu čiji sastav ulaze: DIJAGRAM PRELAZA zahteva uvođenje sledećih stanja skenera: polaznostanje, po jedno završno stanje za svaki prepoznati simbol, USMERENE SPOJNICE između čvorova koje ukazuju na moguće prelaske iz jednog u drugo stanje. LABELE USMERENIH SPOJNICA -svakalabelaodgovaraskupu znakova. ZNAKOVI od kojih se mogu obrazovati labele. ČvorovikojipredstavljajuSTANJA SKENERA – jedanodovihčvorova je polazni, a višenjihmogubitizavršničvorovi. za simbole sastavljene od jednog znaka, pojava tog znaka prevodiskenerizpolaznog u završnostanje, zasimbolesastavljeneodvišeznakova, pojavaprvogznaka prevodi skener iz polaznog u prvo međustanje, apojava svakog narednog znaka prevodi skener u sledećemeđustanje, kada ima više međustanja.

  22. SKENER Kada se ne nalazi u završnom stanju, skener preuzima znak i proveravadali on pripadaskupuznakovanekeodlabelaspojnicaizlazećihizčvorakojiodgovaratrenutnomstanjuskenera. Podrazumeva se dapočetnostanjeskeneraodgovarapočetnomčvoru. start dot 1 0 _DOT Ako preuzeti znak pripada skupu znakova jedne od labela pomenutih spojnica, skenerprelazi u stanje određenočvorom koga ukazuje dotična spojnica. capital_letter Kadadospe u stanjekojeodgovarazavršnomčvoru, skener jeprepoznao simbol i može da ponovo pređe u početno stanje. other 2 3 _CAPITAL_WORD small_letter Ako ne pripada, tadaje otkrivenaleksičkagreška. small_letter other 5 4 _WORD small_letter Unekimodzavršnihstanjaskenermoradavratiposlednjepreuzeti znak, ako on ne pripada prepoznatom simbolu, jer tada on pripada sledećem simbolu.

  23. SKENER On je . start dot 1 0 _DOT capital_letter other 2 3 _CAPITAL_WORD small_letter small_letter other 5 4 _WORD small_letter On je. . _WORD _DOT _CAPITAL_WORD

  24. Proveravada li je ulazni niz simbola(tokena), dobijen od skenera, u skladu sa gramatikom PARSER (1) Pokušaj da se iz polaznog pojmagramatikeponjenimpravilimaizvedenizsimbola identičanulaznomnizusimbola. (2) Pokušajda se ulazni nizsimbolaredukujepopravilimagramatike u njen polaznipojam PROVERA: 2 pristupa UZLAZNO PARSIRANJE (engl. bottom-up) SILAZNO PARSIRANJE (engl. top-down) SILAZNO PARSIRANJE Parseru tokuizvođenjaformiranizizvođenja koji se može prikazati u obliku DRVETAPARSIRANJA (engl. parse tree). Izvođenja mogu biti: (1) s leva: u svakom korakuse zamenjujekrajnjelevipojam DRVO PARSIRANJA ZA IZVOĐENJE S DESNA DRVO PARSIRANJA ZA IZVOĐENJE S LEVA POGODNIJE JE PRIMENITI IZVOĐENJE S LEVA, JERSE TADA SIMBOLI SA ULAZA PREUZIMAJU U PRIRODNOM REDOSLEDU. (2) s desna: usvakom koraku se zamenjuje krajnje desni pojam. Primeri nizova izvođenja i korespondentnog drveća parsiranjaza iskaz Ovo je tekst.

  25. Algoritam sintaksne analize od vrha ka dnu 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 terminalni simbol nije jednak aktuelnom simbolu ulaznog niza, vraća se na čvor gde je bila upotrebljena prethodna produkcija i izvodi sledeća alternativa. Najpre se alternativama produkcija gramatike Gproizvoljno pridruže indeksi. Na primer, ako su a1, a2, ...,an sve alternative produkcije za A, onda je a1 prva alternativa, a2 druga alternativa, itd. 4 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). 1 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. Ako nijedna alternativa nije moguća, vraća se na prethodni čvor, itd. 5 2 Početni simbolS predstavlja koren stabla sintaksne analize i istovremeno aktivni čvor. Ako su upotrebljene sve alternative i postupak izjednačavanja ulaznog niza w nije usešno izveden, ulazni niz nije u jeziku generisanom gramatikom G 3

  26. S  aSbS | aS | c • aSbS • aS • c • w= aacbc Primer S Generisana su četiri naslednika S (prva alternativa). Terminal a je aktivni čvor i jednak je tekućem simbolu. Kazaljka se pomiče za jedno mesto Neterminal S je aktivni čvor. Generišu se naslednici prema prvoj alternativi. Posle toga je terminal a aktivni čvor i nije jednak tekućem znaku. Pokušava se s drugom alternativom. Opet je terminal a aktivni čvor i nije jednak tekućem znaku. Pokušava se s trećom alternativom. Tada je terminal c aktivni čvo r i jednak je tekućem znaku. Kazaljka se pomiče za jedno mesto. Terminal a je aktivni čvor i nije jednak tekućem simbolu. Pokušava se s drugom alternativom.Terminal a je aktivni čvor i nije jednak tekućem simbolu. Aktivni čvor je neterminal S, pa se ponovo generišu četiri naslednika (prva alternativa). Aktivni čvor je terminal a, jednak je simbolu ulaznog niza, pa se kazaljka pomiče za jedno mesto 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 Neterminal S je ponovno aktivni čvor.Generišu se naslednici od S prema prvoj alternativi S je koren i inicijalni aktivni čvor. Kazaljka pokazuje na simbol a. aSbS Kazaljka je iza poslednjeg znaka ulaznog niza, a u stablu su ostala još dva znaka, b i S. aSbS aSbS aS aSbS aS c c Vraćamo se do mesta gde je poslednji 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.

  27. Razmatra se druga alternativa. Aktivni čvor je terminal a i jednak je tekućem znaku. Kazaljka se pomiče za jedno mesto. Aktivni čvor je S. Generiše se podstablo iz prve 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. 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 koji poslije bezuspešne prve i druge produkcije prelazi u terminal c. S Kazaljka se pomiče i pokazuje iza poslednjeg znaka. Više nema aktivnih čvorova. Ulazni niz je u jeziku aSbS S c aS Sa aSbS aS c Sa 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 . . .

  28. S  AB A  ab B aba w= ababa Algoritam silazne sintaksne analize ababa Primer a b Premeštanje se sastoji od ispitivanja niza na vrhu liste i utvrđivanja postoji li desna strana produkcije koja može biti izjednačena sa vrhom liste.Ako postoji vrh liste se zamenjuje sa njom. Ako postoji više desnih strana produkcije koje se mogu upotrebiti za redukovanje vrha liste, uz pretpostavku prethodnog uređenja produkcija, biće upotrebljena prva. Ako nije moguća nijedna redukcija sledeći simbol se smešta u listu i ponavlja se postupak.Ako se dosegne kraj ulaznog niza i nije moguća nijedna redukcija, vraća se na poslednje premeštanje gde je redukcija učinjena i pokušava se sa drugom redukcijom. Ulazni niz je u jeziku ako lista sadrži početni simbol i ako je dosegnut kraj niza. A a b a AA a AB S

  29. Principi semantičke analize Značenje ( semantika ) programskog jezika opisuje se neformalno. Proverava da li sintaksno stablo ima semantičkih grešaka. Otkrivaju se greške kao što su: Pristup zabranjenim objektima Nedeklarisane varijable Nekompatibilni operandi Funkcije povezane sa neodgovarajućim argumentima Nepodudaranje tipova c je tipa int int a; char b; ... c = a + b ... int a; int b; ... c = a + b ... Program leksički, sintaksno i semantički ispravan Program leksički, sintaksno ispravan, a semantički neispravan

  30. Zaključci - 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 sistemuizmeđ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.

  31. Hvala na pažnji

More Related