PREVOÐENJE PROGRAMSKIH JEZIKA

Σχετικά έγγραφα
SLIČNOST TROUGLOVA. kažemo da su slične ( sa koeficijentom sličnosti k ) ako postoji transformacija sličnosti koja figuru F prevodi u figuru F


Rijeseni neki zadaci iz poglavlja 4.5

GRANIČNE VREDNOSTI FUNKCIJA zadaci II deo

2.6 Nepravi integrali

= + injekcija. Rješenje 022 Kažemo da funkcija f ima svojstvo injektivnosti ili da je ona injekcija ako vrijedi

4. Relacije. Teorijski uvod

VALJAK. Valjak je geometrijsko telo ograničeno sa dva kruga u paralelnim ravnima i delom cilindrične površi čije su

4. Trigonometrija pravokutnog trokuta

SLUČAJNE PROMENLJIVE-FUNKCIJA RASPODELE

KUPA I ZARUBLJENA KUPA

3.1 Granična vrednost funkcije u tački

FURIJEOVI REDOVI ZADACI ( II

Odred eni integrali. Osnovne osobine odred enog integrala: f(x)dx = 0, f(x)dx = f(x)dx + f(x)dx.

OSNOVE TRIGONOMETRIJE PRAVOKUTNOG TROKUTA

PIRAMIDA I ZARUBLJENA PIRAMIDA. - omotač se sastoji od bočnih strana(najčešće jednakokraki trouglovi), naravno trostrana piramida u omotaču

dužina usmjerena (orijentirana) dužina (zna se koja je točka početna, a koja krajnja) vektor

Matematički osnovi Z transformacije

B I O M A T E M A T I K A

M A T E M A T I K A 1

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

TRIGONOMETRIJSKE FUNKCIJE OŠTROG UGLA

SINUSNA I KOSINUSNA TEOREMA REŠAVANJE TROUGLA

Mate Vijuga: Rijeseni zadaci iz matematike za srednju skolu 2. ARITMETICKI I GEOMETRIJSKI NIZ, RED, BINOMNI POUCAK. a n ti clan aritmetickog niza

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

4 INTEGRALI Neodredeni integral Integriranje supstitucijom Parcijalna integracija Odredeni integral i

NEKE POVRŠI U. Površi koje se najčešće sreću u zadacima su: 1. Elipsoidi. 2. Hiperboloidi. 3. Paraboloidi. 4. Konusne površi. 5. Cilindrične površi

ТЕМПЕРАТУРА СВЕЖЕГ БЕТОНА

Elektrostatika. 1. zadatak. Uvodni pojmovi. Rješenje zadatka. Za pločasti kondenzator vrijedi:

Općenito, iznos normalne deformacije u smjeru normale n dan je izrazom:

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

Rešenja A/2 kolokvijuma iz predmeta MERNI SISTEMI U TELEKOMUNIKACIJAMA 10. januar 2006.

1 Ekstremi funkcija više varijabli

Ispitivanje toka i skiciranje grafika funkcija

ČETVOROUGAO. β 1. β B. Četvorougao je konveksan ako duž koja spaja bilo koje dve tačke unutrašnje oblasti ostaje unutar četvorougla.

Istosmjerni krugovi. 1. zadatak. Na trošilu će se trošiti maksimalna snaga u slučaju kada je otpor čitavog trošila jednak unutrašnjem otporu izvora.

Integracija funkcija više promenljivih

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

Mera, integral i izvod

Teorijske osnove informatike 1

DISKRETNA MATEMATIKA - PREDAVANJE 7 - Jovanka Pantović

ELEKTROTEHNIČKI ODJEL

TROUGAO. - Stranice a,b,c ( po dogovoru stranice se obeležavaju nasuprot temenu, npr naspram temena A je stranica a, itd) 1, β

Elementi spektralne teorije matrica

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

c = α a + β b, [sustav rješavamo metodom suprotnih koeficijenata]

α =. n n n Vježba 001 Koliko stranica ima pravilni mnogokut ako jedan njegov unutarnji kut iznosi 144? Rezultat: n = 10.

Osnove elektrotehnike I parcijalni ispit VARIJANTA A. Profesorov prvi postulat: Što se ne može pročitati, ne može se ni ocijeniti.

Specijalna vrsta nepravih integrala jesu oni koji sadrze potencije ili geometrijski red u podintegralnoj funkciji.

SISTEMI NELINEARNIH JEDNAČINA

Zavrxni ispit iz Matematiqke analize 1

DIPLOMSKI RAD. Nesvojstveni integral. Univerzitet u Kragujevcu Prirodno matematički fakultet. Kandidat: Marta Milošević 47/00

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

IZVODI ZADACI (I deo)

IZVODI ZADACI (I deo)

Neodreeni integrali. Glava Teorijski uvod

STRUKTURA I SVOJSTVA MATERIJALA METALOGRAFIJA ŽELJEZNIH LEGURA. Prof. dr. sc. Ivica Kladarić

Metode rješavanja izmjeničnih krugova

Izvodi i integrali necelog reda

Matematička analiza 4

SKUPOVI I SKUPOVNE OPERACIJE

Dodatak B. Furijeovi redovi. Posmatrajmo na intervalu [ l, neku funkciju f (x)

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,

Rešavanje diferencijalnih jednačina pomoću redova. Specijalne funkcije. Ortogonalne funkcije

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

III VEŽBA: FURIJEOVI REDOVI

Računarska grafika. Rasterizacija linije

MEHANIKA FLUIDA. Pritisak tečnosti na ravne površi

Dru{tvo matemati~ara Srbije. Republi~ki seminar 2011, Novi Sad, Srbija. Pripremawe u~enika osnovnih {kola za takmi~ewa iz matematike

Priprema za ispit - RJEŠENJA

( ) p a. poklopac. Rješenje:

Diskretne matematièke strukture

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

PID: Domen P je glavnoidealski [PID] akko svaki ideal u P je glavni (generisan jednim elementom; oblika ap := {ab b P }, za neko a P ).

Matematika za ekonomiste Časlav Pejdić, (064)

Matematika 2. Boris Širola

5. Karakteristične funkcije

Osnovne teoreme diferencijalnog računa

M A T E M A T I Č K A A N A L I Z A

ZAVRŠNI ISPIT NA KRAJU OSNOVNOG OBRAZOVANJA I ODGOJA. školska 2013./2014. godina TEST MATEMATIKA UPUTE ZA RAD

1 Odredeni integral. Integrabilnost ograničene funkcije

7 Odreženi integrali. Neka je funkcija f(x) definisana na intervalu [a, b]. Ako ovaj interval podelimo

APROKSIMACIJA FUNKCIJA

Integralni raqun. F (x) = f(x)

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

DRŽAVNO NATJECANJE IZ LOGIKE

SOPSTVENE VREDNOSTI I SOPSTVENI VEKTORI LINEARNOG OPERATORA I KVADRATNE MATRICE

Sistemi veštačke inteligencije primer 1

U n i v e r z i t e t u B e o g r a d u. Matematički fakultet ITOOV STOHASTIČKI INTEGRAL I PRIMENE

41. Jednačine koje se svode na kvadratne

Martin Jovanović UVOD U RAČUNARSTVO. - skripta za računske vežbe - prednacrt - nezvanična kompletna verzija -

d(o,1) = i = 1. Uvođenjem koordinatizacije operacije s vektorima sveli smo na operacije s brojevima: ako je [ ] [ ]

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

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

KONSTRUKTIVNI ZADACI (TROUGAO) Rešavanje konstruktivnih zadataka je jedna od najtežih oblasti koja vas čeka ove godine.

18. listopada listopada / 13

II. ANALITIČKA GEOMETRIJA PROSTORA

Skup svih mogućih ishoda datog opita, odnosno skup svih elementarnih događaja se najčešće obeležava sa E. = {,,,... }

Odredjeni integral je granicna vrijednost sume beskonacnog broja clanova a svaki clan tezi k nuli i oznacava se sa : f x dx f x f x f x f x b a f

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

Transcript:

PREVOÐENJE PROGRAMSKIH JEZIKA Nikol Ajzenhmer Anj Bukurov

Prevođenje progrmskih jezik Beleške s predvnj NIKOLA AJZENHAMER ANJA BUKUROV Mtemtički fkultet, Univerzitet u Beogrdu 17. novemr 2016.

Sdržj 1 Uvod 7 1.1 Proces kompilirnj.............................. 7 1.1.1 Etp nlize............................. 9 1.1.2 Etp sinteze.............................. 9 1.1.3 Pitnj i zdci............................ 10 1.2 Osnovno o fzm nlize.......................... 10 1.2.1 Osnovno o leksičkoj nlizi..................... 10 1.2.2 Osnovno o sintksičkoj nlizi................... 12 1.2.3 Osnovno o semntičkoj nlizi................... 14 1.2.4 Pitnj i zdci............................ 15 2 Elementi teorije formlnih jezik 17 2.1 Azuk i jezici................................. 17 2.1.1 Pitnj i zdci............................ 20 2.2 Opercije nd rečim i jezicim....................... 20 2.2.1 Pitnj i zdci............................ 25 2.3 Regulrni jezici................................ 26 2.3.1 Prioritet opercij nd jezicim................... 28 2.3.2 Proširenj regulrnih izrz i jezik................. 29 2.3.3 Pitnj i zdci............................ 29 2.4 Končni utomti............................... 30 2.4.1 Definicij (N)KA............................ 33 2.4.2 Uslovi z deterministički končni utomt (DKA)........ 35 2.4.3 Jezik utomt............................. 36 2.5 Klinijev teorem............................... 37 2.5.1 Tompsonov lgoritm........................ 37 2.5.2 Algoritm oslođnj od ε-prelz................ 42 2.5.3 Gluškovljev lgoritm......................... 45 2.5.4 Algoritm konstrukcije podskupov................ 46 5

6 SADRŽAJ 2.5.5 Murov lgoritm........................... 53 2.5.6 Metod elimincije stnj....................... 62 2.5.7 Pitnj i zdci............................ 65 2.6 Određivnje presek jezik.......................... 66 3 Kontekstnosloodne grmtike 71 3.1 Definicij KS grmtike............................ 72 3.2 Drvo izvođenj................................. 74 3.3 Višeznčne grmtike............................. 79 3.4 Trnsformcije grmtik.......................... 83 3.4.1 Ćišćenje suvišnih simol...................... 83 3.4.2 Oslođnje od jednostrukih prvil................ 85 3.4.3 Oslođnje od leve rekurzije.................... 86 3.4.4 Oslođnje od ε prvil....................... 87 3.5 Potisni utomti (Push-down utomt).................. 90 3.5.1 Definicij (N)PA............................ 91 3.5.2 Anliz nniže (Predictive prcing)................. 95 3.5.3 Anliz nviše............................. 106 4 Semntičk nliz 115 4.1 Atriutske grmtike............................. 115 Primeri ispitnih rokov 123 Jnur 2016. godine................................. 123 Ferur 2016. godine................................ 124 Litertur 125

Poglvlje 1 Uvod Uvodno poglvlje ove skripte posvećeno je upoznvnjem čitoc s osnovnim pojmovim i procesim pri prevođenju progrmskih jezik. Čitlc im priliku d se upozn s ovim procesom iz njšireg posmtrnog ugl, kko i se u dljim poglvljim t znnj produljivl. N početku poglvlj prikzujemo proces kompilirnj kroz njegove fze i potfze, ztim se nešto detljnije upoznjemo s svkom od potfz. N sdržj u uvodnom poglvlju može se posmtrti ko n sdržj celokupnog kurs Prevođenje progrmskih jezik koji se izvodi ko ovezn kurs n trećoj godini osnovnih studij smer Informtik n Mtemtičkom fkultetu. 1.1 Proces kompilirnj Ovj odeljk zpočećemo jednom od mnogorojnih definicij pojm progrmskog jezik. Definicij 1.1 Progrmski jezik je veštčki jezik z opis konstrukcij (pisnje instrukcij) koje mogu iti prevedene u mšinski jezik i izvršene od strne rčunr. 1 Z svki progrm koji želimo d konstruišemo n nekom unpred odrnom progrmskom jeziku, mormo imti sčuvn izvorni kôd n disku u vidu dtoteke. Izvorni kôd čini uređeni multiskup instrukcij koje su predviđene zdtim progrmskim jezikom. Međutim, npisni izvorni kôd se ne može izvršiti n rčunru, već g je neop- 1 Ov definicij je predviđen od strne Americn Heritge Dictionry (AHD). Originlnu definiciju možete pogledti n zvničnoj internet prezentciji AHD. 7

8 1.1. PROCES KOMPILIRANJA hodno prevesti u tzv. izvršni kôd 2. Izvršni kôd čini uređeni multiskup instrukcij n mšinskom jeziku, koji omogućv izvršvnje progrm n konkretnom rčunru. Definicij 1.2 Progrmski prevodilc ili jezički procesor je progrm koji čit izvorni kôd, orđuje g i prevodi u izvršni kôd, čime se omogućv izvršvnje progrm. Proces prevođenj izvornog kôd u izvršni kôd poznt je pod nzivom kompilirnje 3. Svi progrmski prevodioci mogu se podeliti u dve grupe: 1. Kompiltori su progrmski prevodioci kod kojih je jsn rzlik između fze prevođenj i fze izvršvnj. Izvorni kôd se prvo prevede u izvršni kôd, ztim se doijeni kôd izvršv učitvnjem u memoriju i izvršvnjem instrukcij. Kompiltori se njčešće koriste u progrmskim jezicim ko što su C, Jv 4 i C++. 2. Interprettori su progrmski prevodioci kod kojih su fz prevođenj i fz izvršvnj isprepletne, i ne postoji mterijlizcij prevođenj, tj. ne postoji izvršni kôd koji se učitv u memoriju, već se uvek čit ceo izvorni kôd (ili međukôd, zvisno od jezik). Jsno je d je ovkv nčin izvršvnj progrm sporiji, li doprinosi oljoj dijgnostici prolem, uprvo zto što izvršv progrm nredu-po-nredu. Interprettori se njčešće koriste u progrmskim jezicim ko što su JvScript, Hskell, Prolog. Sve fze kompilirnj mogu se podeliti u dve etpe: 1. Etp nlize, koju vrši prednji deo prevodioc, i 2. Etp sinteze, koju vrši zdnji deo prevodioc. Iko su sve fze kompilirnj odvojene n nvedene dve etpe, one ipk nisu u potpunosti izolovne. Npomenimo d nije nepoznto korišćenje prednjeg del s nekim delom zdnjeg del prevodioc (n primer, nlizirnje C kôd se vrši n isti nčin ez ozir n kojoj se pltformi kôd kompilir, li se koriste rzličiti zdnji delovi z Linux, Windows, i ostle opertivne sisteme) ili zdnjeg del s nekim delom prednjeg del prevodioc (n primer,.net dozvoljv pisnje kôd u C#, Visul Bsic i Visul C++ progrmskim jezicim, i z njih im rzličite prednje delove, li svi oni se 2 Pri ovom procesu moguć je nstnk tzv. međukôd, odnosno, jezik između izvornog i izvršnog (ciljnog) jezik. 3 Termini engleskog jezik compiltion i compiler potiču iz ltinskog jezik, te zog tog u ovoj skripti koristimo termine kompilirnje (eventulno, kompilcij) i kompiltor. Nsuprot ovome, u svkodnevnoj upotrei su termini kompjlirnje i kompjler uveliko postli dominntniji. 4 Preciznije, Jv progrmski prevodilc kominuje kompilirnje i interpretirnje. Jv izvorni kôd se prvo kompilir u međukôd koji se nziv jtkôd, ztim se jtkôd interpretir od strne virtulne mšine. Prednost ovog se ogled u tome d jtkôd kompilirn n jednoj mšini može iti interpretirn n nekoj drugoj (koj, nrvno, podržv izvršvnje Jv izvršnih progrm).

GLAVA 1. UVOD 9 pstrhuju n zjednički međukôd koji se dlje sintetiše n isti nčin). Tkođe, jedno pitnje koje neko može postviti jeste u kom jeziku progrmirmo kompiltor. Tre znti d efiksnost kompiltor ne utiče n kompilirnje. Ne mor d znči d će jedn kompiltor kompilirti rži progrm ukoliko je utrošio mnje vremen z proces kompilirnj od nekog drugog kompiltor. Što je kompiltor olje konstruisn, to on mor više posl d urdi (tj. više vremen d potroši) prilikom kompilirnj, li su zto progrmi koje doijmo rži. Dkle, to ne znči d je neophodno d kompiltore pišemo u rzim progrmskim jezicim, već d ih pžljivo konstruišemo. U ovoj skripti, fokus je stvljen n etpu nlize, dok je etp sinteze nešto čime se vi proces konstrukcije kompiltor. Zog tog ćemo ortiti više pžnje n etpu nlize, ztim ćemo ukrtko nvešti osnovne delove etpe sinteze. 1.1.1 Etp nlize Etp nlize je, ko što smo npomenuli, prv etp koju vrši tzv. prednji deo prevodioc. On se vi nlizom, odnosno, velike delove kôd rzij n mnje frgmente. Prednji deo prevodioc je vezn z ulzni jezik, tj. viši progrmski jezik. Ono što krkteriše etpu nlize jeste što je ist i z kompiltore i z interprettore. On je veom doro opisn u teoriji. Deli se n tri fze: 1. Leksičk nliz, koju vrši leksički nliztor, 2. Sintksičk nliz, koju vrši sintksički nliztor, i 3. Semntičk nliz, koju vrši semntički nliztor. 1.1.2 Etp sinteze Etp sinteze je drug etp koju vrši tzv. zdnji deo prevodioc. On se vi sintezom, odnosno, od mlih frgment prvi jedinstveni izlz. Kod zdnjeg del je itn izlzni jezik, koji je njčešće mšinski jezik ili semler, li je itn i rhitektur, okruženje pod kojim se vrši sintez zog optimizcije, itd. Ov etp se temelji n specifičnim, često d hoc rešenjim koj zvise od konkretne mšine. Deli se n tri fze: 1. Generisnje međukôd 5, 2. Optimizcij međukôd, u kojoj se sprovode rzličite, često komplikovne trnsformcije, i 5 Primeri međukôdov koji se doijju u ovoj fzi su p-kôd (engl. p-code) progrmskog jezik Pscl i već pomenuti jtkôd (engl. ytecode) progrmskog jezik Jv.

10 1.2. OSNOVNO O FAZAMA ANALIZE 3. Generisnje izvršnog kôd. Nekd se čitv ov etp nziv Generisnje kôd. 1.1.3 Pitnj i zdci Pitnje 1.1.3.1. Št je progrmski jezik? Pitnje 1.1.3.2. Št je izvorni kôd, št izvršni kôd? Pitnje 1.1.3.3. Št je neophodno urditi d ismo npisni kôd mogli pokrenuti u vidu progrm n rčunru? Pitnje 1.1.3.4. Št je progrmski prevodilc, št kompilirnje? Pitnje 1.1.3.5. Koje vrste progrmskih prevodilc postoje? Koje su sličnosti, koje su rzlike između tih vrst? Koje su prednosti korišćenj jednih u odnosu n druge? Pitnje 1.1.3.6. Nvesti etpe kompilirnj, njihove fze, i krtko ih ojsniti. Pitnje 1.1.3.7. D li su fze kompilirnj međusono izolovne ili ne? Ojsniti i dti (kontr)primer. Pitnje 1.1.3.8. Št je međukôd? Nvesti primer međukôd. 1.2 Osnovno o fzm nlize Zpočnimo odeljk o etpi nlize sledećim primerom. Primer 1.2.1 Pretpostvimo d immo nredni deo progrm (frgment kôd) npisnog u progrmskom jeziku C: x = 2*y1 + 3; Zdtk nm je d predstvimo št se dešv u svkoj od fz nlize pri nlizirnju dtog frgment kôd. 1.2.1 Osnovno o leksičkoj nlizi Definicij 1.3 Deo kompiltor koji ovlj zdtk leksičke nlize nziv se leksički nliztor ili lekser. Leksikologij prirodnih jezik je deo nuke o jeziku koji proučv reči u njihovom svojstvu osnovnih jedinic imenovnj. Slično tome, leksički nliztor čit krkter po krkter iz ulzne struje krkter i identifikuje celine koje nzivmo lekseme.

GLAVA 1. UVOD 11 Definicij 1.4 Leksem je njmnj smostln jedinic leksičkog sistem. Primer 1.2.2 Lekseme koje možemo izdvojiti iz primer 1.2.1 su sledeće: x = 2 * y1 + 3 ; Kd se identifikuju, svkoj od leksem se pridružuje odgovrjuć leksičk ktegorij, ko i jedinstven odgovrjuć oznk ktegorije koj je pridružen leksemi. T oznk nziv se token. Primeri token su identifiktor, opertor, seprtor, rzni literli (n primer, rojevni literli) itd, što se može zpisti: typedef enum { ID, OP, SEP, NUM,... } token; Blnko krkteri (rzmci, tultori i novi red) se njčešće odcuju od strne leksičkog nliztor. Primer 1.2.3 Iz primer 1.2.1 doijmo d su: lekseme x i y1 identifiktori (ID), lekseme =, *, i + opertori (OP), lekseme 2 i 3 rojevni literli (NUM), i d je leksem ; seprtor (SEP). Time od početnog (ulznog) izrz doijmo (izlzni) izrz x = 2*y1 + 3; ID OP NUM OP ID OP NUM SEP Npomenimo d iko leksički nliztor rt s tokenim, on ne vodi rčun o tome d li je, n primer, neki identifiktor promenljiv, funkcij, struktur, polje, i slično. U nrednom tekstu videćemo d je z to zslužn semntički nliztor.

12 1.2. OSNOVNO O FAZAMA ANALIZE Osim nvedenih opercij, leksički nliztor održv i generiše tlicu simol u kojoj se nlzi spisk svih identifiktor n koje se nilzilo prilikom identifikcije. Definicij 1.5 Tlic simol je struktur podtk u kojoj se, tokom etpe nlize, prikupljju informcije o tipu, opsegu i memorijskoj lokciji identifiktor. Ov tel, koj se inicijlizuje tokom leksičke nlize, dopunjv se i koristi i u ostlim fzm. Još jedn poso leksičkog nliztor jeste d pmti rojeve linij izvornog kôd. Iko jednostvn, fz leksičke nlize je veom spor. Ovo potiče otud što kompiltor jedino u ovoj fzi neposredno rdi nd krkterskim niskm izvornog progrm (dok se ostle fze odvijju nd tokenim). 1.2.2 Osnovno o sintksičkoj nlizi Slično ko što sintks prirodnog jezik proučv prvil koj određuju kko se reči kominuju u rečenice u dtom jeziku, sintks progrmskih jezik predstvlj niz prvil koj definišu kominciju simol z koje se smtr d dju isprvno struktuirn frgment u trženom progrmskom jeziku. Dkle, u sintksičkoj nlizi se proverv d li su tokenizovne lekseme (koje se doijju iz fze leksičke nlize) sklopljene prteći grmtiku progrmskog jezik. U ovoj fzi, lekseme se postupno grupišu u grmtičke jedinice ili ktegorije. Definicij 1.6 Deo kompiltor koji ovlj zdtk sintksičke nlize nziv se sintksički nliztor ili prser. Primer 1.2.4 Ukoliko ismo smo mlo permutovli nredu iz primer 1.2.1, tj. ko posmtrmo frgment 2*y1 = x + 3; doili ismo sintksički neisprvnu nredu jer vrednosni izrz 2*y1 nije l-vlue u progrmskom jeziku C, tj. ne možemo joj dodeliti vrednost nekog drugog izrz 6. U ovom slučju, sintksičk nliz ne i uspel, i grešk i il prijvljen.

GLAVA 1. UVOD 13 Dkle, ulz z sintksički nliztor predstvljju tokeni, i on ih proverv. Rezultt rd sintksičkog nliztor je sintksičko drvo (engl. prse tree). Primer 1.2.5 Sintksičko drvo koje se doij ko rezultt sintksičke nlize frgment kôd iz primer 1.2.1 je: = x + * 3 2 y1 Pogledjmo još jedn, ne znčjno komplikovniji primer sintksičkog drvet. Primer 1.2.6 Posmtrjmo još jedn frgment kôd npisn u progrmskom jeziku C: if(x > 3) x = x + 1; Sintksičko drvo doijeno sintksičkom nlizom ovog frgment izgled: if > = x 3 x + x 1 6 Podsetimo se d su jedino promenljive, elementi niz, i memorijske lokcije l-vlue u progrmskom jeziku C.

14 1.2. OSNOVNO O FAZAMA ANALIZE 1.2.3 Osnovno o semntičkoj nlizi Z rzliku od sintkse koj izučv strukture onog čime se nešto izržv, semntik prirodnih jezik izučv znčenje reči. Definicij 1.7 Deo kompiltor koji ovlj zdtk semntičke nlize nziv se semntički nliztor. Semntički nliztor proverv tipove i deklrcije u sintksičkom drvetu doijenog iz prethodne fze, tkođe vrši i implicitnu konverziju kod opertor. U slučju interprettor vrši se i izrčunvnje vrednosti. Primer 1.2.7 Posmtrjmo sintksičko drvo iz primer 1.2.5. Ukoliko smo promenljivu identifiktor y1 deklrisli tipom doule, ond će semntički nliztor implicitno konvertovti celi roj 2 u roj u pokretnom zrezu 2.0, d i se mogle srti odgovrjuće vrednosti istog tip. Npomenimo i d postoje sintksički isprvni, semntički neisprvni frgmenti. Ilustrujmo ovj fenomen sledećim primerom. Primer 1.2.8 Posmtrjmo sledeći izvorni kôd primer.c npisn u progrmskom jeziku C: #include <stdio.h> int min(){ doule x = 3.7; chr* nisk; doule y = x * nisk; printf("%lf", y); } return 0; Iko sintksički korektn, frgment sdrži semntičku grešku u kojoj se roj u pokretnom zrezu (doule) x množi niskom (chr*) nisk, što dovodi do tog d kompiltor prijvi grešku. N primer, kompilirnjem gcc primer.c kompiltorom gcc možemo očekivti grešku sličnu sledećoj:

GLAVA 1. UVOD 15 primer.c: In function 'min': primer.c:7:15: error: invlid opernds to inry * (hve 'doule' nd 'chr *') doule y = x * nisk; ^ 1.2.4 Pitnj i zdci Pitnje 1.2.4.1. Št je lekser, št prser? Pitnje 1.2.4.2. Koj je ulog leksičkog nliztor? Pitnje 1.2.4.3. Št je leksem, št token? Pitnje 1.2.4.4. Št je tlic simol? U kojim fzm nlize se on koristi? Pitnje 1.2.4.5. Koj je ulog sintksičkog nliztor i št je rezultt njegovog rd? Pitnje 1.2.4.6. Koj je ulog semntičkog nliztor? Pitnje 1.2.4.7. D li su svi sintksički isprvni frgmenti ujedno i semntički isprvni? D li su svi semntički isprvni frgmenti ujedno i sintksički isprvni? Pitnje 1.2.4.8. Koj od fz nlize je njsporij? Ojsniti. Pitnje 1.2.4.9. U kojoj fzi nlize će iti prijvljen grešk prilikom nlizirnj nrednih frgment kôd progrmskog jezik C, i ojsniti gde se jvil grešk: int min(){ doule pi = 3.14; flot f = 10; d = 0; } return 0; int x = 0, y = 1, z = x * y - 12x0; chr zdrvo[] = "zdrvo", ni$k[] = "ni$k"; size_t duzin_z = strlen(zdrvo), duzin_n = strlen(ni$k); (pod uslovom d je dostupn funkcij strlen) int [10]; = 100; int f(int n){ if(n == 0) return 1 else return return n*f(n-1); }

16 1.2. OSNOVNO O FAZAMA ANALIZE Zdtk 1.2.4.1. Izdvojiti lekseme iz nrednih frgment kôd progrmskog jezik C, i z svki frgment nvesti koliko rzličitih token sdrži: int x = 3; doule = 1.4, = 3; for(i=0; i<n; i++) {} int min(){ return 0; } int nzd(int, int ){ if( == 0) return ; else return nzd(, % ); } Zdtk 1.2.4.2. Z svki frgment kôd iz zdtk 1.2.4.1, prikzti rezultt rd sintksičkog nliztor.

Poglvlje 2 Elementi teorije formlnih jezik Teorij formlnih jezik se vi teorijskim prolemim i rešenjim veznim z leksičku i sintksičku nlizu. U ovom poglvlju ćemo prvo uvesti elementrne pojmove u teoriji, poput zuke, reči, jezik, ztim ćemo se upoznti s dv nčin opisivnj jezik (pomoću regulrnih izrz i kontekstnosloodnih grmtik) i opercijm nd rečim i jezicim. Svi ovi pojmovi će nm služiti d formlno uvedemo pojm regulrnog jezik, sgledmo njihov proširenj i njihov znčj u prktičnoj primeni. Regulrnim jezicim ćemo posvetiti njviše pžnje u ovom poglvlju. D ismo rzumeli kko funkcioniše leksičk nliz kroz regulrne jezike, uvodimo pojm končnog utomt, njegove vrijnte koje se odnose n determinizm, ko i jezik utomt. Znčj ovog poglvlj ogled se u Klinijevoj teoremi, čiji se dokz sstoji od sekvencijlne primene nekoliko lgoritm koji će iti detljno opisni i ojšnjeni kroz primere. Poglvlje zvršvmo ojšnjvnjem kko se određuje presek dv jezik i znčj ovog postupk z određivnje ostlih opercij s jezicim, ko i prikzivnjem grnice moći regulrnih jezik. 2.1 Azuk i jezici Ovo poglvlje zpočećemo dvm pitnjim: 1. D li u progrmskom jeziku C može postojti promenljiv imen re? 2. D li u progrmskom jeziku Jv može postojti promenljiv imen re? Čitocu je verovtno poznto d je odgovor n prvo pitnje ne", n drugo d". Ko što vidimo, ne postoji jedinstven skup reči koji možemo d pridružimo domenu imen promenljih u svim progrmskim jezicim. Neki progrmski jezici podržvju 17

18 2.1. AZBUKA I JEZICI šire tele krkter (poput Unicode, ili nekih njegovih podskupov, ko što je slučj s progrmskim jezikom Jv), dok neke imju smo osnovni skup krkter (njčešće ASCII, ko što je slučj s progrmskim jezikom C). Zog ovog rzlog, n početku ovog poglvlj ćemo se prvo upoznti s osnovnim pojmovim koji će nm iti vžni z dlji rd. Definicij 2.1 Azuk ili lfet, u oznci Σ, skup je simol koje nzivmo krkteri. Po konvenciji, elemente zuke oeležvmo simolim,, c itd. Kko skupovi mogu iti končni i eskončni, tko i zuke mogu iti končne i eskončne. Međutim, pošto eskončne zuke ne možemo d predstvimo u rčunru, koncentrisćemo se smo n končne zuke, te ćemo u dljem tekstu pod pojmom zuk misliti n končnu zuku. Definicij 2.2 Končn niz 1, 2,..., n Σ nzivmo reč, nisk ili string zuke Σ. Przn reč, u oznci ε, reč je dužine nul. Po konvenciji, reči oeležvmo simolim x, y, z, itd. Primer 2.1.1 Nek je zdt zuk Σ = {, }. Neke od reči zuke Σ su x =, y = i z =. Definicij 2.3 Opšti jezik zuke Σ, u oznci Σ, skup je svih reči nd zukom Σ. Primetimo d je opšti jezik neke zuke eskončn skup, osim u trivijlnom slučju, kd je jedini element zuke przn reč. Primer 2.1.2 Nek je zdt zuk Σ = {, }. Opšti jezik zuke Σ je Σ = {ε,,,,,,,,,,,,,...}. Definicij 2.4 Jezik nd zukom Σ je ilo koji skup L Σ.

GLAVA 2. ELEMENTI TEORIJE FORMALNIH JEZIKA 19 Dkle, jezik je proizvoljn podskup reči opšteg jezik neke zuke. Zog tog je jsno d postoje končni i eskončni jezici. Jezik možemo zdti n dv nčin: 1. nrjnjem njegovih element, i 2. pomoću skupovnih mtemtičkih definicij. Primer 2.1.3 Nek je dt zuk Σ = {, }. Nek su L 1, L 2 Σ jezici z koje vže d L 1 sdrži sve reči koje počinju nenegtivnim rojem slov i zvršvju se slovom, d L 2 sdrži sve reči koje počinju pozitivnim rojem slov i zvršvju se istim tim rojem slov. Jezike L 1 i L 2 možemo zdti nrjnjem n sledeći nčin: L 1 = {,,,,,...}, L 2 = {,,,...}, ili pomoću skupovnih mtemtičkih definicij n sledeći nčin: Jezik možemo opisti pomoću klse: 1. regulrnih jezik (RJ), ili L 1 = { k k 0}, L 2 = { n n n > 0}. 2. kontekstnosloodnih grmtik (KSG). Činjenic je d nijedn kls nije dovoljno jk d opiše sve jezike. Ono što je znimljivo jeste d je primen klse KSG šir od klse RJ. Međutim, kls RJ može d opiše sve jezike itne z leksičku nlizu, te ćemo zog tog tu klsu i izučvti ndlje u tekstu. S druge strne, kls KSG pokriv sintksičku nlizu, p ćemo se njom viti u nrednom poglvlju. Još jedn znimljivost jeste t d, ko pogledmo jezike iz primer 2.1.3, jezik L 2 ne može d se opiše pomoću klse RJ. Nime, ispostvlj se d vži sledeće prvilo. Ukoliko se trži uprivnje dv entitet (u posmtrnom primeru immo d reči jezik L 2 imju jednk roj krkter i ), kls RJ iv presl d zdovolji tkv uslov. Rzmotrimo nredni primer. Primer 2.1.4 D li je moguće iskoristiti klsu RJ z izrze poput (2 + 5) (3 9/3)?

20 2.2. OPERACIJE NAD REČIMA I JEZICIMA N prvi pogled se ne čini d postoji uprivnje. Međutim, pžljivijim posmtrnjem uvidićemo d postoji uprivnje zgrd. To nm dje odgovor d kls RJ nije dovoljno dor z opisivnje ritmetičkih izrz. Ovim smo postvili glvni prolem kojim ćemo se viti u nrednom tekstu, to je prolem pripdnosti reči jeziku. 2.1.1 Pitnj i zdci Pitnje 2.1.1.1. Št je zuk? Št je reč? Pitnje 2.1.1.2. Št je opšti jezik neke zuke? Št je jezik? Pitnje 2.1.1.3. N koje nčine možemo zdti jezik, n koje nčine g možemo opisti? Pitnje 2.1.1.4. N št se odnose skrćenice RJ i KSG? Koje su njihove sličnosti, koje su rzlike? 2.2 Opercije nd rečim i jezicim U ovom odeljku ćemo se upoznti s opercijm nd rečim i jezicim. Ogrničićemo se n jednu operciju nd rečim i devet opercij nd jezicim. Cilj ovog odeljk jeste d uvedemo neophodne pojmove z definisnje pojmov regulrni jezik i regulrni izrz. Definicij 2.5 Nek su dte dve reči x i y. Opercij spjnje (dopisivnje, konktencij) reči y n reč x, u oznci x y, predstvlj operciju: x, y x y = xy. Jednostvnije rečeno, spjnjem dve reči doijmo jednu reč tko što nlepimo" početk druge n krj prve reči (i, eventulno, pišemo znk između njih). Primer 2.2.1 Nek je x = ut o, y = put. Td je x y = ut oput (odnosno, ut o put ). Opercij spjnje je primer inrne opercije. Ispostvlj se d je on socijtivn (ovu osoinu nije teško dokzti). Kko se ispostvlj d z svku reč x proizvoljnog opšteg jezik Σ vži i ε x = x ε = x,

GLAVA 2. ELEMENTI TEORIJE FORMALNIH JEZIKA 21 to možemo zključiti d je struktur (Σ,, ε) jedn monoid. D li je t struktur možd i grup? Lko se vidi d vži ( x, x 1 Σ \{ε}) : x x 1 ε x 1 x ε, te zključujemo d prethodn struktur ne može iti grup. Međutim, to što nije grup, ne znči d nije komuttivn monoid. Ipk, ukoliko pogledmo primer 2.2.1, vidimo d vži x y = ut o put put ut o = y x, te smo dli jedn kontrprimer koji dokzuje d pomenut struktur nije komuttivn monoid (u opštem slučju). Npomenimo d postoje određeni potreni i dovoljni uslovi z komuttivnost ovog monoid koji se mogu pronći u [1]. Pređimo sd n opercije nd jezicim. Nek su L 1 i L 2 dv jezik proizvoljne zuke Σ. S ozirom d je jsno d su jezici skupovi element (koje nzivmo rečim), to z njih vže opšte opercije nd skupovim: Definicij 2.6 Presek jezik L 1 i L 2, u oznci L 1 L 2, skup (jezik) je svih element koji se nlze u jeziku L 1 i L 2, tj. L 1 L 2 df = {x x L 1 x L 2 }. Definicij 2.7 Unij jezik L 1 i L 2, u oznci L 1 L 2, skup (jezik) je svih element koji se nlze u jeziku L 1 ili L 2, tj. L 1 L 2 df = {x x L 1 x L 2 }. Definicij 2.8 Rzlik jezik L 1 i L 2, u oznci L 1 \L 2, skup (jezik) je svih element koji se nlze u jeziku L 1 i ne nlze se u jeziku L 2, tj. L 1 \L 2 df = {x x L 1 x L 2 }. Definicij 2.9 Komplement jezik L 1, u oznci L 1 c, skup (jezik) je svih element koji se ne nlze u jeziku L 1, tj. df = {x x Σ \L 1 }. L c 1

22 2.2. OPERACIJE NAD REČIMA I JEZICIMA Definicij 2.10 Dekrtov proizvod jezik L 1 i L 2, u oznci L 1 L 2, skup (jezik) je svih uređenih prov tkvih d se prv koordint nlzi u jeziku L 1 i drug koordint nlzi u L 2, tj. L 1 L 2 df = {(x, y) x L 1 y L 2 }.

GLAVA 2. ELEMENTI TEORIJE FORMALNIH JEZIKA 23 Primer 2.2.2 Nek su L 1 = {, } i L 2 = {, }. Dekrtov proizvod dtih jezik je L 1 L 2 = {(, ), (, ), (, ), (, )}. Osim stndrdnih opercij nd skupovim, definišemo i operciju proizvod jezik. Definicij 2.11 Proizvod jezik L 1 i L 2, u oznci L 1 L 2, skup (jezik) je svih element olik x y, pri čemu se x nlzi u jeziku L 1 i y u L 2, tj. L 1 L 2 df = {x y x L 1 y L 2 }. Primer 2.2.3 Nek su L 1 = {, } i L 2 = {, }. Proizvod dtih jezik je L 1 L 2 = {,,, }. Bitno je ortiti pžnju n to št je neutrl u odnosu n operciju proizvod jezik. Przn skup ne može iti neutrl jer z svko L Σ, gde je Σ proizvoljn zuk, vži: L = L =, dok skup {ε} jeste trženi neutrl jer vži: Definišimo operciju stepen jezik. Definicij 2.12 L {ε} = {ε} L = L. Stepen jezik L, u oznci L n, definiše se rekurentnom relcijom: L 0 df = {ε}, L n df = L L n 1 = L n 1 L.

24 2.2. OPERACIJE NAD REČIMA I JEZICIMA Primer 2.2.4 Nek je L = {, }. Td je L 3 = {, } 3 = = {,,,,,,, }. Nije teško dokzti d vži L L n 1 = L n 1 L u opštem slučju (dokz se izvodi indukcijom po n), li mi ćemo prikzti dokz z n = 3: L 3 = L L 2 = = L (L L) = = L (L (L {ε})) = = ((L L) L) {ε} = = (L 2 L) {ε} = = L 3 {ε} = = L 3, pri čemu četvrt jednkost sledi iz socijtivnosti opercije spjnj. Primetimo d je u primerim 2.2.3 i 2.2.4 ispunjeno d je krdinlnost proizvod jezik jednk proizvodu krdinlnosti svkog od jezik. D li ovo vži z ilo koji odir jezik? Primer 2.2.5 Nek je L 1 = {, } i L 2 = {, ε}. Td je L 1 L 2 = {, } {, ε} = {,, } (u pitnju je skup, p je element koji je doijen spjnjem ε jednk elementu koji je doijen spjnjem, te se on piše smo jednom u skupu). Dkle, doili smo tri element umesto četiri, te u opštem slučju ne vži d je krdinlnost proizvod jednk proizvodu krdinlnosti. Stepen jezik je veom korisn opercij. Posmtrjmo nredni primer. Primer 2.2.6 Posmtrjmo jezik L 1 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. Primetimo d su L1 2 = {00, 01,..., 09, 10, 11,..., 19,..., 90, 91,..., 99} i L 1 3 = {000, 001,..., 009,..., 990, 991,..., 999}. Ukoliko ismo posmtrli prirodne rojeve ko reči (rzličitih dužin) koje imju cifre z svoje simole, ond ismo mogli reći d je jezik skup prirodnih rojev,

GLAVA 2. ELEMENTI TEORIJE FORMALNIH JEZIKA 25 oznčimo tj jezik L N, zdt s L1 1 L2 1 L3 1... Li 1..., gde je i > n, n N. Međutim, L N ne predstvlj jezik koji odgovr jeziku prirodnih rojev N. Definicij 2.13 Nek je L jezik proizvoljne zuke Σ. Skup L df = i=0 L i nzivmo Klinijevo ztvorenje jezik L, skup L + df = i=1 L i nzivmo pozitivno Klinijevo ztvorenje jezik L. Primetimo d je L = L + {ε}. Primer 2.2.7 Jezik prirodnih rojev (tj. jezik čije reči odgovrju rojevim skup N) definišemo korišćenjem opercij nd jezicim n sledeći nčin. Nek su L 1 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} i L 2 = {1, 2, 3, 4, 5, 6, 7, 8, 9}. Td je N df = L 2 L1 = {1, 2,..., 9, 10, 11,..., 19,...}. Dodtno, df N 0 = L 2 L1 {0} = N {0}. 2.2.1 Pitnj i zdci Pitnje 2.2.1.1. Št je opercij spjnj reči? Št je neutrl z tu operciju? Pitnje 2.2.1.2. Opercij spjnj reči je: () socijtivn, () komuttivn, (c) unrn, (d) inrn. Pitnje 2.2.1.3. Struktur (Σ,, ε) je primer: () monoid, () grupe, (c) prsten, (d) polj. Pitnje 2.2.1.4. D li je struktur (Σ,, ε) komuttivn? Orzložiti.

26 2.3. REGULARNI JEZICI Pitnje 2.2.1.5. Št je: () presek, () unij, (c) rzlik, (d) komplement, (e) Dekrtov proizvod, (f) proizvod, (g) stepen jezik? Pitnje 2.2.1.6. Št je neutrl z operciju proizvod jezik? Pitnje 2.2.1.7. Dokzti ili opovrgnuti tvrđenje ( Σ)( L Σ ) : L L n 1 = L n 1 L. Pitnje 2.2.1.8. Dokzti ili opovrgnuti tvrđenje ( Σ)( L 1, L 2 Σ ) : crd(l 1 L 2 ) = crd(l 1 ) crd(l 2 ), pri čemu opercij crd(l) predstvlj krdinlnost jezik L. Pitnje 2.2.1.9. Št je Klinijevo ztvorenje jezik, št je pozitivno Klinijevo ztvorenje jezik? D li postoji vez između njih? Ako postoji, kko on glsi? Zdtk 2.2.1.1. Konstruisti primer s dv jezik L 1 i L 2 u kojem ne vži d je krdinlnost proizvod jezik jednk proizvodu krdinlnosti jezik (rzličit od primer 2.2.5), ztim konstruisti primer koji ispunjv isti uslov, li u kojem vži d nijedn skup ne sdrži ε. Zdtk 2.2.1.2. Koristeći opercije nd jezicim definisti jezik kojim se opisuju stndrdne registrcione tlice. 2.3 Regulrni jezici Iko postoji veliki roj opercij nd jezicim, pokzuje se d se sve opercije mogu svesti n tčno tri opercije, to su: unij, proizvod i Klinijevo ztvorenje (tj. opercije,, i ). N primer, L + = L L. Sd se postvlj sledeće pitnje: Ukoliko su nm ove tri opercije dovoljne, od kojih jezik tre krenuti d i se doili ostli jezici? Jsno nm je d možemo jezik L 2 rščlniti n sledeći nčin: L 2 = {1} {2}... {9}, tj. n skupove čiji je element smo jedn cifr. Slično, kko vži {} = {} {}, to sve jezike koje imju reči čiji su krkteri slov, možemo rščlniti n skupove čiji je element smo jedno slovo. Kko przn reč nije slovo, to je jsno d će nm iti potren i skup {ε}. Ovom idejom dolzimo do definicije regulrnih jezik. Nek je Σ proizvoljn zuk. Definicij pojm regulrni jezik glsi: 1. Ako Σ, ond je jezik {} regulrni jezik. 2. Jezik {ε} je regulrni jezik. 3. Jezik je regulrni jezik. 4. Ako su L 1, L 2 Σ regulrni jezici, ond je i jezik L 1 L 2 regulrn jezik. 5. Ako su L 1, L 2 Σ regulrni jezici, ond je i jezik L 1 L 2 regulrn jezik.

GLAVA 2. ELEMENTI TEORIJE FORMALNIH JEZIKA 27 6. Ako je L Σ regulrn jezik, ond je i jezik L regulrn jezik. Primetimo d je ov definicij rekurzivn. Prv tri iskz predstvljju zu rekurzije, preostl tri iskz njen kork. Ov definicij se krće (i neformlno) može opisti sledećom rečenicom: Jezici su regulrni ko su trivijlni ili ko se mogu doiti od jednostvnijih regulrnih jezik primenom opercij,, i ". Primer 2.3.1 Ovom definicijom smo pokzli d je jezik N 0 regulrn jezik. Možemo g zpisti n sledeći nčin: N 0 df = ({1} {2}... {9}) ({0} {1}... {9}) } {{ } } {{ } {0}. L 2 L 1 Sd kd immo definiciju regulrnog jezik, možemo definisti regulrni izrz. Nek je Σ proizvoljn zuk. Definicij pojm regulrni izrz glsi: 1. Ako Σ, ond regulrni izrz opisuje regulrni jezik {}. 2. Regulrni izrz ε opisuje regulrni jezik {ε}. 3. Regulrni izrz opisuje regulrni jezik. 4. Ako su e 1 i e 2 regulrni izrzi koji opisuju regulrne jezike L(e 1 ), L(e 2 ) Σ redom, ond je i izrz e 1 e 2 regulrni izrz koji opisuje regulrni jezik L(e 1 ) L(e 2 ). 5. Ako su e 1 i e 2 regulrni izrzi koji opisuju regulrne jezike L(e 1 ), L(e 2 ) Σ redom, ond je i izrz e 1 e 2 regulrni izrz koji opisuje regulrni jezik L(e 1 ) L(e 2 ). 6. Ako je e regulrni izrz koji opisuje regulrni jezik L(e) Σ, ond je i izrz e regulrni izrz koji opisuje regulrni jezik L(e). Primetimo d je ov definicij rekurzivn. Ov definicij se krće (i neformlno) može opisti sledećom rečenicom: Regulrn izrz je zpis tkv d svkom regulrnom izrzu možemo ijektivno pridružiti regulrni jezik". Primer 2.3.2 Regulrni jezik N 0 opisuje se regulrnim izrzom ((1 2... 9)(0 1... 9) ) 0. Primer 2.3.3

28 2.3. REGULARNI JEZICI Regulrni izrz opisuje regulrni jezik L( ) = {,,,,...}. Videli smo d svi regulrni jezici mogu nstti primenom opercij, ili n jednostvnije regulrne jezike. Neko i mogo postviti pitnje d li i jezik L 1 L 2 predstvlj regulrni jezik ko su L 1 i L 2 regulrni jezici. Odgovor i io potvrdn, li ovu činjenicu nije jednostvno dokzti. Dokz ćemo prikzti u poglvlju [2.6]. 2.3.1 Prioritet opercij nd jezicim Primer 2.3.4 D li regulrni izrzi i () opisuju isti jezik? Odgovor je ne, jer regulrni izrz opisuje reči jezik {,,,...}, dok regulrni izrz () opisuje reči jezik {ε,,,,...}. Ovo ns dovodi do pitnj prioritet opercij koje možemo primeniti nd jezicim. Vži sledeć rspodel: Opertor im njveći prioritet, Opertor im srednji prioritet, Opertori i imju njmnji prioritet. Nrvno, ukoliko želimo d smi dmo veći prioritet nekoj operciji, ond možemo nju i njene opernde d ogrdimo zgrdm ( i ), i time ćemo postići željeni prioritet. Primer 2.3.5 Jeziku koji je opisn regulrnim izrzom c pripdju reči iz skup {, c }, dok jeziku koji je opisn regulrnim irzom ( c) pripdju reči iz skup {, c }. Sd ćemo dti formulciju jedne poznte leme čiji dokz nećemo prikzti, li npomenućemo d se izvodi indukcijom po dužini reči. LEMA 2.1. (Levi) Nek su xy i zw reči proizvoljnog jezik nd opštom zukom Σ. Td vži: xy = zw (x = z y = w) (( t Σ ) : z = xt y = tw) (( t Σ ) : x = zt w = ty). Npomenimo još i d prvi disjunkt s desne strne ekvivlencije u Lemi 2.1 ne mor d se eksplicitno npiše jer potpd i u drugi i treći disjunkt s iste strne ekvivlencije (z t = ε).

GLAVA 2. ELEMENTI TEORIJE FORMALNIH JEZIKA 29 2.3.2 Proširenj regulrnih izrz i jezik Prošireni regulrni izrzi Vremenom kd su ljudi počeli d regulrne izrze koriste u rčunrstvu zključili d se pisnjem regulrnih izrz pomoću smo osnovnih opercij doijju veliki zpisi. Zto su uvedeni tvz. prošireni regulrni izrzi, koji predstvljju krće zpise regulrnih izrz. Nvedimo neke jednostvne proširene regulrne izrze: Primer 2.3.6 možemo krće zpisti ko + 0 1 2 3 4 5 6 7 možemo krće zpisti ko [0 7] ε možemo krće zpisti ko?... Prošireni regulrni izrzi ne utiču n to d li je jezik koji je opisn proširenim regulrnim izrzom regulrn ili ne. Sve što možemo zpisti proširenim može se zpisti i osnovnim regulrnim izrzim, li po cenu dužine zpis. Regulrne definicije Regulrnim definicijm možemo d imenujemo neki regulrni izrz i d g tkvog koristimo u drugim izrzim. Nvedimo jedn primer ovkve upotree. Primer 2.3.7 Pomoću okt [0 7] definisli smo oktlnu cifru ko cifru između cifr 0 i 7, pomoću okt r okt + definisli smo oktlni roj ko jednu ili više oktlnih cifr. Regulrnim definicijm možemo olkšti isprvljnje drugih regulrnih izrz u kojim smo koristili definiciju. Nime, potreno je izmenu primeniti smo n jednom mestu (pri definisnju) d i se on oslikl n sve ostle, što znčjno olkšv poso. Progrm lex poseduje mogućnost upotree regulrnih definicij. 2.3.3 Pitnj i zdci Pitnje 2.3.3.1. Dt je regulrni izrz ( )+. Koje od sledećih reči pripdju jeziku koji je opisn dtim regulrnim izrzom: () ε, (), (c), (d), (e)?

30 2.4. KONAČNI AUTOMATI Zdtk 2.3.3.1. Npisti regulrni izrz z jezik identifiktor u progrmskom jeziku C. 2.4 Končni utomti Končni utomti opisuju formlizm pomoću kojeg možemo proveriti d li nek reč pripd određenom jeziku. Ilustrujmo funkcionisnje končnih utomt sledećim primerom. Primer 2.4.1 strt 0 1 ε 2 Ovo je primer jednog nedeterminističkog končnog utomt ((N)KA). Njemu odgovr regulrni izrz ( )+. Končni utomt se sstoji od stnj, pri čemu se unutršnj stnj oznčvju krugom, zvršn stnj duplim krugom. Početno stnje je oznčeno strelicom koj vodi iz oznke strt. Primenimo ovj utomt nd niskom "" kko ismo proverili d li pripd jeziku. Krećemo iz početnog stnj 0, nilzimo n krkter koji čitmo i prelzimo u stnje 1. Nkon tog, nilzimo n krkter koji čitmo i prelzimo u stnje 1. Nkon tog, nilzimo n krkter koji čitmo i prelzimo u stnje 2. Nkon tog, nilzimo n krkter koji ne možemo d pročitmo iz stnj 2, li umesto tog možemo d posmtrmo ko d smo nišli n prznu reč, pročitli je i prešli u stnje 0 1. U nstvku čitmo, prelzimo u stnje 1, čitmo i prelzimo u stnje 2. Ovo se krće može zpisti sledećom notcijom 0 1 1 2 ε 0 1 2, koju ćemo koristiti ndlje u tekstu. Pošto smo zvršili u stnju 2, ond možemo d prihvtimo zdtu reč jer je stnje 2 zvršno. Primenimo isti utomt nd niskom "". Vidimo d je rezultt primene utomt: 0 1 2 ε 0 1,

GLAVA 2. ELEMENTI TEORIJE FORMALNIH JEZIKA 31 li kko smo zvršili u stnju 1, to stnje nije zvršno, to zdt reč ne može iti prihvćen. Vidimo d je poprilično nezgodno rditi s utomtim koji podržvju ε-prelze. Moguće je nprviti končne utomte koji su ekvivlentni ovkvim končnim utomtim, li koji ne sdrže pomenute ε-prelze. Primer 2.4.2 Končni utomt iz primer 2.4.1 ekvivlentn je končnom utomtu: strt 0 1 2 Međutim, ovj končni utomt nziv se deterministički končni utomt (DKA). Prolem koji se ovde može jviti jeste ko utomt ne stigne do krj reči. Ovj prolem nstje zog tog što ne postoje prelzi iz svih stnj preko svih krkter (recimo, iz stnj 0 i 2 ne postoje prelzi preko krkter ). Prvilo je d i u tom slučju ne tre d prihvtimo tu reč. Zog pojve ovog prolem, uvodimo stnje greške, ko u sledećem primeru. Primer 2.4.3 Končni utomt 1 Reč ekvivlentn je reči ε (podsetite se zšto), te je ovkvo rezonovnje potpuno isprvno.

32 2.4. KONAČNI AUTOMATI strt 0 1 2 Gr, predstvlj upotpunjenje končnog utomt iz primer 2.4.2 i nziv se potpuni končni deterministički utomt (PDKA). Stnje Gr nziv se stnje greške, i ne prestvlj ništ drugo do unutršnje stnje. Stnje greške ne sme d ude zvršno jer i u tom slučju utomt prihvtio pogrešnu reč. Postupk pri čitnju reči koj dospe u stnje greške je tkv d čitmo osttk reči do krj i sve krktere vodimo u stnje greške. Posmtrjmo složenost izvršvnj lgoritm čitnj reči u končnom utomtu. Jsno je d je vremensk složenost linern po dužini reči koju čitmo (O(n), gde je n dužin reči). Prostorn složenost je konstntn (O(1)) z proizvoljn ulz jednom kd je končni utomt konstruisn. Npomenimo d ε uvodi nedeterminizm jer postojnje ε-prelz dovodi do tog d nije u svkom trenutku jsno kojom grnom tre nstviti. Međutim, to nije jedini slučj nedeterminizm. Primer 2.4.4 Regulrni izrz možemo opisti sledećim končnim utomtom: strt 0 1 On je tkođe nedeterministički jer postoje dve grne kojim se može nstviti kd se niđe n krkter (jedn vodi u stnje 0, drug u stnje 1).

GLAVA 2. ELEMENTI TEORIJE FORMALNIH JEZIKA 33 Primer 2.4.5 Primenimo končni utomt iz primer 2.4.4 n reč "". Moguć su tri slučj čitnj ove reči: 1. 0 0 0? nkon čitnj drugog krkter prelzimo u stnje 0 i tu se proces zglvljuje, 2. 0 0 1 1 1 1 nkon čitnj drugog krkter prelzimo u stnje 1 i dljim čitnjem preostlih krkter prelzimo u stnje 1, u kojem smo čitnje i zvršili što rezultir u prihvtnju reči, i 3. 0 1? nkon čitnj prvog krkter prelzimo u stnje 1 i tu se proces zglvljuje. Npomenimo d je moguće implementirti simultor ponšnj nedeterminističkog utomt predstvljen primerom 2.4.5 rekurzijom, tj. primenjivnjem lgoritmske strtegije pretrge (cktrcking). U tom slučju je vremensk složenost eksponencijln. U prksi se rdi sledeće: od regulrnog izrz se prvo nprvi (N)KA, potom se od (N)KA nprvi DKA. Ilustrujmo ovo sledećim primerom. Primer 2.4.6 Nedeterministički končni utomt iz primer 2.4.4 možemo trnsformisti u sledeći deterministički končni utomt: strt 0 1 2 Videćemo u dljem tekstu d vže sledeće dve činjenice: 1. Svki nedeterministički končni utomt se uspešno može trnsformisti u deterministički končni utomt, i 2. Rezultt trnsformcije iz prve činjenice je jedinstven, odnosno, funkcij trnsformcije iz nedeterminističkog končnog utomt u deterministički končni utomt je injektivn. 2.4.1 Definicij (N)KA Pređimo sd n formlno definisnje pojm končni utomt. I ovde ćemo koristiti oznku (N)KA, jer se može smtrti d su nedeterministički končni utomti ntkls determinističkih končnih utomt, tj. z druge vže neke posene osoine. Zto možemo reći d su pojmovi (opšti) končni utomt i nedeterministički končni

34 2.4. KONAČNI AUTOMATI utomt identični. (Nedeterministički) Končni utomt, u oznci (N)KA, uređen je petork z koju vži: (Σ, Q, I, F, ), Σ je zuk nd čijim rečim primenjujemo utomt, Q je skup stnj, I Q je skup početnih stnj (oznk potiče od reči Initil), F Q je skup zvršnih stnj (oznk potiče od reči Finl), je relcij prelsk utomt, tj. Q {Σ {ε}} Q, često se nziv još i skup grn utomt. Pre nego što pređemo n primer, rzjsnimo zšto je neophodno uključiti skup {ε} u definiciju relcije prelsk utomt. Videli smo d smo još u primeru 2.4.1 dozvoljvli d končni utomt pređe iz jednog stnj u drugo stnje preko ε-prelz. Međutim, ε je (przn) reč, ne krkter zuke, te nismo mogli d stvimo smo Σ u definiciji. Z oznčvnje pojedinčnih utomt možemo koristiti pisn mtemtičk slov A, B,... Primer 2.4.7 (N)KA iz primer 2.4.6 zdt sledećim grfom: strt 0 1 2 možemo zpisti ko uređenu petorku iz prethodne definicije n sledeći nčin: Σ = {, } Q = {0, 1, 2} I = {0} F = {1, 2} = {(0,, 1), (1,, 1), (1,, 2), (2,, 2)}.

GLAVA 2. ELEMENTI TEORIJE FORMALNIH JEZIKA 35 N ovom mestu ćemo reći d se (N)KA može predstviti i telrno n sledeći nčin: Q\Σ 0 1 1 1 2 2 2 Posmtrjmo primer 2.4.7 mlo detljnije. Ako pokušmo d utvrdimo nek svojstv skup, videćemo d z svki skup uređenih prov prvih i drugih koordint immo rzličite slike trećih koordint. U telrnoj reprezentciji to se vidi time što je u svkom polju tele tčno jedno stnje. Ukoliko je ovo ispunjeno z neki (N)KA, ond kžemo d se relcij nziv i funkcij prelsk utomt, oznčv se simolom δ i predstvlj preslikvnje δ : (Q Σ) Q. Primer 2.4.8 (N)KA iz primer 2.4.4 predstvljen grfom strt 0 1 može se telrno predstviti n sledeći nčin: Q\Σ 0 0, 1 1 1 relcij prelsk dtog utomt predstvlj sledeći skup: = {(0,, 0), (0,, 1), (1,, 1)}. U primeru 2.4.8 vidimo d se iz stnj 0 može grnom preći ili u stnje 0 ili u stnje 1. Ovo možemo d posmtrmo i n drugi nčin: ko relciju prelsk utomt posmtrmo ko funkciju prelsk utomt δ, ond originl (0, ) im dve rzličite slike 0 i 1. Td nije teško uočiti d je u opštem slučju funkcij δ definisn s δ : Q Σ P (Q), gde je s P (Q) oznčen prtitivni skup skup Q. 2.4.2 Uslovi z deterministički končni utomt (DKA) Npomenuli smo d su u okviru definicije (N)KA opisni i DKA. N ovom mestu ćemo nvesti uslove koji određuju determinizm jednog končnog utomt. Nek je (Σ, Q, I, F, ) jedn (N)KA. Td se tj (N)KA nziv deterministički končni

36 2.4. KONAČNI AUTOMATI utomt, i oznčv se DKA, ukoliko je svki od sledeć tri uslov ispunjen: 1. Nisu dopušteni ε-prelzi, tj. z sve p, q Q vži: (p, ε, q). 2. Svi prelzi su jednoznčni, tj. z sve p, q 1, q 2 Q i Σ vži: 3. Postoji tčno jedno početno stnje, tj. ((p,, q 1 ) (p,, q 2 ) ) = q 1 = q 2. I = 1, gde je s I oznčen roj element skup I. 2.4.3 Jezik utomt Nek je petorkom (Σ, Q, I, F, ) zdt jedn (N)KA. Rdi lkšeg uvođenj pojm jezik utomt, uvešćemo prvo sledeće dve oznke: 1. Oznk ekvivlentn je z sve p, q Q i Σ. p q (p,, q) 2. Nek je w = 1 2... n Σ. Td je oznk ekvivlentn z sve p, q Q. p w q 1 2 3 n ( r 1, r 2,...r n+1 Q) : p = r 1 r 2 r 3... rn+1 = q Oznk p w q može se protumčiti sledećim rečenicm: Preko reči w se iz stnj p može stići u stnje q" ili Postoji put w iz stnj p u stnje q". Jezik utomt A, u oznci L(A), predstvlj sledeći skup: L(A) = {w ( p I q F ) : p w q}. Ov definicij se krće (i neformlno) može opisti sledećom rečenicom: D i nek reč w pripl jeziku utomt A, dovoljno je pronći ilo koji put w od početnog do zvršnog stnj utomt A".

GLAVA 2. ELEMENTI TEORIJE FORMALNIH JEZIKA 37 2.5 Klinijev teorem TEOREMA 2.2. Kls regulrnih jezik se poklp s klsom jezik koji prepoznju končni utomti. Dokz. Teoremu ćemo dokzti konstruktivno nvešćemo lgoritme i primenjivti ih n primerim. (Smer = ): RJ Tompsonov lgoritm Gluškovljev lgoritm (N)KA-ε Spjnje oslođnj od ε-prelz i konstruirnj podskupov (N)KA Algoritm odlođnj od ε-prelz Algoritm konstrukcije podskupov DKA Murov lgoritm (P)MDKA (Smer =): Od proizvoljnog končnog utomt se primenom Metod eliminisnj stnj može doiti regulrni izrz. TEOREMA 2.3. Z dti regulrni izrz postoji jedinstven PMDKA (potpuni minimlni deterministički končni utomt). 2.5.1 Tompsonov lgoritm Tompsonov lgoritm prti rekurzivnu definiciju regulrnih izrz: 1. Ako je Σ, utomt koji odgovr regulrnom izrzu koji opisuje jezik {} je:

38 2.5. KLINIJEVA TEOREMA strt 0 1 2. Automt koji odgovr regulrnom izrzu ε koji opisuje jezik {ε} je: ε strt 0 1 3. Automt koji odgovr regulrnom izrzu koji opisuje jezik je: strt 0 1 4. Nek su dti regulrni izrzi p i q i njihovi odgovrjući utomti P i Q, redom. Želimo d konstruišemo (N)KA-ε koji odgovr regulrnom izrzu p q. Dodjemo novo početno stnje (stnje 0) i zvršno stnje (stnje 5) i ε-prelzim ih povezujemo s početnim i zvršnim stnjim utomt P (stnj 1 i 3, redom) i utomt Q (stnj 2 i 4, redom). Početno stnje utomt P prestje d ude početno stnje i zvršno stnje utomt P prestje d ude zvršno stnje. Isto vži i z utomt Q. ε 1 P 3 ε strt 0 5 ε ε 2 Q 4 5. Nek su dti regulrni izrzi p i q i njihovi odgovrjući utomti P i Q, redom. Želimo d konstruišemo (N)KA-ε koji odgovr regulrnom izrzu p q (odnosno, pq). Ovo možemo urditi n dv nčin: () Prvi nčin je d ε-prelzom povežemo zvršno stnje utomt P (stnje 1) i početno stnje utomt Q (stnje 2).

GLAVA 2. ELEMENTI TEORIJE FORMALNIH JEZIKA 39 strt 0 P ε 1 2 Q 3 () Drugi nčin je d spojimo zvršno stnje utomt P i početno stnje utomt Q (time doijmo jedinstveno stnje 1). strt 0 P 1 Q 2 U o slučj je početno stnje (N)KA-ε koji odgovr regulrnom izrzu p q zprvo početno stnje utomt P (stnje 0, u o slučj), dok je njegovo zvršno stnje zprvo zvršno stnje utomt Q (stnje 3 u prvom slučju, stnje 2 u drugom slučju). 6. Nek je dt regulrni izrz p i njegov odgovrjući utomt P. Želimo d konstruišemo (N)KA-ε koji odgovr regulrnom izrzu p. Dodjemo dv nov stnj, početno (stnje 0) i zvršno (stnje 3) i ε-prelzim spjmo novo početno stnje s početnim stnjem utomt P (stnje 1) i spjmo zvršno stnje utomt P (stnje 2) s novim zvršnim stnjem. Tkođe, dodjemo ε- prelze od zvršnog do početnog stnje utomt P, ko i ε-prelz od novog početnog stnj do novog zvršnog stnj. Početno stnje utomt P prestje d ude početno stnje i zvršno stnje utomt P prestje d ude zvršno stnje. ε ε strt 0 1 P ε 2 3 ε Npomenimo d je konstrukcij (N)KA-ε koji odgovr jeziku p mogl d se izvede i n sledeći nčin: Dodjemo smo dv ε-prelz koji povezuju početno stnje utomt P s zvršnim stnjem utomt P i ornuto.

40 2.5. KLINIJEVA TEOREMA ε strt 0 P 1 ε Drug konstrukcij tkođe opisuje p, li ne smemo d je koristimo, iko je štedljivije. Preporuk je d kod Klinijevog ztvorenj ne tre štedeti s dodvnjem prelz. Nredn dv primer nm ilustruju i zšto. Primer 2.5.1 Konstruisti (N)KA-ε koji odgovr regulrnom izrzu koristeći isprvn nčin konstruisnj p. strt 0 1 2 3 4 5 6 Primer 2.5.2 Konstruisti (N)KA-ε koji odgovr regulrnom izrzu koristeći neisprvn nčin konstruisnj p. strt 0 1 2 Primetimo d ovj utomt im put od zvršnog stnj do početnog (to je put oznčen isprekidnim prelzim). Zog tog, on je u stnju d prihvt i reči u kojim se pojvljuje posle, tkve reči nisu ouhvćene jezikom. Primetimo d u primerim 2.5.1 i 2.5.2 nismo eksplicitno oeležvli ε-prelze. Ndlje ćemo se pridržvti ove konvencije i smtrti svki neoznčen prelz z ε-prelz.

GLAVA 2. ELEMENTI TEORIJE FORMALNIH JEZIKA 41 Pogledjmo sd još neke primere koji ilustruju primenu Tompsonovog lgoritm. Primer 2.5.3 Konstruisti utomt koji odgovr regulrnom jeziku ( ). strt 0 1 2 3 4 5 6 7 8 9 10 Primer 2.5.4 Konstruisti utomt koji odgovr regulrnom jeziku +. Koristićemo činjenicu koju znmo od rnije d je +. strt 0 1 2 3 4 Md je potpuno korektn, prethodni (N)KA-ε koji odgovr regulrnom jeziku + se može konstruisti i efiksnije, jednostvno uklnjnjem ε-prelz od početnog do zvršnog stnj (N)KA-ε koji odgovr regulrnom jeziku. strt 0 1 2 3 Primer 2.5.5 Konstruisti utomt koji odgovr regulrnom jeziku?.

42 2.5. KLINIJEVA TEOREMA strt 0 1 Z (N)KA-ε kžemo d je normlizovn ko im: 1. jedinstveno stnje u koje ne ulzi ni jedn grn, 2. jedinstveno zvršno stnje iz kojeg ne izlzi ni jedn grn, i 3. iz svkog stnj izlzi njviše 2 grn i ulze njviše 2 grne. Jedno od njznčjnijih osoin Tompsonovih (N)KA-ε jeste t d su svi normlizovni. Nije loše primetiti d ko regulrni izrz im r opercij, (N)KA-ε koji se doij ko rezultt Tompsonovog lgoritm im njviše 2r stnj. 2.5.2 Algoritm oslođnj od ε-prelz Prvo ćemo prikzti postupk u opštem slučju, potom ćemo fokus stviti n oslođnje od ε-prelz Tompsonovih (N)KA-ε od ostlih koje je zntno jednostvnije š zog njihove osoine d su normlizovni. Primer 2.5.6 Nek je dt sledeći (N)KA-ε: ε ε ε 0 1 2 3 4 Postupk oslođnj od ε-prelz je sledeći: K1: Dodvnje prelz iz stnj 0 u stnje 3 K2: Dodvnje prelz iz stnj 1 u stnje 3 K3: Dodvnje prelz iz stnj 0 u stnje 4 K4: Dodvnje prelz iz stnj 1 u stnje 4 K5: Dodvnje prelz iz stnj 2 u stnje 4 Nkon dodvnj potrenih prelz, sledi risnje svih ε-prelz. Rezultujući utomt je sledeći:

GLAVA 2. ELEMENTI TEORIJE FORMALNIH JEZIKA 43 0 1 2 3 4 Isprekidnom linijom su oznčeni dodvni prelzi. Formlno gledno, prvo smo posmtrli sv stnj p, q, q i r i sve prelze z koje vži: p ε q q ε r, i dodvli smo putnju (p,, r ) u. Potom smo eliminisli sve putnje olik (p, ε, q) iz. Time smo doili (N)KA ez ε-prelz. Epsilon ztvorenje stnj p, u oznci ε(p), predstvlj sledeći skup: ε(p) = {q p ε q}. Primer 2.5.7 Epsilon ztvorenj stnj 0 i 2 iz primer 2.5.6 su: ε(0) = {0, 1, 2} i ε(2) = {2}. Pri eliminciji ε-prelz, u opštem slučju se pronlze sve putnje koje imju ε- prelz, p prelz po nekom slovu, p ztim ponovo ε-prelz. Kod (N)KA-ε koji se doijju ko rezultt Tompsonovog lgoritm situcij se menj. Nime, dovoljno je prespojiti putnje sledećeg olik: Pokžimo ovo sledećim primerom: Primer 2.5.8 p ε q r. Oslođnjem ε-prelz u (N)KA iz primer 2.5.1 doij se sledeći (N)KA:

44 2.5. KLINIJEVA TEOREMA 2 strt 0 5 Možd nije ssvim jsno zšto su sv tri stnj iz primer 2.5.8 zvršn. Ispostvlj se d vži sledeće: Z zvršno stnje (N)KA proglšvmo sv stnj u čijem se epsilon ztvorenju nlzi zvršno stnje početnog (N)KA-ε. Pokžimo d ovo vži n još jednom primeru. Primer 2.5.9 Oslođnjem ε-prelz u (N)KA iz primer 2.5.3 doij se sledeći (N)KA: 4 strt 0 8 9 10 5 Ko što smo videli, ukoliko nm je dt regulrni jezik, primenom Tompsonovog lgoritm, p ztim lgoritm oslođnj od ε-prelz, možemo doiti (N)KA. Postoji još jedn lgoritm koji neposredno izvodi (N)KA iz zdtog regulrnog izrz koji se nziv Gluškovljev lgoritm. Iko nm jednostvniji i rži z rd, ispostvlj se d je do sd opisni metod (primen prethodn dv lgoritm) lkši z utomtizciju i implementciju u rčunru. Ipk, prikzćemo i Gluškovljev lgoritm u nrednom poglvlju.

GLAVA 2. ELEMENTI TEORIJE FORMALNIH JEZIKA 45 2.5.3 Gluškovljev lgoritm Oeležimo svko pojvljivnje krkter u regulrnom izrzu rojevim od 1 do n, pri čemu je n roj krkter koji se pojvljuju u regulrnom izrzu, ztim krkter ispred početk izrz oeležimo 0. Ti rojevi predstvljju stnj do kojih se može doći preko oeleženih krkter. Ztim gledmo kojim krkterom može d počne reč koj pripd jeziku opisnom dtim regulrnim izrzom. Stnje koje predstvlj roj kojim smo oznčili trženi krkter predstvlj početno stnje, potom posmtrmo do kojih sve stnj možemo doći, dodjemo grne preko krkter, i postupk ponvljmo z svki roj. Primer 2.5.10 Konstruisti utomt koji odgovr regulrnom izrzu ( ). ( ) 0 1 2 3 4 5 1 strt 0 3 4 5 2 Primer 2.5.11 Konstruisti utomt koji odgovr regulrnom izrzu. 0 1 2

46 2.5. KLINIJEVA TEOREMA 1 strt 0 2 Vidimo d se primenom Tompsonovog lgoritm i lgoritm oslođnj od ε-prelz doij isti rezultt ko i primenom Gluškovljevog lgoritm. 2.5.4 Algoritm konstrukcije podskupov Algoritm konstrukcije podskupov nm omogućv d od (N)KA doijemo DKA. Prikžimo postupk konstruisnj podskupov n sledećem primeru: Primer 2.5.12 Determinizovti utomt koji odgovr izrzu +. Kork 1: Konstruisti (N)KA koji odgovr zdtom regulrnom izrzu. Često se pre sme determinizcije utomt upotpunjuje. Iko immo lgoritm kojim možemo doiti potpuno korektn i optimln (N)KA, ovde ćemo dti jedno d hoc rešenje. (N)KA koji odgovr zdtom regulrnom izrzu je: strt 0 1 2, Gr, Kork 2: Nprviti telu prelzk doijenog (N)KA: