automati-gotova prezentacija

Upload: mbota99

Post on 17-Jul-2015

176 views

Category:

Documents


3 download

TRANSCRIPT

SINTAKSNA ANALIZA

Click to edit Master subtitle style

3/19/12

Sintaksna analiza

2. korak rada jezinog procesora (leksineanalize)

3/19/12

Sintaksna analiza I provjerava

da li niz leksikih jedinki zadovoljava sintaksna pravila programa sintaksna pravila odreuju dozvoljenje strukture izraza, naredbi, skupine naredbi, dijelova programa te cijelog programa

sintaksna pravila zapisuju se formalnim gramatikama

provjerava

se hijerarhija struktura izraza i naredbi pomou sintaksnog stabla PARSIRANJE

3/19/12

Zadaci sintaksnog analizatora ita

niz uniformnih znakova leksikih jedinki (po redu) grupira uniformne znakove leksikih jedinki u sintaksne cjeline provjerava sintaksna pravila stvara/gradi hijerarhiju sintaksnih cjelina odreuje mjesto sintakse pogreke izvodi oporavak od pogreke gradi sintaksno stablo

3/19/12

Grupiranje uniformnih znakova u sintaksne cjeline sintaksne

cjeline:

izrazi naredbe skupine naredbi odnosno blokovi programi

3/19/12

Sintaksne cjeline - izrazi izrazi

dijelovi naredbi programskoga jezika

infiksni (aritmetika), prefiksni (funkcijski poziv) i postfiksni zapis LISP, APL izrazi su sredinje sintaksne cjeline FORTRAN, COBOL, C naredba sredinja sintaksna cjelina

3/19/12

Sintaksne cjeline - naredbe najznaajnije

sintaksne cjeline u veini programskih jezika struktura naredbe zadana je sintaksnim pravilom jednoobrazna za sve naredbe ili vieobrazna dijelovi sintakse u naredbi mogu se izostaviti jednostavna (naredbe se ne gnijezede) sloena (dozvoljeno ugnjeavanje) naredba if je sloena ugnjeena naredba i sadri druge naredbe if Izraz then Naredba1 else Naredba2 3/19/12

Sintaksne cjeline blokovi naredbi slijed

naredbi ogranien graninicima:

begin end {}

blokovi

naredbi tvore hijerarhiju blokovi naredbi olakavaju itljivost izvornog koda

3/19/12

Sintaksne cjeline program odreena

struktura programa i potprograma

nain deklaracije varijabli i potprograma

4

osnovne strukture programa su:zasebna deklaracija potprograma program i potprogram u razliitim datotekama

ugnjeeni potprogramisve deklarirano unutar glavnog programa, u potprogramu se deklarira novi potprogram, ugnjeuju se potprogrami globalne i lokalne varijable

zasebna deklaracija podataka (strukture) nestrukturirane naredbenema odvajanja naredbi glavnog programa od potprograma 3/19/12 ista naredba se izvodi kao dio gl. prog. i kao dio

Provjera sintaksnih pravila za

opis sintaksnih pravila koristi se vie razliitih sustava oznaka:BNF Backus-Naur Form COBOL

opisuju

se kontekstno neovisnim gramatikama

3/19/12

Primjer provjere sintakse Sintaksna

pravila zadana gramatikom:

IDN= < Izraz > IDN | KON * | / | + | Da

li izraz Cijena=Cijena+222 odgovara sintaksi? Da li izraz Cijena=Cijena*/222 odgovara sintaksi?

3/19/12

Stvaranje hijerarhijske strukture hijerahija

sintaksnih cjelinastruktura struktura struktura struktura izraza naredbi blokova naredbi programa

hijerahijska hijerahijska hijerahijska hijerahijska

3/19/12

Hijerarhijska struktura izraza odreuje se na temelju: prednosti operatora zagrada pravila asocijativnosti operatora Primjer:

Cijena1+Cijena2*40

prednost operatora Cijena2*40 ini 1. sintaksnu cjelinu vie u

hijerahiji Cijena2 ini 2. sintaksnu cjelinu

3/19/12

Primjer hijerarhijske strukture izraza I izrazi: aritmetiki

zagrade, zbrajanje + i mnoenje * operatori su lijevo asocijativni mnoenje ima veu prednost od zbrajanja infiksni sustav oznaka

sintakna

pravila zadana gramatikom:

+ * () IDN | KON3/19/12

Primjer hijerarhijske strukture izrazabb*cc*(aa+63) izgradi hijerahijsku II za izrazstrukturu * * () IDN + IDN KON IDN3/19/12

Primjer hijerarhijske strukture izraza III

3/19/12

Hijerarhijska struktura naredbe vana za sloene naredbe

uvjetno grananje if-then-else viestruko pridruivanje a=b=c=1000

Primjer:

naredbe pridruivanja i deklariranja

varijabli IDNvar := : : FLOAT | INT IDNvar3/19/12

Primjer hijerarhijske strukture naredbe bb:cc:aa:FLOAT

: IDNbb : IDNcc : IDNaa FLOAT

3/19/12

Primjer hijerarhijske strukture naredbe I

3/19/12

Primjer hijerarhijske strukture bloka naredbi naredbe ulanane znakom ;deklaracija ; blok pridruivanja ; Primjer: 3 naredbe pridruivanja blok

3/19/12

Primjer hijerarhijske strukture bloka naredbi I

3/19/12

Primjer hijerarhijske strukture programa deklaracije

varijabli i potprogrami blok deklaracija i blok pridruivanja IDNime() | {} { } { }

3/19/12

Primjer hijerarhijske strukture programa I

3/19/12

Odreivanje mjesta i tipa pogreke sintaksne

pogreke najee precizno odrediti mjesto pogreke te ju kratko i jasno opisati parser ispie liniju programa na kojem je nastala pogreka odreivanje mjesta i tipa pogreke usporava rad jezinog procesora pogotovo kod pravilnih programa

paljiva izvedba

3/19/12

Oporavak od pogreke kad

pronae prvu pogreku sintaksni analizator mora promijeniti stanje tako da moe nastaviti s radom i pronai ostale pogreke

promjena stanja ukljuuje i promjenu sadraja podatkovnih struktura koje se pohrane na stog ako se stanje ne promijeni u nastavku rada javljaju se lane pogreke koje se ispisuju daleko od mjesta gdje je pogreka stvarno nastala

3/19/12

Podatkovna struktura sintaksnog analizatora strukturu

podataka ine: tablice uniformnih znakova, tablice kljunih rijei, operatora i specijalni znakova, tablica identifikatora, stog. lokalna struktura podataka(proces parsiranja) globalnu struktiru ine stog i tablica znakova.

3/19/12

Oporavak od pogreke I primjer:

deklaracija varijable se ne analizira jer sintaksni analizator nije promijenio stanje i pojavi se pogreka da toj varijabli nije odreen podatkovni tip, a to nije stvarno stanje algoritmi za oporavak od pogreke:

traenje sinkronizacijskog znaka algoritam lokalnih promjena algoritam dodatnih produkcija koje ukljuuju pogreke algoritam globalnih promjena3/19/12

Sintaksna pravila opisuju

se:

kontekstno neovisnim gramatikama regularnim izrazima BNF (Backus-Naur Form ili Backusova normalna forma) sustav oznaka COBOL sustav oznaka

3/19/12

BNF sustav oznaka Backus-Naurov

ALGOL osnovni elementi programskog jezika:

format 1960. John Backus za

pravila (produkcije u gramatikama) izrazi konstante (znakovi jezika, zavrni znakovi u produkcijama gramatika) varijable (sintaksne cjeline, nezavrni znakovi u gramatikama) znak jednakosti ( u produkcijama gramatika) operator nadovezivanja (konkatenacije) operator izbora

dozvoljene

rekurzivne definicije

3/19/12

BNF sustav oznaka I opis

jezika zadaje se nizom pravila koja imaju lijevu i desno stranu odvojenu znakom jednakosti

lijeva strana ::= desna strana

lijevu

stranu ini tono jedna varijabla desnu stranu ini vie izraza odvojenih operatorom izbora |

desna strana moe biti prazna bez znaka (produkcija)

izraz

je niz varijabli i konstanti znak do znaka3/19/12

varijabla v:

nadovezivanje:

BNF sustav oznaka IIPrimjer: ::= | ::= 0 | 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9

3/19/12

