Jan 03, 2016
- disciplina koja se bavi proučavanjem apstraktnih mašina i problema koje oni mogu rešiti.
model diskretnog matematičkog sistema koji čitanjem znak po
znak odlučuje da li je pročitani niz element zadatog jezika
- model diskretnog matematičkog sistema koji se
sastoji od konačnog broja stanja, prelaza između tih stanja i akcija koje automat
obavlja.
KONAČNI AUTOMAT
DETERMINISTIČKI KONAČNI AUTOMAT
DETERMINISTIČKI KONAČNI AUTOMAT SA
IZLAZOM
NEDETERMINISTIČKI KONAČNI AUTOMAT SA
ε-PRELAZIM
NEDETERMINISTIČKI KONAČNI AUTOMAT
DETERMINISTIČKI KONAČNI AUTOMAT
BEZ IZLAZA
Mealyjev automat
Mooreov automat
Klasifikacija automata
KONAČNI AUTOMAT (KA) je mašina koja, za dati niz znakova na ulazu, skače kroz sled stanja u zavisnosti od svoje funkcije prelaza
Ulaz se čita znak po znak, sve dok nije u potpunosti pročitan
Kada je ulazna reč u celosti pročitana, kažemo da automat staje.
automat prihvata reč
Zavisno od stanja u kojem se automat nalazi u trenutku stajanja, kažemo da automat ili prihvata ili ne prihvata (odbija) ulaznu reč.
automat odbija reč
Skup svih reči koje automat
prihvata zovemo JEZIK koji automat
prihvata
Znak (simbol)
Reč
Alfabet
Jezik
Osnovni univerzalni
koncepti za sve klase automata
Jedinstven, nedjeljiv element, kao što je: a, b, ..., A, B, ..., 0, 1, ..., +, -, *, itd.
Teorija automata je usko povezana sa teorijom FORMALNIH JEZIKA
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 *
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 (tj. F⊆Q)
Konačni automat u
kojem za svaki par stanja i
ulaznog znaka postoji jedan i samo jedan
prelaz u sledeće stanje
DKA prima niz ulaznih znakova, i za svaki ulazni znak obavlja prelaz
u stanje koje određuje funkcija prelaza
Kada je pročitan ceo ulazni niz,
prihvati će ili odbiti niz znakova
u zavisnosti od toga da li je DKA u
prihvatljivom ili neprihvatljivom
stanju.
Konačni automat u kojem za svaki par stanja i ulaznog znaka može postojati nekoliko mogućih sledećih stanja
može se naći u situaciji da koristeći
isti znak postoje višestruki prelazi iz
trenutnog stanja
NKA obrađuje niz ulaznih znakova i prihvata niz ako
i samo ako postoji neki sled prelaza koje može
načiniti, a koji će ga dovesti u prihvatljivo
stanje. Suprotnom, odbija niz znakova.
pokazuje u koje stanje (ili stanja u
slučaju NKA) konačni automat
prelazi, u zavisnosti od
trenutnog stanja i drugih ulaza
pokazuje u koje stanje (ili stanja u
slučaju NKA) konačni automat
prelazi, u zavisnosti od
trenutnog stanja i drugih ulaza
koristi se za grafički prikaz konačnih
automata(naziva se i dijagram
prelaznih stanja, grafikon prelaznih stanja i shematski prikaz prelaznih
stanja)
koristi se za grafički prikaz konačnih
automata(naziva se i dijagram
prelaznih stanja, grafikon prelaznih stanja i shematski prikaz prelaznih
stanja)
ci
g
LLLJP
prevodi zapis algoritma A iz izvornog jezika Li u zapis algoritma
u ciljnom jeziku
JP – jezički procesor,Li – izvorni jezik,Lg – jezik izgradnje,Lc - ciljni jezik
1. faza analize izvornog programa 2. faza sinteze ciljnog programa
Jezički procesor JP prevodi program px iz jezika Li u program py iz jezika Lc
Jezički procesor JP prevodi program px iz jezika Li u program py iz jezika Lc
Za potrebe prihvatanja
programa jezika Li, gradi se formalni
automat M
Kompajler Računar – apstraktna mašina
vreme prevođenja vreme izvršavanja
objektni program rezultat
podaci za program
izvorni program
PREVOĐENJE - iz višeg programskog jezika (koji je čitljiv
čoveku) u niži (koji je razumljiv računaru)
KOMPAJLER (prevodilac) je program koji služi za prevođenje izvornog koda nekog programa, pisanog u jednom programskom jeziku u ciljni kod izražen u ciljnom programskom jeziku.
1. faza analize izvornog programa - leksička, sintaksna i semantička analiza
FAZE PREVOĐENJA:Izvorni program
2. faza sinteze ciljnog programa - --generisanje međukoda
--optimizacija međukoda,
--generisanje koda
--optimizacija koda Ciljni program
leksička analiza - leksički analizator obavlja ostale, složenije zadatke
- početna procedura u svakom kompajleru
Nakon leksičke analize, izvorni program preveden je u niz
jedinstvenih znakova koji je osnova sledećeg procesa prevođenja-
SINTAKSNU ANALIZU
(prevođenje niza znakova u tokene)
Programski kod koji treba prevesti je najčešće niz znakova
Prva faza je grupisanje ovih znakova u „tokene“- jedinice koje imaju za jezik smisleno značenje (npr. ključne reči, identifikatori, konstante i sl.).
Leksički analizator se u kompajlerima realizuje u 2 faze:
skeniranje - skener izvršava jednostavnije zadatke kao što su izostavljanje komentara, praznina
Osnovni alati koji se koriste u leksičkoj
analizi su REGULARNI
IZRAZI i KONAČNI AUTOMATI
Konačan skup znakova. U
slučaju programskih
jezika mogu ga činiti znakovi
koji čine program ili
tokeni ukoliko je već izvršena
leksička analiza
- Proverava se sintaksa programa
analizira tokene sa ulaza, proverava da li dati ulaz opisuje
ulazni jezik, koji je zadat gramatikom
OSNOVNI POJMOVI
U fazi sintaksne analize se od niza tokena koje je prosledio leksički analizator generiše drvo sintaksne analize, koje predstavlja apstraktnu predstavu strukture programa
Skup reči, oblikovan
znakovima u datom alfabetu.
Programski jezici su po pravilu beskonačni.
Konačni skupovi pravila čijom se
primenom, polazeći od
nekog fiksiranog
simbola, izvode reči jezika.
gde je:
N - konačan skup neterminalnih simbola (pomoćnih simbola),
T - konačan skup terminalnih simbola (alfabet),
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,P,S)
HIJERARHIJA CHOMSKOG - Klasifikacija gramatika prema obliku svojih produkcija:
Linearna sdesna ili tipa 3 ako je svaka produkcija iz P oblika
A → xB A x A,BN, x T*
Linearna sleva ako je svaka produkcija iz P oblika
A → Bx ili A → x
Beskontekstna ili tipa 2 ako je svaka produkcija iz P oblika
A → AN, (NUT)*
Kontekstna ili tipa 1 ako je svaka produkcija iz P oblika
→ Bez ograničenja ili tipa 0 ako produkcije ne zadovoljavaju nijedno od navedenih ograničenja.
REGULARAN - ako je generisan gramatikom tipa 3
BEZ OGRANIČENJA - ako je generisan gramatikom tipa 0
KONTEKSTAN - ako je generisan gramatikom tipa 1
BESKONTEKSTAN - ako je generisan gramatikom tipa 2
Najčešće korišćene tehnike za efikasno
parsiranje su LL(1) i LALR(1) parsiranje
POSMATRA SE JEDAN ZNAK SA
ULAZA I NA OSNOVU NJEGA SE
VRŠI ODLUKA O SLEDEĆEM KORAKU
LL(1) parseri rade na bazi LL(1) gramatike
Skup reči koje sadrže samo simbole iz T, a koje možemo dobiti primenom pravila iz P polazeći od neterminala N čine jezik određen gramatikom G.
- proverava se da li program ima „smisla“,
tj. da li su tipovi izraza koji se upoređuju saglasni.
Nakon uspešno
provedene sintaksne
analize, semantički
analizator pokreće
proces generisanja
višeg međukoda.
Pre generisanja višeg međukoda, proveravaju se SEMANTIČKA PRAVILA
interpretacijska pravila
koja povezuju izvođenje
programa sa ponašanjem
računara, pri čemu
semantika jezika
određuje skup
dozvoljenih značenja
HVALA NA HVALA NA PAŽNJI!PAŽNJI!
HVALA NA HVALA NA PAŽNJI!PAŽNJI!
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.
Pristupna akcija - izvršava akciju
prilikom ulaska u stanje.
Ulazna akcija – izvršava akciju
zavisno od trenutnog
stanja i ulaznih uslova.
Izlazna akcija - izvršava akciju za vreme
izlaska iz stanja.
Prelazna akcija - izvršava
akciju dok se obavlja određeni prelaz.
Klasifikacija akcija u zavisnosti od tipa automata:
FORMALNI JEZIK L se sastoji od skupa konačnih nizova elemenata konačnog skupa A znakova.
Matematički neuređen par L={A, F}
FORMALNI JEZIK
KOLEKCIJA REČI
KOLEKCIJA REČENICA
skup A se zove alfabet jezika L, a elementi skupa
F se zovu reči.
skup A se zove leksikon ili vokabular
skupa F, dok se elementi skupa F zovu
rečenice
Uređena petorka (Q, Σ, δ, q0, F) konačni skup stanja (Q),konačni skup ulaznih znakova zvanog ulazni alfabet (Σ)funkcija prelaza ( )početno (inicijalno) stanje (q0Q),skup prihvatljivih stanja (F Q).
QQ:
Neka je M deterministički konačni automat
i X = x0x1...xn je niz znakova nad alfabetom Σ.
M prihvata niz znakova X ako postoji sled stanja r0,r1,...,rn, u Q uz sledeće uslove:
F,q,,,QM 0
r0 = q0,
automat započinje rad u početnom stanju q0
ri + 1 = δ(ri,xi) za i = 0,...,n-1za svaki znak ulaznog niza X
automat će preći iz trenutnog stanja u stanje upravljano funkcijom prelaza δ
rn F
automat prihvata ulazni niz ako poslednji znak ulaznog niza X
uzrokuje prelaz u jedno od prihvatljivih stanja
Uređena petorka (Q, Σ, δ, q0, F)
konačni skup stanja (Q),konačni skup ulaznih znakova zvanog ulazni alfabet (Σ)funkcija prelaza ( ), P(Q) je partitivni skup (skup svih podskupova) skupa Q, je prazan nizpočetno (inicijalno) stanje (q0Q),skup prihvatljivih stanja (F Q).
Neka je M nedeterministički konačni automat
i X je niz znakova nad alfabetom Σ. M prihvata niz znakova X ako postoji i reprezentacija niza X oblika x0x1...xn, xi{} i sled prelaza stanja r0,r1,...,rn, ri Q koji zadovoljava sledeće uslove:
F,q,,,QM 0
r0 = q0, automat započinje rad u početnom stanju q0
ri = δ(ri-1,xi) za i = 1,...,n-1
rn F Automat prihvata ulazni niz ako poslednji znak ulaznog niza X uzrokuje prelaz u jedno od
prihvatljivih stanja
)Q(PQ:
Automat koristi funkciju prelaza da odredi sledeće stanje koristeći trenutno stanje kao i upravo pročitan znak. Sledeće stanje NKA ne zavisi samo od trenutnog ulaznog događaja, već i od proizvoljnog broja narednih ulaznih događaja
A BTrenutno
stanjeSledeće stanje
Izlaz
0 0 S1 S2 1
0 0 S2 S1 0
0 1 S1 S2 0
0 1 S2 S2 1
1 0 S1 S1 1
1 0 S2 S1 1
1 1 S1 S1 1
1 1 S2 S2 0
IZLAZI su postavljeni na desnoj strani
ULAZI su postavljeni na levoj strani
PREDSTAVLJAJU SLEDEĆE
STANJE AUTOMATA
Tabela prelaza stanja
DogađajiStanje
E1 E2 ... En
S1 - Ay/Sj ... -
S2 - - ... Ax/Si
... ... ... ... ...
Sm Az/Sk - ... -Tabela prelaza stanja
sledeće trenutno
S1 S2 ... Sm
S1 Ay/Ej - ... -
S2 - - ... Ax/Ei
... ... ... ... ...
Sm - Az/Ek ... -
Horizontalna dimenzija označava događaje
Postoje dva uobičajena načina za njihovo uređivanje
Vertikalna dimenzija označava
trenutna stanja
ćelije (preseci redova/kolona) u tablici sadrže sledeće stanje
ukoliko se događaj dogodi
Tabela prelaza stanja (S: stanje, E: događaj, A: akcija, -: nevaljali prelaz)
Vertikalna dimenzija označava
trenutna stanja
Horizontalna dimenzija označava sledeća stanjapreseci redova/kolona u tablici sadrže događaj
koji vodi ka nekom pojedinačnom sledećem stanju
Tabela prelaza stanja (S: stanje, E: događaj, A: akcija, -: nemogući prelaz)
Koraci transformacije za crtanje dijagrama stanja iz
tabele stanja
Nacrtati krugove koji predstavljaju zadata stanja
Za svako stanje potrebno je preći sve kolone u odgovarajućem redu i nacrtati strelicu u odredišno
stanje/stanja
Označiti stanje kao početno. Početno stanje je zadato u formalnoj definiciji automata.
Označiti jedno ili više stanja kao prihvatljiva stanja.
START
Dat je M – deterministički konačni automat F,q,,,QM 0gde je:Q={S1, S2}={0,1}q0= S1 F={S1}δ je definisana sledećom tablicom prelaza:
Tabela prelaza stanja
UlazStanje
1 0
S1 S1 S2
S2 S2 S1
ukoliko je automat u S1 (prvi red), a sledeći ulazni znak 1, automat će ostati u stanju S1
={0,1}
Ukoliko je ulazni znak 0, automat će preći u stanje S2
ukoliko je automat u S2 (drugi red), a sledeći ulazni znak 1, automat će ostati u stanju S2
Ukoliko je ulazni znak 0, automat će preći u stanje S1
DIJAGRAM STANJA
Tokom procesa analize čita se znak po znak izvornog programa px .
Ako je program (niz) px u jeziku Li, onda se nakon poslednjeg pročitanog znaka ispisuje da je niz px ispravno napisani program u jeziku Li.
Ako program (niz) px nije u jeziku Li, nakon poslednjeg pročitanog znaka ispisuje se da niz px nije ispravno napisani program u jeziku Li i prevođenje se zaustavlja
Ciljni program generiše se tako da se ispisuje znak po znak programa py (niza znakova py), koji je u jeziku Lc i koji je prevod programa px.
Regularni izrazi (RI) se koriste za opis regularnih jezika.
Regularni izrazi nad alfabetom A označuju određene regularne skupove, a definisani su na sledeći način:
1. Øje regularni izraz koji označava regularni skup Ø. 2. e je regularni izraz koji označava regularni skup {e}. 3. a iz A je regularni izraz koji označava regularni skup {a}. 4. Ako su p i q regularni izrazi koji označavaju regularne
skupove P i Q, redom, tada su regularni izrazi i:
- (p+q) je regularni izraz koji označava regularni skup PQ.
- (pq) je regularni izraz koji označava regularni skup PQ.
- (p) * je regularni izraz koji označava regularni skup P*.
Ako je jezik moguće opisati regularnim izrazima onda je regularan i označava se L(r). Takođe, jezik je regularan ako postoji konačni automat koji ga prihvata.