2-Sintaksa 3

Embed Size (px)

DESCRIPTION

1

Citation preview

  • Programski jeziciSintaksa programskih jezika

  • Sintaksa programskih jezikaFormalan opis sintakseBekusova normalna forma (BNF notacija)FORTRAN notacijaCOBOL notacijaC notacijaADA notacijaBS notacijaSintaksni dijagrami

  • SintaksaSintaksa - relacije (veze) izmeu znakova ili grupa znakova, nezavisno od njihovog smisla ili naina interpretacije ili korienja (ISO 07.02.04) Semantika - relacije (veze) izmeu znakova ili grupa znakova sa njihovim smislom, nezavisno od njihove interpretacije i korienja (ISO 07.02.05) Pragmatika - relacije (veze) izmeu znakova ili grupa znakova sa njihovom interpretacijom i korienjem (ISO 07.02.08.)

  • Sintaksa programskih jezikaSintaksa - skup pravila i dogovora kojima se opisuju pravilne konstrukcije (pravilne reenice) jezikaSintaksa opisuje strukturu jezikih izraza i predstavlja skup pravila kojima se definie struktura jezikaElementi programa najnieg nivoa, koji imaju jeziki smisao, nazivaju se lekseme (osnovni, terminalni simboli)

  • Formalan opis sintakseJedan od osnovnih uslova standardizacije jezikaOsnova za projektovanje kompilatoraOmoguava primenu standardnih metoda zaLeksiku analizu Sintaksnu analizu Semantiku analizuGenerisanje objektnog koda i njegovu optimizaciju Standardna sredstva za opis sintakseMetajezici Sintaksni dijagrami

  • Formalan opis sintakseBackus i Chomsky krajem pedesetih godina Chomsky formalne gramatike za opis jezika (rekurzivno prebrojive, kontekstne, bezkontekstne i regularne) Gramatike tipa nula rekurzivno prebrojive, odgovaraju konceptu algoritmaRegularne definiu najuu klasu jezika Kontekstne konstrukcije programskih jezika Mnogi elementi programskih jezika (npr. konstante) opisuju se regularnim gramatikama

  • Bekusova normalna formaAlgol 58 predstavljen 1959. godine, prvi put koritenjem nove notacije za opis sintakse programskih jezika (Backus)Peter Naur neznatno menja notaciju i koristi je za opis sintakse programskog jezika Algol 60Revidirana notacija poznata je kao Backus-Naurova normalna forma ili samo BNFBNF predstavlja osnovu za definisanje drugih, slinih metajezika

  • Bekusova normalna formaBNF notacija se sastoji od konanog broja reenica koje se nazivaju metalingvistike formule (metalingvistika pravila, sintaksna pravila)U okviru pravila koriste se sledei metasimboli: ::= definie se kao, po definiciji je, | ili (slui za odvajanje moguih varijanti u definiciji)Metapromenljive (pomone promenljive) su simboli metajezika koji predstavljaju imena sintaksnih kategorija (strukturnih jedinica)

  • PravilaOpti oblik metalingvistikih pravila je: ::= ::= | | Sa leve strane pravila stoji metalingvistika promenljiva kojom je oznaen definisani pojamSa desne strane se nalazi konaan broj metalingvistikih promenljivih ili simbola jezika koji se definie (terminalnih simbola ili leksema)

  • Primeri metalingvistikih pravila

    ::= 0|1|2|3|4|5|6|7|8|9 ::= := ::= if then | if then else ::= |

  • Generisanje pravilnih reenicaKree se od posebnog neterminalnog simbola koji se naziva startnimPrimenjuje se sekvenca pravila sve dok se ne dobije reenica sastavljena samo od terminalnih simbolaU sluaju definicije kompletnog jezika, startni simbol je obino

  • Primer opisa prostog jezika ::= begin end ::= |; ::= := ::= A | B | C ::= + | - |

  • Izvoenje na osnovu gramatike begin end begin ; end begin := ; endbegin A := ; end begin A := B + ; end begin A := B + C ; end begin A := B + C ; end begin A := B + C ; := end begin A := B + C ; B := end begin A := B + C ; B := end begin A := B + C ; B := C end

  • Primer gramatike jedne proste naredbe dodeljivanja ::= := ::= A | B | C ::= + | * | () |

  • Primer izvoenje naredbe A := B * (A + C) := A := A := * A := B * A := B * () A := B * ( + ) A := B * (A + ) A := B * (A + ) A := B * (A + C)

  • Sintaksno stablo

  • FORTRAN notacijaProirena Bekusova normalna formaMetalingvistike formule imaju oblik naredbi jezikaMetalingvistike promenljive slue za oznaavanje sintaksnih kategorijare ili grupa rei napisanih malim slovima i povezanih znakom za povezivanje (podvlaenje), npr. lista, ime_funkcije; niz od jednog ili vie slova sa indeksom na kraju, npr. e1, e2, e3; jedan od gore navedenih oblika u kome su rei podvuene ili napisane kurzivom, npr. d1, tip, a, ili d1, tip, a. Izdvajanje sintaksnih kategorija na ovaj nain vri se kada na njih treba da se obrati posebna panja, npr. tako se izdvajaju elementi koji treba pri pisanju programa da se zamene konkretnim vrednostima.

  • Elementi jezika FORTRAN su osnovni simboli jezika, terminali metalingvistiki operatori. Oni oznaavaju sami sebe, a piu se kao nizovi sastavljeni od specijalnih znakova i velikih slova azbuke jezika FORTRAN.Par zagrada [, ] ukazuje na opcione elemente tj. element obuhvaen njima moe da se izostavi. Primer: DO s [,] i = e1,e2,[,e3]Simbol ponavljanja ..... postavlja se uz druge sintaksne elemente i oznaava da element koji stoji ispred njega moe da se ponovi vie puta sukcesivno. Primer: INTEGER v [,v ]...

  • COBOL notacijaMetalingvistike formule lie naredbama jezikaObavezne rei se piu velikim slovima i podvlae seRei napisane malim slovima se u programu zamenjuju uvedenim reimaUglaste zagrade za opcione elementeVelike zagrade za alternative... za ponavljanjeTaka je obavezan znak (za zavretak reenice)

  • ADA notacija - modifikovana Bekusova normalna formaKoristi sledee metasimbole:=definie se kao, po definiciji je;| ili; [ ] opcioni element;{} ponavljanje proizvoljan broj puta (i nijednom);.. interval, npr. 1..n;--komentaridentifikator = slovo{[znak-za-povezivanje]slovo-ili-cifra} slovo-ili-cifra = slovo|cifra niz-znakova = {znak}

  • C notacijaSintaksne kategorije (neterminalni simboli) napisane su kurzivom, terminalni simboli u typewriter stiluAlternativne kategorije prikazuju se u posebnim linijama, osim u sluaju vie kratkih alternativa koje se nabrajaju u jednom redu uz napomenu jedna odOpcioni zavrni simboli oznaeni su indeksom opt

  • BS notacijaMeunarodni standard za definisanje metajezika za opis programskih jezikaZasniva se na Wirtovoj modifikovanoj Bekusovoj Normalnoj formiZagrade {,} oznaavaju ponavljanje (ukljuujui i nijednom)Zagrade [ ] oznaavaju opcione elementeTerminalni simboli u opisu sintakse stavljaju se izmeu znakova navodaKoristi se eksplicitno definisan simbol za povezivanje metalingvistikih promenljivih, tako da ne moraju da budu samo od jedne rei

  • BS notacijaPostoji poseban simbol za oznaavanje 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 izmeu zagrada (* i *)Postoji mehanizam poznat pod nazivom specijalni nizovi tako da korisnici imaju mogunosti da proire metajezik

  • PreporukeOvom notacijom preporuuju se neki metajeziki simboli* ponavljanje- izuzetak_ simbol povezivanja| simbol za razdvajanje alternativa= operator definisanja;; terminator Primeri: slovo = A B C D E F G H I O Usamoglasnik = A E U I Osuglasnik = slovo - samoglasnik.

  • Sintaksni dijagramiJedno od sredstava za formalnu definiciju sintakse programskih jezikaUsmereni grafovi kojima se prikazuju pravilni putevi u generisanju neke programske konstrukcije

  • Sintaksni dijagramiPASCAL

    FORTRAN

  • Pitanja

    ???

  • Pitanja - ponavljanjeta je sintaksa programskog jezika?Definisati pojam leksema.Koja standardna sredstva se koriste za opis sintakse programskog jezika?Iz kojih razloga je vaan formalni opis sintakse programskog jezika?Koja notacija predstavlja meunarodni standard za definisanje metajezika za opis programskih jezika?ta su metalinvistika pravila?ta su metapromenljive?ta su sintaksni dijagrami?