COBOL sustav oznakamala slova varijabla velika slova konstanta (mogue izostaviti) podcrtana velika slova konstanta (nije mogue izostaviti) znak do znaka nadovezivanje [] neobavezni izbor opcije iz [ ] {} obavezni izbor jedne opcije iz { } .... ponavljanje prethodne sintaksne cjeline

3/19/12

Primjer: COBOL sustav oznaka

1K2, 2B6784598, 5KL, 4KC99999, 3KAB, 5B3/19/12

Co-No tablicaCurrent Operator Next Operator Primjer: naredbe ulanane s ;, a je znak pridruivanja, izvode se aritmetike operacije +, -, *, / s dva operanda; 0 Sljedei; Sljedei+1 Sljedei; Porast*Sljedei Umnoak; ispravnost

se provjerava samo analizom lijevog i desnog operatora, a ciljni program (strojni jezik) koristi samo 1 registar D03/19/12

Co-No tablica I

3/19/12

Parsiranje od vrha prema dnu postupak

prepoznavanja niza i gradnja generativnog stabla na temelju zadanih produkcija kontekstno neovisne gramatike tijekom parsiranja od vrha prema dnu znakovi se itaju slijedno slijeva na desno, te se na temelju proitanog znaka i znakova lijeve i desne produkcije primjeni odgovarajua produkcija gramatike gradnja generativnog stabla nastavlja se dok ima vorova oznaenih nezavrnim znakovima gramatike3/19/12

S - gramatika desna

strana bilo koje produkcije zapoinje zavrnim znakom gramatike desna strana nijedne produkcije nije prazni niz ako vie produkcija ima isti nezavrni znak na lijevoj strani, onda desne strane tih produkcija zapoinju razliitim zavrnim znakovima Primjer: Neka je zadana gramatika sljedeih produkcija:

(1) a b (2) b b

3/19/12

S gramatika I

a

b

b

a

PARSER

Ulazni niz

1) --> 2) --> 3) --> 4) -->

a b b b a b

Skup produkcija

a

b

a

b

a

b

b

a

PARSER

Ulazni niz

3/19/12

S gramatika II

a

b

a

b

b

a

PARSER

Ulazni niz

1) --> 2) --> 3) --> 4) -->

a b b b a b

Skup produkcija

a

b

b

3/19/12

S gramatika III

a

b

a

a

b

b

a

PARSER

Ulazni niz

1) --> 2) --> 3) --> 4) -->

a b b b a b

Skup produkcija

a

b

b

a

3/19/12

Q - gramatikadesna strana bilo koje produkcije zapoinje zavrnim znakom gramatike ili je jednaka praznom nizu ako vie produkcija ima isti nezavrni znak na lijevoj strani, onda njihovi skupovi PRIMJENI nemaju zajednikih elemenata

Primjer: zadana je gramatika koja sadri produkciju:

(1) (2) (3) (4)

a b c

3/19/12

Q gramatika I PRIMJENI(

a ) PRIMJENI( b) = {a} {b} = {} PRIMJENI( c ) PRIMJENI( ) = {c} {a, b} = {}

1 ) < S > --> a < A > < S > 2 ) < S > --> b a a c b b PARSER 3 ) < A > --> c < A > < S > 4 ) < A > -->

a

3/19/12

Q gramatika IIa 1) --> a 2) --> b a a c b b PARSER 3) --> c 4) -->

a

a

1) --> a 2) --> b a a c b b P A R S ER 3) --> c < S > 4) -->

a

a

3/19/12

Q gramatika IIIa a 1) --> a 2) --> b a a c b b PARSER 3) --> c 4) -->

a

a

c

a

a

c

1) --> a 2) --> b a a c b b PARSER 3) --> c 4) -->

a

a

c

3/19/12

Q gramatika IVa a c 1) --> a 2) --> b a a c b b PARSER 3) --> c 4) -->

a

a

c

b

1) --> a 2) --> b a a c b b PARSER 3) --> c 4) -->

a

a

c

b

b

3/19/12

LL(1) - gramatikaprvi L oznaava da ulazni niz itamo s lijeva na desno (left to right scanning), dok drugi L oznaava da mijenjamo krajnje lijevi nezavrni znak (leftmost derivation) brojka (1) oznaava da odluku donosimo na osnovu jednog proitanog znaka

