Uvodni deo časa :
1. Zašto su konstruisani programski jezici ?
2. Koje su sličnosti i razlike između prirodnih i programskih jezika ?


Glavni deo časa :

 

ukratko:

Sintaksa jezika - skup pravila na osnovu kojih se pišu konstrukcije jezika.

Primenom sintaksnih pravila utvrđujemo da li je određena konstrukcija pravilna.

Semantika određuje značenje pojedinih konstrukcija odnosno programa u celini.

Sintaksne greške su formalne ( pogrešno otkucana reč, spojene dve reči,... ) i prevodilac ih lako otkriva.

Semantičke greške su vezane za logiku programa i njih otkriva sam programer.

Sintakse programskog jezika opisuju se pomoću posebnog jezika - metajezika.

Sintaksna pravila i definicije opisuju se pomoću Bekusove notacije i sintaksnih dijagrama.

 

detaljnije:

Kod prirodnih jezika sintaksom (sintaksnim pravilima) definiše se način formiranja (gradnje) pravilnih jezičkih konstrukcija – rečenica. Svaki jezik se zasniva na skupu osnovnih elemenata – reči, koje čine rečnik. Rečenice se formiraju povezivanjem reči iz rečnika, saglasno sa sintaksnim pravilima. Skup načina pomoću kojih se odrađuje smisao (značenje) rečenica naziva se semantika.

Skup pravila kojima se definiše način formiranja (gradnja) pravilnih konstrukcija programskog jezika naziva se sintaksa.

Sintaksom programskog jezika se u stvari iskazuje šta su pravilno formirani programi ili delovi programa u tom programskom jeziku. Ovako definisani programski jezici omogućavaju da se program predstavi u obliku teksta (a ne binarno), što je uobičajni način komuniciranja u pisanom obliku na koji su ljudi navikli.

Semantika programskog jezika označava smisao (značenje) koji ima u programu neka pravilna konstrukcija programskog jezika. Semantikom se zadaje logička veza između različitih konstrukcija programskog jezika i radnji (operacija) koje treba da se izvrše. Zbog toga je potrebno da se sintaksa može formalno zadati (opisati). Kao standardna srestva za opis sintakse programskih jezika koriste se sintaksni dijagrami i meta jezici.

Za razliku od prirodnih jezika, svaki programski jezik ima skup strogo definisanih pravila kojima se opisuje postupak pisanja programa. Pošto se radi o jeziku za komunikaciju sa računarom i najmanja dvosmislenost dovodi do grešaka.

Da bismo razlikovali programski jezik koji se opisuje od jezika pomoću koga se vrši opis, to ćemo programski jezik nazivati prosto jezik, a jezik čijim terminima se vrši njegov opis metajezik.

Znači: Za opis sintakse programskih jezika koriste se formalne metode specifikacije koje omogućavaju da se gramatika jezika definiše jasno i nedvosmisleno.

 

 

Meta jezici: EBNF, sintaksni dijagrami

 

Kao standardna srestva za opis sintakse programskih jezika koriste se sintaksni dijagrami i meta jezici.

Meta jezik je jezik koji služi da se pomoću njega opiše neki drugi jezik ili isti taj jezik. Tako se na primer služimo srpskim jezikom da bismo opisali gramatiku srpskog jezika. Bitno je razlikovati termine meta jezika od termina jezika koji se opisuje.

BNF (Bekusova normalna forma ili Bekusova notacija) je formalni meta jezik za predstavljanje gramatika programskih jezika.

EBNF (proširena Bekusova notacija) je takođe meta jezik za predstavljanje gramatika programskih jezika, ali koji je lakši za razumevanje.

Sintaksni dijagrami predstavljaju grafičku notaciju za predstavljanje gramatika programskih jezika. To su dijagrami slični dijagramima toka. Citanje sintaksnog dijagrama znači kretanje od leve ka desnoj strani prateći strelice. Ono što je bitno to je da oni imaju istu izražajnu moć kao i BNF ili EBNF.

 

Sintaksni dijagrami:

