Interpretacija programa Semantička analiza. Krunoslav Puljić 2013/2014

Σχετικά έγγραφα
ELEKTROTEHNIČKI ODJEL

(P.I.) PRETPOSTAVKA INDUKCIJE - pretpostavimo da tvrdnja vrijedi za n = k.

Strukture podataka i algoritmi 1. kolokvij 16. studenog Zadatak 1

7 Algebarske jednadžbe

Operacije s matricama

M086 LA 1 M106 GRP. Tema: Baza vektorskog prostora. Koordinatni sustav. Norma. CSB nejednakost

Interpretacija programa Potisni automat. Krunoslav Puljić 2015/2016

Pismeni ispit iz matematike Riješiti sistem jednačina i diskutovati rješenja sistema u zavisnosti od parametra: ( ) + 1.

3.1 Granična vrednost funkcije u tački

Trigonometrija 2. Adicijske formule. Formule dvostrukog kuta Formule polovičnog kuta Pretvaranje sume(razlike u produkt i obrnuto

2 tg x ctg x 1 = =, cos 2x Zbog četvrtog kvadranta rješenje je: 2 ctg x

Riješeni zadaci: Limes funkcije. Neprekidnost

a M a A. Može se pokazati da je supremum (ako postoji) jedinstven pa uvodimo oznaku sup A.

Osnovni primer. (Z, +,,, 0, 1) je komutativan prsten sa jedinicom: množenje je distributivno prema sabiranju

18. listopada listopada / 13

Riješeni zadaci: Nizovi realnih brojeva

TRIGONOMETRIJSKE FUNKCIJE I I.1.

Pismeni ispit iz matematike GRUPA A 1. Napisati u trigonometrijskom i eksponencijalnom obliku kompleksni broj, zatim naći 4 z.

PARCIJALNI IZVODI I DIFERENCIJALI. Sama definicija parcijalnog izvoda i diferencijala je malo teža, mi se njome ovde nećemo baviti a vi ćete je,

RIJEŠENI ZADACI I TEORIJA IZ

( , treći kolokvij) 3. Na dite lokalne ekstreme funkcije z = x 4 + y 4 2x 2 + 2y 2 3. (20 bodova)

DISKRETNA MATEMATIKA - PREDAVANJE 7 - Jovanka Pantović

Dijagonalizacija operatora

Program testirati pomoću podataka iz sledeće tabele:

Elementi spektralne teorije matrica

Kontrolni zadatak (Tačka, prava, ravan, diedar, poliedar, ortogonalna projekcija), grupa A

INTEGRALNI RAČUN. Teorije, metodike i povijest infinitezimalnih računa. Lucija Mijić 17. veljače 2011.

Teorijske osnove informatike 1

Matematička analiza 1 dodatni zadaci

POTPUNO RIJEŠENIH ZADATAKA PRIRUČNIK ZA SAMOSTALNO UČENJE

radni nerecenzirani materijal za predavanja R(f) = {f(x) x D}

Funkcije dviju varjabli (zadaci za vježbu)

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET SIGNALI I SISTEMI. Zbirka zadataka

Kaskadna kompenzacija SAU

Prikaz sustava u prostoru stanja

MATEMATIKA I 1.kolokvij zadaci za vježbu I dio

Sume kvadrata. mn = (ax + by) 2 + (ay bx) 2.

numeričkih deskriptivnih mera.

Iskazna logika 3. Matematička logika u računarstvu. novembar 2012

2. Ako je funkcija f(x) parna onda se Fourierov red funkcije f(x) reducira na Fourierov kosinusni red. f(x) cos

IZVODI ZADACI (I deo)

IZVODI ZADACI ( IV deo) Rešenje: Najpre ćemo logaritmovati ovu jednakost sa ln ( to beše prirodni logaritam za osnovu e) a zatim ćemo

PRIMJER 3. MATLAB filtdemo

( ) ( ) Zadatak 001 (Ines, hotelijerska škola) Ako je tg x = 4, izračunaj

21. ŠKOLSKO/OPĆINSKO/GRADSKO NATJECANJE IZ GEOGRAFIJE GODINE 8. RAZRED TOČNI ODGOVORI

ZBIRKA POTPUNO RIJEŠENIH ZADATAKA

PRAVA. Prava je u prostoru određena jednom svojom tačkom i vektorom paralelnim sa tom pravom ( vektor paralelnosti).

41. Jednačine koje se svode na kvadratne

Zadaci iz trigonometrije za seminar

- pravac n je zadan s točkom T(2,0) i koeficijentom smjera k=2. (30 bodova)

radni nerecenzirani materijal za predavanja

Linearna algebra 2 prvi kolokvij,

Cauchyjev teorem. Postoji više dokaza ovog teorema, a najjednostvniji je uz pomoć Greenove formule: dxdy. int C i Cauchy Riemannovih uvjeta.

1 Promjena baze vektora

2.2 Srednje vrijednosti. aritmetička sredina, medijan, mod. Podaci (realizacije varijable X): x 1,x 2,...,x n (1)

XI dvoqas veжbi dr Vladimir Balti. 4. Stabla

Linearna algebra 2 prvi kolokvij,

Matematičke metode u marketingumultidimenzionalno skaliranje. Lavoslav ČaklovićPMF-MO

MATRICE I DETERMINANTE - formule i zadaci - (Matrice i determinante) 1 / 15

1.4 Tangenta i normala

Zadaci iz Osnova matematike

Neka su A i B skupovi. Kažemo da je A podskup od B i pišemo A B ako je svaki element skupa A ujedno i element skupa B. Simbolima to zapisujemo:

Numerička matematika 2. kolokvij (1. srpnja 2009.)

Programiranje 1 6. predavanje

9. GRANIČNA VRIJEDNOST I NEPREKIDNOST FUNKCIJE GRANIČNA VRIJEDNOST ILI LIMES FUNKCIJE

Zadaci sa prethodnih prijemnih ispita iz matematike na Beogradskom univerzitetu

Pošto pretvaramo iz veće u manju mjernu jedinicu broj 2.5 množimo s 1000,

4. poglavlje (korigirano) LIMESI FUNKCIJA

Sintaksa i semantika u logici

Apsolutno neprekidne raspodele Raspodele apsolutno neprekidnih sluqajnih promenljivih nazivaju se apsolutno neprekidnim raspodelama.

SISTEMI NELINEARNIH JEDNAČINA

1. Pojam fazi skupa. 2. Pojam fazi skupa. 3. Funkcija pripadnosti, osobine i oblici. 4. Funkcija pripadnosti, osobine i oblici

Programski prevodioci

Veleučilište u Rijeci Stručni studij sigurnosti na radu Akad. god. 2011/2012. Matematika. Monotonost i ekstremi. Katica Jurasić. Rijeka, 2011.

SEMINAR IZ KOLEGIJA ANALITIČKA KEMIJA I. Studij Primijenjena kemija

π π ELEKTROTEHNIČKI ODJEL i) f (x) = x 3 x 2 x + 1, a = 1, b = 1;