3/19/12

LL(1) gramatika I produkcija

se primijeni na osnovu proitanog ulaznog znaka i krajnje lijevog nezavrnog znaka u generiranom nizu primijeni se ona produkcija koja ima na lijevoj strani nezavrni znak koji je krajnje lijevi u nizu, a na desnoj strani na krajnje lijevom mjestu ima zavrni znak koji odgovara ulaznom nizu ita li se k znakova u nizu, parsiranje se naziva LL(k) odluku donosimo na osnovu k proitanih znakova ulaznog niza3/19/12

3/19/12

Parsiranje od dna prema vrhu generativnog stabla listovima gradnjom

oznaeni su zavrnim znakovima gramatike; primjenom desnih strana produkcije gramatike na prethodno izgraene vorove; produkcije se nazivaju REDUKCIJE (smanjivanje znakova); znakovi niza w se itaju slijedno slijeva nadesno; parsiranje je uspjeno ako se cijeli niz w zamijeni poetnim nezavrnim znakom gramatike;3/19/12

Parsiranje od dna prema vrhu (1)POETAK Parser zapoinje praznim stogom na kojem je oznaka. Parser ita znak koji je krajnje lijevi znak niza w=aw'.

PARSER a w'

S to g

U la z nsip r e m n ik

3/19/12

Parsiranje od dna prema vrhu (2) Na

temelju proitanog znaka i znaka na vrhu stoga, parser primijeni jednu od etiri moguih akcija. 1. Akcija Pomakni Proitani znak stavlja na vrh stoga, a kazaljka za itanje niza se pomie za jedan znak udesno.PARSER w' a

Ulazni spremnik

Stog

3/19/12

Parsiranje od dna prema vrhu (4) 2. Akcija Reduciraj Usporeuju

se znakovi vrha stoga i znakovi desnih strana produkcija. Ako je na vrhu stoga uzorak za zamjenu (desna strana produkcije), na vrh stoga se stavlja nezavrni znak lijeve strane produkcije.

PARSER w' a R e d u k c ija : < A > -> a

PARSER w' < A>

U la z n s p re m n ik i

S to g

U la zn s p re m n ik i

S to g

3/19/12

Parsiranje od dna prema vrhu (5)3. Akcija Prihvati Ako parser proita oznaku kraja ulaznog niza, a na stogu je poetni nezavrni znak i oznaka dna stoga, parser prihvati niz w.

