1 / 28

Programski jezici

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.

yagil
Download Presentation

Programski jezici

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programski jezici Sintaksa programskih jezika

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  16. Sintaksno stablo

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

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

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

  20. 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}”

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

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

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

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

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

  26. Sintaksni dijagrami • PASCAL • FORTRAN

  27. Pitanja ???

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

More Related