Zavrxni ispit iz Matematiqke analize 1

IspitivaƬe funkcija: 1. Oblast definisanosti funkcije (ili domen funkcije) D f

Sistemi veštačke inteligencije primer 1

( , 2. kolokvij)

I.13. Koliki je napon između neke tačke A čiji je potencijal 5 V i referentne tačke u odnosu na koju se taj potencijal računa?

3 Populacija i uzorak

( x) ( ) ( ) ( x) ( ) ( x) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )

Verovatnoća i Statistika I deo Teorija verovatnoće (zadaci) Beleške dr Bobana Marinkovića

Program za tablično računanje Microsoft Excel

Ispitivanje toka i skiciranje grafika funkcija

KONVEKSNI SKUPOVI. Definicije: potprostor, afin skup, konveksan skup, konveksan konus. 1/5. Back FullScr

Doc. dr. sc. Markus Schatten. Zbirka rješenih zadataka iz baza podataka

TRIGONOMETRIJA TROKUTA

Najjednostavnija metoda upravljanja slijedom instrukcija:

2log. se zove numerus (logaritmand), je osnova (baza) log. log. log =

NOMENKLATURA ORGANSKIH SPOJEVA. Imenovanje aromatskih ugljikovodika

Funkcija gustoće neprekidne slučajne varijable ima dva bitna svojstva: 1. Nenegativnost: f(x) 0, x R, 2. Normiranost: f(x)dx = 1.