PARSER Ulaznispremnik Stog3/19/12Parsiranje od dna prema vrhu (6)4. Akcija Odbaci Niz se ne prihvaa, odnosno niz w nije u jeziku koji generira zadana gramatika ukoliko nije mogua daljnja gradnja stabla. To se dogaa u dva sluaja: Ako nije zadana nijedna akcija za proitani znak ulaznog niza i znak vrha stoga. Ako znakovi na vrhu stoga nisu jednaki znakovima nijedne desne strane produkcije tijekom akcije Reduciraj.3/19/12Parsiranje od dna prema vrhu (7)PRIMJER Zadana je gramatika sljedeih produkcija: ( ) (b) ( a ) (a). Potrebno je provjeriti je li niz ((a)(b)) u jeziku koji generira zadana gramatika.3/19/12Parsiranje od dna prema vrhu (8)PARSER ( ( a ) ( b ) ) S to gU la z ns p r e m n ik iPAR SER ( a ) ( b ) ) (U laznisprem nikStogPARSER a ) ( b ) ) ( (Ulazni spremnik3/19/12 StogParsiranje od dna prema vrhu (9)PARSER ) ( b ) ) a ( ( Ulazni spremnikPARSER ( Ulazni b ) ) Stogsprem nik) a ( (4) (a)PARSER ( b ) ) Stog (Stog3/19/12Parsiranje od dna prema vrhu (10)PA S R R E b U lazn i sp rem ik n < > A ( ) ) (PARSER ) Ulazni sprem nik ) S g tob ( (P R E A SR ) U zn la i sp m ik re n Stog) b ( A (2) ( b)3/19/12S g toParsiranje od dna prema vrhu (11)PARSER ) Ulazni spremnik (PARSER Ulazni spremnik Stog ) (1) ( )PARSER Ulaznisprem nikStogStog3/19/12Parsiranje od dna prema vrhu (12) Primjer parsiranja niza(((b)a(a)))b)) za produkcije: ( ) (b) ( a ) (a).3/19/12Parsiranje od dna prema vrhu (13) Primjer parsiranja niza (((b)a(aa))(b)) za produkcije: ( ); (b); ( a ); (a).3/19/12Parsiranje tehnikom Pomakni-PronaiZadanu gramatiku koja nema -produkciju mogue je parsirati tehnikom PomakniPronai. Parser primjenom dvodomenzionalne tablice upravlja akcijama na stogu i ulaznom nizu. Dvodomenzionalna tablica gradi se na temelju vrijednosti relacija IspodZnaka i ReduciranZnakom.3/19/12Parsiranje tehnikom Pomakni-Reduciraj Prethodniparseri su neuinkoviti, a to se moe sprijeiti izbjegavanjem postupka usporedbe proirivanjem skupa znakova stoga. Za pojedine znakove gramatike definira se vie razliitih kodova. Primijena redukcije bez itanja znakova na vrhu stoga i njihove usporedbe sa znakovima desnih strana produkcija. Parserom se upravlja primjenom dviju tablica: - Tablica Stavi3/19/12Gramatika je zadana produkcijama: () (b) (a) (a)3/19/12PRIMJER Jednostavni parser3/19/12Parser Pomakni/Reduciraj3/19/12Parsiranje tehnikom prednosti operatora Konteksnoneovisna gramatika je operatorska ako i samo ako produkcije nisu -produkcije i ni na jednom mjestu desna strana produkcije dva susjedna znaka nisu nezavrna. Opi oblik je 011---nn, gdje su i zavrni znakovi gramatike, a niz i je prazan niz ili niz kojeg ini iskljuivo jedan Relacija Znaenje nezavrniaznak. b Prednost a je manja od prednosti b.ab ab a i b su jednake prednosti. Prednost a je vea od prednosti b.3/19/12LR() parsiranje LR(k)parsiranje je parsiranje od dna prema vrhu. Znak L oznaava da se niz w ita slijeva nadesno. Znak R oznaava da se stablo gradi obrnutim postupkom generiranja niza zamjenom krajnje desnog nezavrnog znaka. Broj k oznaava da se redukcija primjenjuje na temelju proitanih svih znakova koji se generiraju iz znakova desne strane produkcije i jo sljedeih k znakova ulaznog niza. Za izradu parsera izravno na temelju zadane gramatike razvijeno je vie postupaka:SLR (Simple LR) najjednostavniji, nemogunost 3/19/12 ModelLR parsera ima: ulazni spremnik, potisni LIFO stog, program LR parsera, tablicu parsiranja, izlaz.STOG I TABLICA RAZLAGANJA u stog se sprema niz s0 X1 s1 X2 s2 Xm sm:sm je na vrhu stoga; Xi su zavrni ili nezavrni znakovi gramatike; si su stanja; stanje na vrhu stoga sm jednoznano odreuje sadraj stoga; tijekom rada parser koristi stanja si,; znakovi Xi se pamte radi lakeg praenja rada;3/19/12Tablica parsiranja ima tri dijela: program ita znak ai i stanje sm i bira redak tablice parsiranja; odreuje akciju (Pomak s, Reduciraj A , Prihvati, Odbaci); odreuje novo stanje. Konfiguracija LR parsera Spojimo stog i ulazni spremnik u jedinstvenu listu: Dobivenalista naziva se konfiguracija LR 3/19/12 Iztablice se ita Akcija koja mijenja konfiguraciju: Pomak s: spremi na stog ai i s, itaj novi znak: s0X1s1X2s2...Xmsm ai s, ai+1...an A : uzmi 2r=2|| znakova sa stoga i zamjeni A: s0X1s1X2s2...Xm-rsm-r A s, ai ai+1...an Prihvati: prihvaa niz Odbaci: odbacuje niz Reduciraj3/19/12LR stavke i ivi prefiksiPrimjer. Gramatika produkcija S' S c SSA|A AaSb|a b ima sljedee stavke S' S c S' S c S' S c S a Sc S aS a Sa S SbSb3/19/123/19/123/19/12Hvala!!!3/19/12