280 likes | 555 Views
Programski jezici. Sintaksa programskih jezika. Sintaksa programskih jezika. Formalan opis sintakse Bekusova normalna forma (BNF notacija) FORTRAN notacija COBOL notacija C notacija ADA notacija BS notacija Sintaksni dijagrami. Sintaksa.
E N D
Programski jezici Sintaksa programskih jezika
Sintaksa programskih jezika • Formalan opis sintakse • Bekusova normalna forma (BNF notacija) • FORTRAN notacija • COBOL notacija • C notacija • ADA notacija • BS notacija • Sintaksni dijagrami
Sintaksa • Sintaksa - relacije (veze) između znakova ili grupa znakova, nezavisno od njihovog smislaili načina interpretacije ili korišćenja (ISO 07.02.04) • Semantika - relacije (veze) između znakova ili grupa znakova sa njihovim smislom,nezavisno od njihove interpretacije i korišćenja (ISO 07.02.05) • Pragmatika - relacije (veze) između znakova ili grupa znakova sa njihovominterpretacijom i korišćenjem (ISO 07.02.08.)
Sintaksa programskih jezika • Sintaksa - skup pravila i dogovora kojima se opisuju pravilne konstrukcije (pravilne rečenice) jezika • Sintaksa opisuje strukturu jezičkih izraza i predstavlja skup pravila kojima se definiše struktura jezika • Elementi programa najnižeg nivoa, koji imaju jezički smisao, nazivaju se lekseme (osnovni, terminalni simboli)
Formalan opis sintakse • Jedan od osnovnih uslova standardizacije jezika • Osnova za projektovanje kompilatora • Omogućava primenu standardnih metoda za • Leksičku analizu • Sintaksnu analizu • Semantičku analizu • Generisanje objektnog koda i njegovu optimizaciju • Standardna sredstva za opis sintakse • Metajezici • Sintaksni dijagrami
Formalan opis sintakse • Backus i Chomsky – krajem pedesetih godina • Chomsky – formalne gramatike za opis jezika (rekurzivno prebrojive, kontekstne, bezkontekstne i regularne) • Gramatike tipa nula – rekurzivno prebrojive, odgovaraju konceptu algoritma • Regularne – definišu najužu klasu jezika • Kontekstne – konstrukcije programskih jezika • Mnogi elementi programskih jezika (npr. konstante) opisuju se regularnim gramatikama
Bekusova normalna forma • Algol 58 predstavljen 1959. godine, prvi put korištenjem nove notacije za opis sintakse programskih jezika (Backus) • Peter Naur neznatno menja notaciju i koristi je za opis sintakse programskog jezika Algol 60 • Revidirana notacija poznata je kao Backus-Naurova normalna forma ili samo BNF • BNF predstavlja osnovu za definisanje drugih, sličnih metajezika
Bekusova normalna forma • 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 predstavljajuimena sintaksnih kategorija (strukturnih jedinica)<celi broj bez znaka> <celi broj><aritmetički izraz>
Pravila • Opšti oblik metalingvističkih pravila je: • <leva strana> ::= <desna strana> • <sintaksna kategorija> ::= <varijanta1> | <varijanta2>|<varijanta3> • Sa leve strane pravila stoji metalingvistička promenljiva kojom je označen definisani pojam • Sa desne strane se nalazi konačan broj metalingvističkih promenljivih ili simbola jezika koji se definiše (terminalnih simbola ili leksema)
Primeri metalingvističkih pravila • <cifra> ::= 0|1|2|3|4|5|6|7|8|9 • <dodeljivanje> ::= <promenljiva> := <izraz> • <if_naredba> ::= if <logizraz> then <naredba>| if <logizraz> then <naredba> else <naredba> • <ceo broj bez znaka> ::= <cifra> | <ceo broj bez znaka>
Generisanje pravilnih rečenica • Kreće se od posebnog neterminalnog simbola koji se naziva startnim • Primenjuje se sekvenca pravila sve dok se ne dobije rečenica sastavljena samo od terminalnih simbola • U slučaju definicije kompletnog jezika, startni simbol je obično <program>
Primer opisa prostog jezika • <program> ::= begin <niz_naredbi> end • <niz_naredbi> ::= <naredba> |<naredba>;<niz_naredbi> • <naredba> ::= <promenljiva> := <izraz> • <promenljiva> ::= A | B | C • <izraz> ::= <promenljiva> + <promenljiva> | <promenljiva> - <promenljiva> | <promenljiva>
Izvođenje na osnovu gramatike <program> begin <niz_naredbi> end begin <naredba>;<niz_naredbi> end begin <promenljiva>:= <izraz>;<niz_naredbi> end begin A := <izraz>;<niz_naredbi> end begin A := B + <promenljiva>;<niz_naredbi> end begin A := B + C ; <niz_naredbi> end begin A := B + C ; <naredba> end begin A := B + C ; <promenljiva> := <izraz> end begin A := B + C ; B := <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> • <id> ::= A | B | C • <izraz> ::= <id> + <izraz> | <id> * <izraz> | (<izraz>) | <id>
Primer izvođenje naredbe A := B * (A + C) • <dodeljivanje> • <id> := <izraz> • A := <izraz> • A := <id> * <izraz> • A := B * <izraz> • A := B * (<izraz>) • A := B * (<id> + <izraz>) • A := B * (A + <izraz>) • A := B * (A + <id>) • A := B * (A + C)
FORTRAN notacijaProširena Bekusova normalna forma • Metalingvističke formule – imaju oblik naredbi jezika • Metalingvističke promenljive služe za označavanje sintaksnih kategorija • reč ili grupa reči napisanih malim slovima i povezanih znakomzapovezivanje (podvlačenje), npr. lista, ime_funkcije; • niz od jednog ili više slova sa indeksom na kraju, npr. e1, e2, e3; • jedan od gore navedenih oblika u kome su reči podvučene ili napisanekurzivom, npr. d1, tip, a, ili d1, tip, a. Izdvajanje sintaksnih kategorijana ovaj način vrši se kada na njih treba da se obrati posebna pažnja,npr. tako se izdvajaju elementi koji treba pri pisanju programa da sezamene konkretnim vrednostima.
Elementi jezika FORTRAN su osnovnisimboli jezika, terminali – metalingvistički operatori. Oni označavaju sami sebe, a pišu se kao nizovi sastavljeniod specijalnih znakova i velikih slova azbuke jezika FORTRAN. • Par zagrada [, ]ukazuje na opcione elementetj. element obuhvaćen njimamože da se izostavi. Primer:DO s [,] i = e1,e2,[,e3] • Simbol ponavljanja ..... postavlja se uz druge sintaksne elemente ioznačava da element koji stoji ispred njega može da se ponovi više putasukcesivno. Primer: INTEGER v [,v ]...
COBOL notacija • Metalingvističke formule liče naredbama jezika • Obavezne reči se pišu velikim slovima i podvlače se • Reči napisane malim slovima se u programu zamenjuju uvedenim rečima • Uglaste zagrade za opcione elemente • Velike zagrade za alternative • ... za ponavljanje • Tačka je obavezan znak (za završetak rečenice)
ADA notacija - modifikovana Bekusova normalna forma • Koristi sledeće metasimbole: • =definiše se kao, po definiciji je; • | ili; • [] opcioni element; • {} ponavljanje proizvoljan broj puta (i nijednom); • .. interval, npr. 1..n; • --komentar • identifikator = slovo{[znak-za-povezivanje]slovo-ili-cifra} • slovo-ili-cifra = slovo|cifra • niz-znakova = “{znak}”
C notacija • Sintaksne kategorije (neterminalni simboli) napisane su kurzivom, terminalni simboli u typewriter stilu • 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” • Opcioni završni simboli označeni su indeksom “opt”
BS notacija • Međunarodni standard za definisanje metajezika zaopis programskih jezika • Zasniva se na Wirtovoj modifikovanoj BekusovojNormalnoj 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čkihpromenljivih, tako da ne moraju da budu samo od jedne reči
BS notacija • 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đuzagrada (* i *) • Postoji mehanizam poznat pod nazivom specijalni nizovi tako dakorisnici imaju mogućnosti da prošire metajezik
Preporuke • Ovom notacijom preporučuju se neki metajezički simboli • *ponavljanje • -izuzetak • _simbol povezivanja • | simbol za razdvajanje alternativa • =operator definisanja; • ; terminator • Primeri: • 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 • Usmereni grafovi kojima se prikazuju pravilni putevi u generisanju neke programske konstrukcije
Sintaksni dijagrami • PASCAL • FORTRAN
Pitanja ???
Pitanja - ponavljanje Š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 zaopis programskih jezika? Šta su metalinvistička pravila? Šta su metapromenljive? Šta su sintaksni dijagrami?