ukratko:

- Sintaksni dijagrami se sastoje od kružića ili ovalnih simbola i pravougaonika. Elementi su međusobno povezani.
- Kružići označavaju osnovne oznake programskog jezika.
- Pravougaonici označavaju konstrukcije koje se definišu pomoću drugih sintaksnih dijagrama.
- Sintaksni dijagrami su usmereni - moguće je kretanje samo u pravcu strelice.
- Svaki put kroz sintaksni dijagram je jedno sintaksno pravilo na osnovu kojeg se grade ispravne sintaksne konstrukcije.
- Sintaksni dijagrami su čitlјiviji i razumlјiviji od Bekusove notacije.

 

detaljnije:

Sintaksni dijagram predstavlja grafički prikaz postupka formiranja sintaksno pravilnih konstrukcija programskog jezika tj. grafički prikaz pravilnih puteva gradnje neke programske konstrukcije.

Za opis sintakse koriste se dve vrste grafičkih simbola (blokova). Pomoćni simboli kojima se označavaju sintaksne konstrukcije koje se koriste u definisanju sintaksnih pravila stavljaju se u pravougaonike, dok se osnovni elementi jezika – leksemi označavaju krugovima ili elipsama.

Svaki sintaksni dijagram ima „ulaz“ i „Izlaz“. Bilo koji put kroz dijagram koji vodi od ulaza ka izlazu u smeru strelica odgovara sintaksno pravilnoj konstrukciji programskog jezika.

 

Pogledajte osnovna pravila za kreiranje sintaksnih dijagrama:

 

Sintaksni dijagrami su namjenjeni lakšem razumjevanju, većoj preglednosti sintakse jezika. Sastoje se od kružića, ovalnih pravougaonika, pravougaonika povezanih u određenom poretku.

1. Krug i ovalni pravougaonik sadrže konačne (terminalne, završne) nedjeljive znakove jezika

 

2. Pravougaonici sadrže element koji se naknadno definiše novim sintaksnim dijagramom

3. Jedan od elemenata x1, x2, x3 se mora izvesti

4. Niz elemenata x1, x2, x3 koji slede jedan za drugim

5. Element koji se može izvesti ili preskočiti

6. Element koji se ne mora izvesti, a može se ponavljati njegovo izvođenje

7. Element koji se mora izvesti barem jednom i može se ponavljati njegovo izvođenje

 

U nastavku je dato nekoliko primera sintaksnih dijagrama:

1. Nacrtati sintaksni dijagram slova

2. Nacrtati sintaksni dijagram za cifru

3. Nacrtati sintaksni dijagram za broj

4. Nacrtati sintaksni dijagram za ime

 

Bekusova notacija:

Sintaksne definicije se često zadaju pomoću specijalne metalingvističke simbolike u kojoj se omogućava vrlo precizan i kompaktan opis elementarnih jezika, korišćenjem nekoliko simbola specijalne namene – metasimbola.

Najprostiji pojmovi su simboli i rezervisane reči jezika. Oni se nazivaju terminalni simboli ili terminali i pišu se između navodnika.

Svi ostali pojmovi – neterminali – se postepeno izvode iz terminalnih pomoću specijalnih metalingvističkih formula i stavljaju se između uglastih zagrada.

Proširena Bekusova notacija koristi sledeće simbole:

::= znači ” je po definiciji”

| znači ”ili”,

< > znači ”opis pomoću metajezika neke strukture jezika”, tj. ograđuje neterminalni pojam,

{A} označava da se znak A u zagradi ponavlja proizvoljan broj puta,

[A] označava pojavljivanje znaka A nijedanput ili jedanput.

 

Bekusova notacija za iste primere koji su prethodno opisani sintaksnim dijagramima:

za cifru:

<cifra> ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "0" ;

za broj:

<broj> ::= [ " - " ], cifra, { cifra }

za slovo

<slovo> = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" ;

za ime

<ime> ::= <slovo> { <slovo> | <cifra> }

Last modified: Saturday, 15 September 2018, 11:58 PM