Download as pdf or txt
Download as pdf or txt
You are on page 1of 10

MATEMATICKA LOGIKA I PRINCIPI PROGRAMIRANJA,

Hotomski - Malbaski

aE A, daje neki izlazni simbol bE B. Automat AP =(A,B,S,cr,n,1') zove se k 0 n a e nip rev 0 d i lac . On za svaku rec x u alfabetu A koju prihvata AD daje izlaznu rec N(x) u alfabetu B, generisanu automatom APo

Funkcionisanje konacnog prevodioca AP moze se opisati grafom I" koji se od grafa r automata AD razlikuje sarno po oznakama grana: ako u r iz \jf u 1: ide grana oznacena sa aE A, onda u T' iz \jf u 1: ide grana oznacena sa (a.b), bE B, b je izlazni simbol automata u stanju \jf kad je na ulazu a. Na taj nacin, automat A predstavlja regularan jezik L(N).

5.4.5 Predstavljanje fonnalnih gramatika

Formalne gramatike, kao maternaticki pojam, imaju izuzetan znacaj za proucavanje unutrasnje strukture i ponasanja jezickih konstrukcija vestackih (formalnih) ali i prirodnih jezika (ne treba zaboraviti da je jedan od pionira u ovoj oblasti, Noam Comski (Chomsky), po obrazovanju lingvista).

U oblasti programiranja i programskih jezika pak, glavna namena gramatika, i to prvenstveno konstitutivnih, je jednoznacno zadavanje sintakse, tako da se provera sintaksne ispravnosti pojedinih jezickih elemenata programa vrsi formalnim postupkom koji se moze automatizovati i koji je jedan od glavnih delova svakog prevodioca. Za tu svrhu rnatematicki prikaz gramatike nije dovoljno pogodan jer se elementi programa (konstante, identifikatori, delovi naredbi, cele naredbe itd.) tesko mogu predstaviti pornocu pojedinacnih simbola, a da ta predstava bude jasna. Takode, srodne produkcije pogodno je grupisati, opet u cilju konciznosti i razumljivosti. Tako, na primer, za prikazivanje sintaksnog pravila oblika neterminel-ecitr« neophodno bi bilo napisati 10 posebnih produkcija koje bi sasvim licile jedna na drugu sto bi opis ucinilo nepotrebno glomaznim. Konacno, konstitutivne gramatike, pored primene u automatskoj sintaksnoj analizi, koriste se u udzbenicima iIi prirucnicima za navodenje svih dozvoljenih oblika elemenata nekog jezika za sta je uobicajena matematicka notacija neadekvatna jer joj nedostaje mnemonika.

Zbog toga, za prakticno predstavljanje gramatika koriste se druga sredstva, ne gubeci iz vida da ona ne znace nista kvalitetno novo u odnosu na notaciju iz prethodnog odeljka. Postoji veci broj ovakvih sistema, tzv. metajezika od kojih izdvajamo tri najpoznatija:

1. Bekus-Naurovu formu

198

ALGORITMI, AUTOMATI I JEZICI

2. Prosirenu Bekus-Naurovu fonnu i

3. Sintaksne dijagrame.

5.4.5.l Bekus-Naurova forma

Bekus-Naurova forma, skraceno BNF, dobila je naziv po autorima Bekusu (l.W.Backus) i Nauru (P.Naur). U prvo vreme zvala se Bekusova normalna forma, ali je na predlog fon Nojmana naziv promenjen u danasnji. BNF notacija je tipican metajezik koji se sastoji od metasimbola, metaoperacija i formula. Jednostavan je, kao uostalom i druga dva nacina, jer treba da doprinese konciznosti i razumljivosti zadavanja sintakse programskog jezika, a ne obmuto. Elementi BNF notacije su sledeci:

1. Slozeni objekti (netenninali)

Neterminali spadaju u osnovne metasimbole BNF notacije. Kako se njihovi nazivi mogu sastojati od vise simbola da bi se pokazalo da je u pitanju jedan metasimbol stavljaju se izmedu znakova < i >. Inace, pravilo je da naziv netenninala bude mnemonicki, odnosno da ukazuje na prirodu definisanog netenninala. Primeri netenninala u BNF notaciji bili bi <cifra>, <slovo>, <naredba IF>, <sekvenca>, <ciklus> itd.

2. Terrninali

Tenninali se u BNF notaciji predstavljaju originalnim simbolima, tj. simbolima koji ih opisuju u ciljnom jeziku, bez ikakvih dodataka. Tenninali koji bi spadali u opis nekog programskog jezika su npr. 0 2 7 abc IF WHILE> =

3. Dodela

Metaoperacija (tacnije metarelacija) do dele odgovara operaciji ---t zamenjivanja u produkcijama. Prikazuje se oznakom ::=. Iako cak i po nazivu podseca na operatore dodeljivanja vrednosti u programskim jezicima, izmedu tih operatora i metaoperatora ::= postoji semanticka razlika: dok prvi znaci operaciju posle koje promenljiva sieve strane dobija vrednost izraza sa desne, u BNF notaciji metaoperator do dele treba shvatiti kao "moze biti" , "je" ili "zamenjuje se sa", tako da <x> ::= 2 znaci "x je 2".

4. Ekskluzivna disjunkcija

Ekskluzivna disjunkcija je metaoperator koji ulazi u sastav metaizraza i znaci isto sto i ekskluzivna disjunkcija uopste. Oznacava se simbolom I. Na primer

199

MATEMATICKA LOGIKA I PRINCIPI PROGRAMlRANJA,

~--------------.------

Hotomski ~ Malbaski

<r> ::= <p> I <l>

znaci "r je ili pili q i nista drugo".

5. Repeticija

Ova metaoperacija rezervisana je za oznacavanje da se neki podizraz pojavljuje vise puta, pri cemu se granice mogu zadati ili ne. Oznacava se tako sto se metaizraz koji se ponavlja stavlja izmedu velikih zagrada, { i } Tako, {a} znaci da se terminal a pojavljuje jedan iii vise puta gde gomja granica broja ponavljanja nije zadata. Ako je broj pojavljivanja podizraza ogranicen s donje strane sa m, a

sa gomje vrednoscu n pise se {ex}: gde je ex podizraz. To znaci da se ex pojavljuje najmanje rn puta, a najvise n puta. Jednorn recju, podrazurnevana vrednost m je 1, a podrazurnevana vrednost n je 1 iIi vise,

Opsti oblik metstormule je

<naziv neterminalas.:« rnetaizraz

gde u sastav rnetaizraza ulaze neterrninali, terminali i metaoperacije. Kada god ne moze doci do nesporazurna umesto termina rnetaformula koristicemo termin formula. Na primer, umesto skupa produkcija, kako bi to zahtevala notacija koja se upotrebljava u teoriji forrnalnih jezika, element programskog jezika "cifra" opisujemo jednom jedinom formulom oblika

sa znacenjem "neterminal <cifra> moze biti 0 iii 1 iIi 2 iIi 3 iIi ... iIi 9". Slicno, leksicki element "slovo" opisujemo forrnulom

<slovcc-i.e.A I B I e I DIE I FIG I H I I I J I K I LIM I N I 0 I pi Q I R I SiT I u I V I w I X I y I z I alb I c I die I fig I h I i I j I kill min I 0 I p I q I r I sit I u I v I w I x I y I z I

ili, altemativno,

<veliko slovo>::=

A IB lei D IEIFIGIH I I IJIK ILIM INI 0 Ipi QIRI S [rl u] V [w lx] y [z

<malo slovo>c:«

alblcidielflglhliljlkillminiolplqlrlsitlulvlwixlylz

200

ALGORITMI, AUTOMA TI I JEZICI

-cslovo>i:« <veliko slovo> I <malo slovo>

gde bi se druga alternativa koristiIa u slucajevima kada je negde u sintaksi potrebno praviti razliku izrnedu malih i velikih slova.

Ako je potrebno povezati dva metasimbola (neterminala i-ili terminal a) to se postize Isncanjem i to tako sto se oni dopisu jedan do drugog. Kod starih verzija BASIC-a nazivi skalarnih promenljivih mogli su da se sastoje sarno od velikog slova iIi velikog slova pracenog jednom cifrom. Odgovarajuci BNF opis bio bi

<naziv promenljivec-n= -cveliko slovo> I <veliko slovo> -ccifra»

cime bi se sintaksno definisali dozvoljeni nazivi oblika A, F, K2, X3 i s1.

Pros to nabrajanje mogucih vrednosti nekog neterminala u mnogim slucajevima nije dovoljno da bi se dobio jednostavan opis njegove sintakse. U tu svrhu intenzivno se koristi rekurzija. Rekurzivna formula u BNF notaciji je formula u kojoj se sa desne strane dodele nalazi neterminal sa leve strane. Rekurzija moze biti, u nacelu, i indirektna. U programskom jeziku Pascal identifikator ("ime" promenljive, tipa, procedure, funkcije iIi imenovane konstante) zadaje se rekurzivno pomocu forrnule

<slovo iIi _>::= -cslovo> I _

<identifikatorc-r;= <slovo iIi .> I <identifikator» -cslovo iIi .> I <identifikator> <cifra>

gde je uzeta u obzir i mogucnost ucestvovanja znaka "_" u konstrukciji identifikatora, kao sto je to slucaj kod programskih jezika Pascal i C.

5.4.5.2 Prosirena Bekus-Naurova forma

Prosirena Bekus-Naurova forma, skraceno EBNF (od gxtended !!ackusNaur form), izvedena je iz osnovne BNF notacije uz neka prosirenja i izmene. Obuhvata sve konstrukcije BNF uz sledece izmene:

• Neterminali se navode bez posebnih ogranicavaca < i >; dakle, umesto -cslovo> u EBNF se odgovarajuci neterminal navodi sarno imenom: slovo.

201

--------~~-~~"~-~-~"

MATEMATICKA LOGIKA I PRINCIPI PROGRAMIRANJA,

Hotomski - Malbaski

Obicaj je da se za neterminale koji se sastoje od vise reci one povezuju u jednu tako da svaki novi deo pocne velikim slovom, npr. Slozenal-laredba.

• Terminali se, u svrhu razlikovanja od neterminala, pisu pod znacima navoda, npr. "0" "7" "IF" "A".

• Umesto znaka ::= za metarelaciju dodele koristi se obi can znak jednakosti =.

• Konstrukcija {metaizraz} znaci pojavljivanje metaizraza 0 iii vise puta (kod BNF podrazumevalo se najmanje jedno).

• Konstrukcija [metsizrez] znaci pojavljivanje 0 iIi jedanput (tj. u pitanju je opcioni metaizraz).

• Uvedene su male zagrade za grupisanje delova metaizraza.

• Formula se obavezno zavrsava tackom.

Tako bi, recimo, sintaksa za cifru u EBNF notaciji izgledala ovako:

cifra= "0"1" 1 "1"2"1"3"1"4"1"5"1"6"1"7"1"8"1"9".

gde metasimbol lima isto znacenje kao i u BNF notaciji (ekskluzivna disjunkcija). Inace, formule u EBNF notaciji razlikuju se od odgovarajucih formula u BNF notaciji po tome sto se kod njih cesee koriste repeticija i opcija. Ako pretpostavimo da su neterminali ProstaNaredba i Logickilzisz vee definisani tada bi EBNF notacija za naredbu if bila

NaredbaIF= "IF" Logickilzraz "THEN" (ProstaNaredba I "BEGIN" ProstaNaredba "END") ["ELSE" (ProstaNaredba I "BEGIN" ProstaNaredba "END")).

Identifikator se u EBNF notaciji moze zadati na sledeci nacin:

identifikator= (slovo I "_") {slovo I "_" I cifra}.

Zapazimo da je identifikator moguce zadati i rekurzijom, kao u BNF notaciji, ali je upravo stil pisanja formula one sto najvise razdvaja BNF i EBNF.

5.4.5.3 Sintaksni dijagrami

Za razliku od BNF i EBNF notacije koje su po formi analiticke, sintaksni dijagrami predstavljaju graficki nacin za prikaz konstitutivnih gramatika. Prednost im je u tom sto su znatno pregledniji (kao uostalom i svi graficki prikazi), ali s druge strane zauzimaju vise fizickog prostora, tako da nije retkost da se koriste u kombinaciji sa jednom od navedenih analitickih tehnika. Po formi gotovo su

202

--~~~~---~ -------------

ALGORITMI, AUTOMATI I JEZICI

identicni usmerenim grafovima sa jednom ulaznom i jednom izlaznom granom, a s tom razlikom da se te grane jednim krajem ne vezuju za cvorove. Cvorovima odgovaraju razliciti graficki simboli u zavisnosti od metasimbola kojima su dodeljeni.

Neterrninali (zovu se jos i metalingvisticke promenljive) prikazuju se cvorovima oblika pravougaonika u koje se upisuju njihovi nazivi i to, po konvenciji, malim slovima kako se vidi na slici 1.

identifikator

Slika 1.

Terrninalima odgovaraju cvorovi oznaceni kruzicima sa upisanim nazivom terrninala ili ovalima ako je naziv predugacak. Primeri su dati na slici 2.

C __ WH_ILE _)

Slika 2.

Lancsnje se postize povezivanjem cvorova granama orijentisanim u skladu sa smerom lancanja, slika 3.

slovo

cifra

Slika 3.

203

MATEMATICKA LOGlKA I PRINCIPI PROGRAMlRANJA,

Hotomski - Malbaski

Na slici 4 prikazan je primer ekskluzivne disjunkcije koja se ostvaruje povezivanjem disjunktnih cvorova paralelnim granama koje imaju zajednicki ulaz i izlaz.

cifra

o

7

2

4

5

Slika 4.

Usmerenim granama regulise se i pitanje rekuizije tako sto se na sintaksnom dijagramu pojavljuju povratne grane. Na slici 5 nalazi se sintaksni dijagram koji opisuje istu vrstu identifikatora koja je vee data u BNF i EBNF notacijama. Naporninje se da je ovaj dijagram mogao biti prikazan i sa manje simbola, ali se u tom slucaju gubi jedinstvena karakteristika sintaksnih dijagrama - preglednost.

identifikator

slovo

Slika 5.

204

cifra

ALGORITMI, AUTOMATI I JEZICI

Na kraju, ako je broj ponavljanja nekog metaizraza (a njima odgovaraju podgrafovi sintaksnog dijagrama) ogranicen upotrebljava se posebna vrsta grane koja se oznacava maksimalnim dozvoljenim brojem prolaza. Kroz granu sa slike 6 ne moze se proci vise od 6 puta.

Slika 6.

Programski jezik FORTRAN IV je za ime promenljive dozvoljavao upotrebu sarno velikih slova i cifara uz ogranicenje da ih nije moglo biti vise od 6 i da je prvi simbol moran biti slovo. Sintaksni dijagram irnena prornenljive sa ovirn osobinarna dat je na slici 7.

ime promenljive

Slika 7.

205

MASINE SA PROGRAMS KIM UPRA VLJANJEM

6.MASINE SA PROGRAMSKIM UPRA VLJANJEM

Masine sa programskim upravljanjem su automati koji izvrsavaju ureden spisak naredbi - program. Kod masina sa unutrasnjim programom program se nalazi u masini i izvrsava se u diskretnim koracima, naredba za naredbom. Da bi masina mogla da izvrsi naredbe programa, mora raspolagati skupom radnji (operacija) kojima se fizicki ostvaruje izvrsavanje svake naredbe. Kaze se da masina prihvata program, ako raspolaze operacijama za izvrsavanje svake naredbe programa. Zbog toga naredbe programa moraju biti usaglasene sa operacionim mogucnostima masine, Skup takvih radnji masine, principijelno je moguce svesti na svega nekoliko elementamih dejstava, kao sto se vidi iz rada Tjuringovih masina, Elementamost tih radnji dovodi do elementamih mikro-komandi koje je masina u stanju da izvrsi u jednom koraku. Slozene operacije se zato rasclanjuju na mikro-kornande koje zapisane u odredenom redosledu cine program, tj. mikroprogram rada rnasine.

Ako je program fiksiran u masini, onda je masina specijalizovana za resavanje odredenog zadatka uz razlicite ulazne podatke.

Masina sa unutrasnjim programom je univerzalna, ako je njen skup naredbi potpun u tom smislu da se pomocu njih moze sastaviti program za bilo koji algoritamski resiv problem. Pri tome se pretpostavlja da prostorno-vremenska ogranicenja nisu bitna, kao sto je to istaknuto kod Univerzalne Tjuringove masine. Za razliku od toga, kod realnih masina prostorno-vremenska ogranicenja bitno ogranicavaju opseg problema i programa za njihovo izvrsavanje koje masina prihvata. Medutim, time se ne kvari principijelna algoritamska univerzalnost, tj. principijelna potpunost skupa naredbi koje moze da izvrsi realna univerzalna masina. U takve masine unosi se prethodno pripremljeni program za resavanje odredene klase zadataka zajedno sa polaznim podacima, nakon cega masina automatski izvrsava taj program i u slucaju kad masina prihvata program, nalazi resenje.

Najpoznatiji predstavnik algoritamski univerzalnih, realnih masina sa unutrasnjim programom je elektronski racunar - kompjuter. Ta masina resava zadatke na jeziku brojeva i aritmetickih operacija, sto se odrazilo i na naziv "racunar". Neznajuci za domete aritmetizacije i kodiranja, prvi konstruktori racunara nisu bili svesni ogromnih ne aritmetickih mogucnosti racunara u sferi ne numericki izrazenih informacija, cak su takvu mogucnost negirali. U vezi sa mogucnostima racunara postoji jos jedna zabluda kod osoba koje ne poznaju teoriju algoritama. Takve osobe sklone su da moe racunara tumace iskljucivo elektronikom pomocu koje su izgradeni, U stvari, elektronika sarna po sebi nema

207

You might also like