28

KONAČNI AUTOMATI. PREVOĐENJE LL JEZIKA

Embed Size (px)

DESCRIPTION

KONAČNI AUTOMATI. PREVOĐENJE LL JEZIKA. Latinka Petrović, dipl. ing. Prof. dr Milorad K. Banjanin. KONAČNI AUTOMAT. TEORIJA AUTOMATA. - disciplina koja se bavi proučavanjem apstraktnih mašina i problema koje oni mogu rešiti. - PowerPoint PPT Presentation

Citation preview

Page 1: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA
Page 2: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

- 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.

Page 3: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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

Page 4: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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

Page 5: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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 *

Page 6: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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)

Page 7: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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.

Page 8: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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)

Page 9: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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

Page 10: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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

Page 11: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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

Page 12: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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.

Page 13: KONAČNI AUTOMATI.  PREVOĐENJE LL 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)

Page 14: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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.

Page 15: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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.

Page 16: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

- 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

Page 17: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

HVALA NA HVALA NA PAŽNJI!PAŽNJI!

HVALA NA HVALA NA PAŽNJI!PAŽNJI!

Page 18: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

Stanje priprema informacije o prošlosti, tj. odražava promene na ulazu od početka sistema do sadašnjosti.

Prelaz indicira promenu stanja i opisan je uslovom koji treba biti zadovoljen da bi se omogućio prelaz.

Akcija je opis aktivnosti koja treba biti obavljena u datom trenutku.

Page 19: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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:

Page 20: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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

Page 21: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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

Page 22: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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

Page 23: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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)

Page 24: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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

Page 25: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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

Page 26: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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

Page 27: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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.

Page 28: KONAČNI AUTOMATI.  PREVOĐENJE LL JEZIKA

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.