Sintaksa programskih jezika

Slides:



Advertisements
Similar presentations
Predavanje br. 7 Formiranje GIS-a II Relacione klase.
Advertisements

Programiranje kroz aplikacije
Programi zasnovani na prozorima
Uvod u programiranje - matematika – VI predavanje
Računarstvo i informatika
Petlje WHILE – WEND.
predavanja v.as.mr. Samir Lemeš
4.1 Vizualni (grafički) HTML uređivači
PONAVLJANJE CheckBox Koristi se za rešavanje zadataka gde je potrebno omogućiti uključivanje ili isključivanje jedne ili više opcija. Važna svojstva: –Checked.
OSNOVE PROGRAMIRANJA LEKCIJA I - ALGORITMI
Algoritamske/programske strukture
Algoritmi raspoređivanja
Programi,Podaci,Varijable,Računanje- Uvod
Programiranje - Blokovi naredbi i logički tipovi –
PROGRAMIRANJE MENIJA.
CheckBox RadioButton RadioGroup
Naredbe ciklusa.
Present Simple Tense/Sadašnje prosto vreme
The Present Perfect Continuous Tense
Tvorba Present Simple se tvori od infinitivne osnove glagola
Projekat strukturnog kabliranja.
Upitni jezik SQL.
Microsoft Office 2007 MS Office je programski paket koji sadrži više programa: MS Word – program za obradu teksta MS Excel – program za izradu tabela sa.
Quick Basic.
SEMINARSKI RAD MS WORD.
Petlje FOR - NEXT.
REPEAT…UNTIL Naredbe ciklusa.
PROGRAMSKE PETLJE Milenković Gabrijela.
Komponente izbora i kontejnerske komponente
Uvod u HTML Zoltan Geller 2017
Klauzule GROUP BY i HAVING
KREIRANJE OBJEKATA.
Java Script.
Europski dan programiranja
OSNOVE PROGRAMSKOG JEZIKA C
Izrada web-stranica.
RAZGRANATA STRUKTURA Zadaci i rešenja
Reference ćelije i opsega
Elektrotehnički fakultet – Podgorica Operativni sistemi
Jezici za obeležavanje
14 UNUTRAŠNJE I ANONIMNE KLASE
Elementi programskog jezika PASCAL
HTML.
Naredba Case Višestruko grananje.
Page Layout Podešavanje stranica.
Element form Milena Kostadinović.
MessageBox.
Pojmovi digitalnog zapisa
Ključne reči,identifikatori, konstante i promenljive
PROGRAMSKI JEZIK PASCAL
MATEMATIČKI FAKULTET, UNIVERZITET U BEOGRADU
Lazarus okruženje TIPOVI UNIT-a
Osnovni simboli jezika Pascal
Razvojne okoline Kolegij: Programski jezik C++ Ak. god. 2017/2018
Do While ... Loop struktura
Virtualizacija poslovnih procesa metodom „Swimlane“ dijagrama
Osnovne karakteristike
Programiranje – Small Basic
Strukture podataka i algoritmi 5. VRIJEME IZVRŠAVANJA ALGORITMA
Nizovi.
Naredbe u php-u.
Programski jezik C++ - Vježbe - 5. dio
Programski jezik Python
Programiranje - Naredbe za kontrolu toka programa – 3. dio
LimeSurvey Uvjetni prikaz pitanja Internetska istraživanja
7. Baze podataka Postavke MS Accessa.
Ponavljanje Pisana provjera
Programiranje - Naredbe za kontrolu toka programa – 1. dio
INTERPOLACIJA PO DIJELOVIMA POLINOMIMA
Presentation transcript:

Sintaksa programskih jezika 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 smisla ili 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 njihovom interpretacijom 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 predstavljaju imena 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)

Sintaksno stablo

FORTRAN notacija Proš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 znakom za povezivanje (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 napisane kurzivom, npr. d1, tip, a, ili d1, 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 pisanju programa da se zamene konkretnim vrednostima.

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 = e1,e2,[,e3] 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 [,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 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 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 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 za opis programskih jezika? Šta su metalinvistička pravila? Šta su metapromenljive? Šta su sintaksni dijagrami?