Programski jezici Sintaksa programskih jezika Sintaksa programskih jezika

  • Slides: 28
Download presentation
Programski jezici Sintaksa programskih jezika

Programski jezici Sintaksa programskih jezika

Sintaksa programskih jezika Formalan opis sintakse n Bekusova normalna forma (BNF notacija) n FORTRAN

Sintaksa programskih jezika Formalan opis sintakse n Bekusova normalna forma (BNF notacija) n FORTRAN notacija n COBOL notacija n C notacija n ADA notacija n BS notacija n Sintaksni dijagrami n

Sintaksa - relacije (veze) između znakova ili grupa znakova, nezavisno od njihovog smisla ili

Sintaksa - relacije (veze) između znakova ili grupa znakova, nezavisno od njihovog smisla ili načina interpretacije ili korišćenja (ISO 07. 02. 04) n Semantika - relacije (veze) između znakova ili grupa znakova sa njihovim smislom, nezavisno od njihove interpretacije i korišćenja (ISO 07. 02. 05) n Pragmatika - relacije (veze) između znakova ili grupa znakova sa njihovom interpretacijom i korišćenjem (ISO n

Sintaksa programskih jezika Sintaksa - skup pravila i dogovora kojima se opisuju pravilne konstrukcije

Sintaksa programskih jezika Sintaksa - skup pravila i dogovora kojima se opisuju pravilne konstrukcije (pravilne rečenice) jezika n Sintaksa opisuje strukturu jezičkih izraza i predstavlja skup pravila kojima se definiše struktura jezika n Elementi programa najnižeg nivoa, koji imaju jezički smisao, nazivaju se lekseme (osnovni, terminalni simboli) n

Formalan opis sintakse Jedan od osnovnih uslova standardizacije jezika n Osnova za projektovanje kompilatora

Formalan opis sintakse Jedan od osnovnih uslova standardizacije jezika n Osnova za projektovanje kompilatora n Omogućava primenu standardnih metoda za n n Leksičku analizu n Sintaksnu analizu n Semantičku analizu n Generisanje objektnog koda i njegovu optimizaciju n Standardna sredstva za opis sintakse n Metajezici

Formalan opis sintakse Backus i Chomsky – krajem pedesetih godina n Chomsky – formalne

Formalan opis sintakse Backus i Chomsky – krajem pedesetih godina n Chomsky – formalne gramatike za opis jezika (rekurzivno prebrojive, kontekstne, bezkontekstne i regularne) n Gramatike tipa nula – rekurzivno prebrojive, odgovaraju konceptu algoritma n Regularne – definišu najužu klasu jezika n Kontekstne – konstrukcije programskih jezika n

Bekusova normalna forma Algol 58 predstavljen 1959. godine, prvi put korištenjem nove notacije za

Bekusova normalna forma Algol 58 predstavljen 1959. godine, prvi put korištenjem nove notacije za opis sintakse programskih jezika (Backus) n Peter Naur neznatno menja notaciju i koristi je za opis sintakse programskog jezika Algol 60 n Revidirana notacija poznata je kao Backus -Naurova normalna forma ili samo BNF n BNF predstavlja osnovu za definisanje drugih, sličnih metajezika n

Bekusova normalna forma n n n BNF notacija se sastoji od konačnog broja rečenica

Bekusova normalna forma n n n BNF notacija se sastoji od konačnog broja rečenica koje se nazivaju metalingvističke formule (metalingvistička pravila, sintaksna pravila) U okviru pravila koriste se sledeći metasimboli: : : = definiše se kao, “po definiciji je”, | ili (služi za odvajanje mogućih varijanti u definiciji) Metapromenljive (pomoćne promenljive) su simboli metajezika koji predstavljaju imena sintaksnih kategorija (strukturnih jedinica) <celi broj bez znaka>

Pravila n Opšti oblik metalingvističkih pravila je: <leva strana> : : = <desna strana>

Pravila n Opšti oblik metalingvističkih pravila je: <leva strana> : : = <desna strana> n <sintaksna kategorija> : : = <varijanta 1> | <varijanta 2>|<varijanta 3> n Sa leve strane pravila stoji metalingvistička promenljiva kojom je označen definisani pojam n Sa desne strane se nalazi konačan broj metalingvističkih promenljivih ili simbola jezika koji se definiše (terminalnih simbola n

Primeri metalingvističkih pravila <cifra> : : = 0|1|2|3|4|5|6|7|8|9 n <dodeljivanje> : : = <promenljiva>

Primeri metalingvističkih pravila <cifra> : : = 0|1|2|3|4|5|6|7|8|9 n <dodeljivanje> : : = <promenljiva> : = <izraz> n <if_naredba> : : = if <logizraz> then <naredba> | if <logizraz> then <naredba> else <naredba> n <ceo broj bez znaka> : : = <cifra> | <ceo broj bez znaka> n

Generisanje pravilnih rečenica Kreće se od posebnog neterminalnog simbola koji se naziva startnim n

Generisanje pravilnih rečenica Kreće se od posebnog neterminalnog simbola koji se naziva startnim n Primenjuje se sekvenca pravila sve dok se ne dobije rečenica sastavljena samo od terminalnih simbola n U slučaju definicije kompletnog jezika, startni simbol je obično <program> n

Primer opisa prostog jezika <program> : : = begin <niz_naredbi> end n <niz_naredbi> :

Primer opisa prostog jezika <program> : : = begin <niz_naredbi> end n <niz_naredbi> : : = <naredba> |<naredba>; <niz_naredbi> n <naredba> : : = <promenljiva> : = <izraz> n <promenljiva> : : = A | B | C n <izraz> : : = <promenljiva> + <promenljiva> | <promenljiva> - <promenljiva> | <promenljiva> n

Izvođenje na osnovu gramatike <program> begin <niz_naredbi> end begin <naredba>; <niz_naredbi> end begin <promenljiva>:

Izvođenje na osnovu gramatike <program> begin <niz_naredbi> end begin <naredba>; <niz_naredbi> end begin <promenljiva>: = <izraz>; <niz_naredbi> end begin A : = B + <promenljiva>; <niz_naredbi> end begin A : = B + C ; <naredba> end begin A : = B + C ; <promenljiva> : = <izraz> end begin A : = B + C ; B : = <promenljiva> end begin A : = B + C ; B : = C end

Primer gramatike jedne proste naredbe dodeljivanja <dodeljivanje> : : = <id> : = <izraz>

Primer gramatike jedne proste naredbe dodeljivanja <dodeljivanje> : : = <id> : = <izraz> n <id> : : = A | B | C n <izraz> : : = <id> + <izraz> | <id> * <izraz> | (<izraz>) | <id> n

Primer izvođenje naredbe A : = B * (A + C) n n n

Primer izvođenje naredbe A : = B * (A + C) n n n n n <dodeljivanje> <id> : = <izraz> A : = <id> * <izraz> A : = B * (<izraz>) A : = B * (<id> + <izraz>) A : = B * (A + <id>) A : = B * (A + C)

Sintaksno stablo

Sintaksno stablo

n n FORTRAN notacija Proširena Bekusova normalna forma Metalingvističke formule – imaju oblik naredbi

n n FORTRAN notacija Proširena Bekusova normalna forma Metalingvističke formule – imaju oblik naredbi jezika Metalingvističke promenljive služe za označavanje sintaksnih kategorija n n n reč ili grupa reči napisanih malim slovima i povezanih znakom za povezivanje (podvlačenje), npr. lista, ime_funkcije; niz od jednog ili više slova sa indeksom na kraju, npr. e 1, e 2, e 3; jedan od gore navedenih oblika u kome su reči podvučene ili napisane kurzivom, npr. d 1, tip, a, ili d 1, tip, a. Izdvajanje sintaksnih kategorija na ovaj način vrši se kada na njih treba da se obrati posebna pažnja, npr. tako se izdvajaju elementi koji treba pri

n n n Elementi jezika FORTRAN su osnovni simboli jezika, terminali – metalingvistički operatori.

n n n Elementi jezika FORTRAN su osnovni simboli jezika, terminali – metalingvistički operatori. Oni označavaju sami sebe, a pišu se kao nizovi sastavljeni od specijalnih znakova i velikih slova azbuke jezika FORTRAN. Par zagrada [, ] ukazuje na opcione elemente tj. element obuhvaćen njima može da se izostavi. Primer: DO s [, ] i = e 1, e 2, [, e 3] Simbol ponavljanja. . . postavlja se uz druge sintaksne elemente i označava da element koji stoji ispred njega može da se ponovi više puta sukcesivno. Primer: INTEGER v

COBOL notacija Metalingvističke formule liče naredbama jezika n Obavezne reči se pišu velikim slovima

COBOL notacija Metalingvističke formule liče naredbama jezika n Obavezne reči se pišu velikim slovima i podvlače se n Reči napisane malim slovima se u programu zamenjuju uvedenim rečima n Uglaste zagrade za opcione elemente n Velike zagrade za alternative n. . . za ponavljanje n Tačka je obavezan znak (za završetak n

ADA notacija - modifikovana Bekusova normalna forma n Koristi sledeće metasimbole: n n n

ADA notacija - modifikovana Bekusova normalna forma n Koristi sledeće metasimbole: n n n n n = | ili; [] {}. . -- definiše se kao, po definiciji je; opcioni element; ponavljanje proizvoljan broj puta (i nijednom); interval, npr. 1. . n; komentar identifikator = slovo{[znak-za-povezivanje]slovoili-cifra} slovo-ili-cifra = slovo|cifra niz-znakova = “{znak}”

C notacija Sintaksne kategorije (neterminalni simboli) napisane su kurzivom, terminalni simboli u typewriter stilu

C notacija Sintaksne kategorije (neterminalni simboli) napisane su kurzivom, terminalni simboli u typewriter stilu n Alternativne kategorije prikazuju se u posebnim linijama, osim u slučaju više kratkih alternativa koje se nabrajaju u jednom redu uz napomenu “jedna od” n Opcioni završni simboli označeni su indeksom “opt” n

BS notacija n n n Međunarodni standard za definisanje metajezika za opis programskih jezika

BS notacija n n n Međunarodni standard za definisanje metajezika za opis programskih jezika Zasniva se na Wirtovoj modifikovanoj Bekusovoj Normalnoj formi Zagrade {, } označavaju ponavljanje (uključujući i nijednom) Zagrade [ ] označavaju opcione elemente Terminalni simboli u opisu sintakse stavljaju se između znakova navoda Koristi se eksplicitno definisan simbol za povezivanje metalingvističkih promenljivih, tako da ne moraju da budu samo od jedne reči

BS notacija n n n Postoji poseban simbol za označavanje znaka nekog pravila Postoji

BS notacija n n n Postoji poseban simbol za označavanje znaka nekog pravila Postoji poseban znak za izuzetke npr. comment = “comment” Postoji eksplicitno definisan operator ponavljanja, npr. fortran_oznaka = 5 * slovo_ili_razmak U opisu sintakse mogu se koristiti komentari koji se stavljaju između zagrada (* i *) Postoji mehanizam poznat pod nazivom specijalni nizovi tako da korisnici imaju mogućnosti da prošire metajezik

Preporuke n Ovom notacijom preporučuju se neki metajezički simboli n n n n *

Preporuke n Ovom notacijom preporučuju se neki metajezički simboli n n n n * ponavljanje izuzetak _ simbol povezivanja | simbol za razdvajanje alternativa = operator definisanja; ; terminator Primeri: n n n slovo = “A” “B” “C” “D” “E” “F” “G” H” “I” “O” “U” samoglasnik = “A” “E” “U” “I” “O” suglasnik = slovo - samoglasnik.

Sintaksni dijagrami Jedno od sredstava za formalnu definiciju sintakse programskih jezika n Usmereni grafovi

Sintaksni dijagrami Jedno od sredstava za formalnu definiciju sintakse programskih jezika n Usmereni grafovi kojima se prikazuju pravilni putevi u generisanju neke programske konstrukcije n

Sintaksni dijagrami n PASCAL n FORTRAN

Sintaksni dijagrami n PASCAL n FORTRAN

Pitanja ? ? ?

Pitanja ? ? ?

Pitanja - ponavljanje n n n n Šta je sintaksa programskog jezika? Definisati pojam

Pitanja - ponavljanje n n n n Šta je sintaksa programskog jezika? Definisati pojam leksema. Koja standardna sredstva se koriste za opis sintakse programskog jezika? Iz kojih razloga je važan formalni opis sintakse programskog jezika? Koja notacija predstavlja međunarodni standard za definisanje metajezika za opis programskih jezika? Šta su metalinvistička pravila? Šta su metapromenljive? Šta su sintaksni dijagrami?