VJEROJATNOST I STATISTIKA Popravni kolokvij - 1. rujna 2016.

MATEMATIKA Pokažite da za konjugiranje (a + bi = a bi) vrijedi. a) z=z b) z 1 z 2 = z 1 z 2 c) z 1 ± z 2 = z 1 ± z 2 d) z z= z 2

IZRAČUNAVANJE POKAZATELJA NAČINA RADA NAČINA RADA (ISKORIŠĆENOSTI KAPACITETA, STEPENA OTVORENOSTI RADNIH MESTA I NIVOA ORGANIZOVANOSTI)

REKURZIVNE FUNKCIJE PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK. Diplomski rad. Voditelj rada: Doc.dr.sc.

5. Karakteristične funkcije

Periodičke izmjenične veličine

INTELIGENTNO UPRAVLJANJE

Transcript:

Interpretacija programa Semantička analiza Krunoslav Puljić 2013/2014

Semantička analiza Prevođenje Analiza Leksička analiza Sintaksna analiza Semantička analiza Sinteza Generiranje koda u međujeziku Optimizacija međuprikaza Generiranje objektnog programa Optimizacija objektnog programa Semantička analiza je treći korak u fazi analize

Semantička analiza Tablica znakova Leksički analizator Sintaksni analizator Semantički analizator Izvorni program Niz leksičkih jedinki Sintaksno stablo

Podatkovna struktura L.A. Podatkovnu strukturu leksičkog analizatora čine: Izvorni program Tablica uniformnih znakova Znakovi su zapisani onim redoslijedom kojim su leksičke jedinke zadane u izvornom programu Tablica znakova Prati i razne parametre leksičkih jedinki Sadrži: tablicu identifikatora, tablicu konstanti i tablicu ključnih riječi, operatora i specijalnih znakova

Mnemonik2 IzracunajCijenu() { ako (Kolicina >20) Cijena = 1000; inace Cijena = 1200; NovaCijena = Cijena; } Tablica znakova Leksička jedinka Pomak 00 ako 01 onda 02 inace...... 20 > 21 =...... 40 ; 41 ( 42 ) 43 { 44 }...... 60 IzracunajCijenu 61 Kolicina...... 75 20 IzracunajCijenu ( ) CR LF { CR LF TAB ako ( Kolicina > 20 )... 49 60 5A 41 5A 42 5A 43 5A 00 5A 41 49 61 I Z A Z B Z C Z null Z A I a IDN,I.C. KROS,( KROS,) KROS,{ KROS,ako KROS,( IDN,Kol. Hex ASC Mn2

Semantička analiza primjeri Je li x varijabla, polje ili funkcija? Da bismo znali što je x u izrazu x = a + b; moramo znati u kojem kontekstu se x spominje int x; //float x; string x;... x = a + b; Je li x deklariran prije prve upotrebe? x je ispravan izraz ako se nalazi npr. u kontekstu int x; (float, string...) Postoje li imena koja se koriste a nisu deklarirana?

Semantička analiza primjeri Na koju se deklaraciju x odnosi? int suma(int x, int y) { int x = 2; return x + y; } Je li izraz dosljedan u tipovima? float pi = 3.14159; string s = pi je ; cout << s + pi << endl;

Semantička analiza primjeri Gdje možemo pohraniti x? hrpa, stog,... Da li *p referencira rezultat malloc()-a (ili operatora new)? int *p; *p = 13; int *p; p = new int; *p = 13; Je li x definiran prije prve upotrebe (ne samo deklariran)? float f; cout << f << endl; float f; f = 1.23; cout << f << endl;

Semantička analiza primjeri Jesu li indeksi unutar polja u odgovarajućim granicama? double d[10] = {5.55}; d[23] = 4.44; d[10] = 9.0; Da li funkcija f vraća konstantnu vrijednost? Na sljedeća pitanja ne možemo odgovoriti kontekstno neovisnom (slobodnom) gramatikom

Sintaksa i semantika Sintaksa određuje ispravan oblik programa Sintaksa se obično definira kao ono što se može provjeriti kontekstno neovisnom gramatikom Ipak, neke stvari koje liče na sintaksu, ne mogu biti opisane KNG-om Npr. provjera broja argumenata u funkcijskim pozivima Semantika određuje ponašanje / značenje / smisao (sintaksno) ispravnog oblika programa U praksi je semantika sve što zahtijeva usporedbu s drugim linijama koda

Sematička analiza Statička semantika Analizira se u trenutku prevođenja Jesu li sve varijable deklarirane? Jesu li svi izrazi odgovarajućih tipova? Je li broj parametara u funkcijskim pozivima korektan? Dinamička semantika

Sematička analiza Statička semantika Analizira se u trenutku prevođenja Dinamička semantika Analizira se u trenutku pokretanja programa Da li se možda dijeli s nulom? cin >> f; cout << 10/f << endl; Je li indeks polja u odgovarajućem rasponu? cin >> i; cout << polje[i];

Semantička analiza Za razliku od KNG koje smo koristili za sintaksnu analizu, semantička analiza zbog oslanjanja na kontekst traži nešto više: Kontekstno ovisne (osjetljive) gramatike Primjer: izraz i je ispravan u kontekstu int i; KOG su teške za primjenu, pa se koristi alternativa: Simboličke tablice Centralno mjesto za pohranu informacija Apstraktno sintaksno stablo Atributne gramatike koristi ih YACC Dizajn jezika Pojednostavljenje jezika da bismo izbjegli probleme

Simbolička tablica Za efikasno prevođenje najčešće se koristi simbolička tablica Leksičkim jedinkama se pridružuju atributi Prate se sljedeće leksičke jedinke: Varijable Konstante Funkcije Nizovi Tekstualne oznake (label) Privremene varijable koje stvara prevodilac

Simbolička tablica Za efikasno prevođenje najčešće se koristi simbolička tablica Prate se sljedeća svojstva leksičkih jedinki: varijable: ime, tip, vrijednost tipovi: opis tipa, veličina, poredak bajtova konstante: ime, tip, vrijednost funkcije: ime, tip, tip rezultata, broj parametara lokalne deklaracije

Atributna gramatika Uljepšana kontekstno neovisna gramatika Atributna gramatika dozvoljava produkcijama da budu obogaćene semantičkim atributima i operacijama Nezavršnim znakovima gramatike pridružuje atribute E ima npr. atribut val Produkcijama pridružuje pravila E 1 E 2 + T E 1.val = sum (E 2.val, T.val)

Atributna gramatika Kopiranje vrijednosti E T E.val = T.val

Primjer: Binarni brojevi Cijeli Decimalni Nezavršni znakovi: num, string i bit Mogući atributi: Num: val String: val, len Bit: val

Primjer: (1) num string 1. string 2 num.val := string 1.val + string 2.val/2 ^ string 2.len (2) num string num.val := string.val (3) string 0 string 1 bit string 0.val := 2*string 1.val + bit.val string 0.len := string 1.len + 1 (4) string bit string.val := bit.val string.len := 1 (5) bit 0 bit.val := 0 (6) bit 1 bit.val := 1

Semantička analiza Semantička analiza povezuje faze analize izvornog i sinteze ciljnog programa Ciljevi semantičkog analizatora: Određivanje značenja sintaksnih cjelina Provjera semantičkih pravila Priprema podataka ostalim dijelovima jezičnog procesora

Zadaci semantičkog analizatora Popunjavanje tablice znakova vrijednostima obilježja sintaksnih cjelina Prijenos vrijednosti obilježja po sintaksnom stablu Određivanje početnih uvjeta Određivanje mjesta i opisa semantičkih pogrešaka Obrađivanje makro naredbi

Određivanje značenja Određivanje značenja sintaksnih cjelina je središnji zadatak semantičkog analizatora Značenje se određuje svim elementima jezika Od leksičkih jedinki...... do najsloženijih sintaksnih cjelina

Primjer: značenje identifikatora Imena varijabli, polja, konstanti, potprograma itd. Značenje varijable određuje se na temelju podatkovnog tipa Cjelobrojne, realne, znakovne, logičke, tekstualne Značenje polja određuje se na temelju značenja indeksa i elemenata polja Značenje potprograma određuje se na temelju značenja ulaznih i izlaznih parametara

Primjer: značenje složenih Npr. izrazi i naredbe sintaksnih struktura U C=A+B značenje varijable C određuje se na temelju značenja varijabli A i B A i B cjelobrojne C cjelobrojna A i B znakovne C znakovna Osim značenja od C, određuje se i značenje izraza A+B i značenje operatora + + može biti zbrajanje cijelih brojeva, konkatenacija stringova, zbrajanje matrica

Semantička analiza Značenje leksičkih jedinki i sintaksnih cjelina koristi određena obilježja, a obilježja poprimaju vrijednost značenja Npr. varijablama kao leksičkim jedinkama i izrazima kao sintaksnim cjelinama dodjeljuje se obilježje podatkovni tip, a to obilježje može poprimiti vrijednost cijeli broj, decimalni broj, skup, matrica, itd.

Semantičko okruženje Tijekom semantičke analize potrebno je ispitati šire programsko okruženje CijeliBroj A; CijeliBroj B; CijeliBroj C;... C = A + B;... Program je leksički, sintaksno i semantički ispravan

Semantičko okruženje CijeliBroj A; Znak B;... C = A + B;... Program je leksički i sintaksno ispravan, ali nije semantički Ne možemo zbrojiti znakovnu i cjelobrojnu varijablu Ne možemo odrediti značenje izraza A+B, tj. značenje operatora + koji prima znak i cijeli broj

Semantička pravila Neka semantička pravila moguće je definirati primjenom produkcija KNG Umjesto definiramo <izraz> IDN + IDN <izraz> <IntIzraz> <CharIzraz> <FltIzraz> <BoolIzraz> <IntIzraz> INT + INT <CharIzraz> CHAR + CHAR <BoolIzraz> BOOL + BOOL <FltIzraz> FLOAT + FLOAT FLOAT + INT INT + FLOAT...gdje su izrazi bez <> završni znakovi

Semantička pravila Uobičajeno je da se pravila jezika obuhvaćena produkcijama gramatike ugrade u sintaksni analizator Zato je ponekad teško razlučiti sintaksna i semantička pravila jezika

Popunjavanje tablice znakova U tablicu znakova zapisuju se vrijednosti obilježja sintaksnih cjelina Npr. tablica identifikatora popunjava se vrijednostima obilježja: Vrsta identifikatora Varijabla, polje, konstanta, potprogram, parametar Podatkovni tip identifikatora Cjelobrojni, decimalni, znakovni, logički, tekstualni Djelokrug (doseg) identifikatora Područje programa u kojem vrijedi deklaracija

Popunjavanje tablice znakova Vrijednosti obilježja se u tablicu znakova upisuju postepeno CijeliBroj A; CijeliBroj B;... C = A + B;... Na početku se zapisuje da su A i B cjelobrojne varijable Tijekom analize izraza A+B leksički analizator pridružuje varijablama A i B kazaljke koje pokazuju na tablicu identifikatora u kojoj su zapisane vrijednosti obilježja od A i B Budući da u i A i B cjelobrojne, semantički analizator pridružuje varijabli C značenje cjelobrojne varijable, a operatoru + značenje cjelobrojnog zbrajanja

Prenošenje vrijednosti obilježja Vrijednosti obilježja sintaksnih cjelina možemo prenijeti pomoću: Sintaksnog stabla vrijednosti obilježja pridružujemo čvorovima sintaksnog stabla Stoga dijelovi sintaksnog stabla dinamički se spremaju na stog Semantički analizator može izgraditi vlastiti stog, ili vrijednosti obilježja može nadopuniti na podatke upisane na prethodno izgrađeni sintaksni stog

Semantička analiza tanka je granica između semantičke analize i generiranja međukoda semantička analiza se ponekad smatra fazom sinteze...... a ponekad se i generiranje međukoda smatra fazom analize

Kontekstno ovisna gramatika Gramatika G=(V,T,P,S) je kontekstno ovisna ako su joj sve produkcije oblika αaβ αγβ A V(tj. A je jedan nezavršni znak), α,β (N U Σ)* (tj. α i β su nizovi nezavršnih i završnih znakova) γ (N U Σ)+ (tj. γ je neprazni niz završnih i nezavršnih znakova).

Kontekstno ovisna gramatika Kao dodatak, produkcija oblika S ε pri čemu ε predstavlja prazni niz je dozvoljena ako se S ne pojavljuje na desnoj strani neke od produkcija iz P Nezavršni znak A se može zamijeniti s γ akko se A nalazi u kontekstu α/β, tj. akko se ispred γ nalazi niz znakova α, a iza niz znakova β

Primjer: a n b n c n Neka je gramatika G zadana produkcijama 1. S asbc 2. S abc 3. CB HB 4. HB HC 5. ab ab 6. bb bb 7. bc bc 8. cc cc G je kontekstno ovisna i definira jezik a n b n c n Npr. u produkciji 7. se C pretvara u c samo u kontekstu b

Primjer: aaabbbccc 1. S asbc 2. S abc 3. CB HB 4. HB HC 5. ab ab 6. bb bb 7. bc bc 8. cc cc

Slobodna gramatika Gramatika neograničenih produkcija Gramatika G=(V,T,P,S) je slobodna ako su joj sve produkcije oblika α,β (N U Σ)* α β tj. α i β su nizovi nezavršnih i završnih znakova α nije jednak ε

Primjer: a n b n c n Neka je gramatika G zadana produkcijama 1. S absc 2. S abc 3. Ba ab 4. Bb bb G definira jezik a n b n c n G nije niti regularna, niti konteksno neovisna, niti konteksno ovisna

Hijerarhija automata i gramatika Regularna gramatika Kontekstno neovisna gramatika Kontekstno ovisna gramatika Gramatika neograničenih produkcija Konačni automat Potisni automat Linearno ograničeni automat Turingov stroj Regularni jezici Kontekstno neovisni jezici Kontekstno ovisni jezici Rekurzivno prebrojivi jezici

Chomskyjeva hijerahija Regularni jezici Deterministički kontekstno neovisni jezici w2w R Nedeterministički kontekstno neovisni jezici ww R Kontekstno ovisni jezici ww Rekurzivno prebrojivi jezici Rekurzivni jezici Univerzalni jezik Svi jezici nad 2 Σ* Dijagonalni jezik

2. kolokvij Stvari obrađene na predavanjima i vježbama (ne sve iz navedenih skripti) [JP1] do str.126 [JP2] do str.170 Zadaće Neka mi se mailom jave studenti koji nisu prikupili bodove iz zadaće, a žele ih prikupiti Termin 2. kolokvija F3 razred umjesto F2

Literatura Siniša Srbljić: Jezični procesori 1 [JP1] Siniša Srbljić: Jezični procesori 2 [JP2]