Transcript
  • Teorija algoritama, jezika i automata

    Kontekstno slobodne gramatike i jeziciPredavanje 5 i 6

    9. novembar, 2009

  • Kontekstno slobodne gramatike i jezici 2

    POGLAVLJE 5

    Kontekstno slobodne gramatike i jezici

    Sada cemo preusmeriti panju od regularnih jezika na vecu klasu jezika, koji se nazivaju "kontekstnoslobodni jezici". Kontekstno slobodne gramatike su igrale centralnu ulogu u tehnologiji kompajlera od1960 godine; oni su pokrenuli implementaciju parsera (funkcije koje su otkrile strukturu programa) odvremenski zahtevnih zadatake ad-hok implementacije u rutinski posao koji se moe uraditi u slobodnovreme. Nedavno, kontekstno slobodne gramatike su koricene da opiu formate dokumenata, prekotakozvanih denicija tipa dokumenata (eng, DTD - document type denition) koja se koristila u XML(eng. extensible markup language) drutvu za razmenu informacija na web-u.

    U ovom poglavlju, uvodimo notaciju kontekstno slobodnih gramatika, i pokazujemo kako gramatikedeniu jezik. Razmotricemo "drva parsiranja", sliku strukture koji gramatika stavlja na stringovejezika. Drvo parsiranja je proizvod parsera za programski jezik i nacin je na koji je struktura pro-grama normalno prihvacena.

    Postoji notacija slicna automatiziciji, koja se naziva pritisni automati koja takodje opisuje sve i samokontekstno slobodne gramatike; uvodimo pritisne automate u Poglavlju 6. Dok su manje vani odkonacnih automata, pronaci cemo da pritisni automati, posebno njihova ekviovalentnost kontekstno-Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 3

    slobodnim gramatikama, mogu biti sasvim korisni kada razmatramo njihovo zatvorenje i svojstva od-lucivanja kontekstno slobodnih jezika u Poglavlju 7.

    Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 4

    0.1 Kontekstno-slobodne gramatikeZapocecemo uvodjenjem notacije za kontekstno-slobodne gramatike neformalno. Nakon to vidimoneke od vanih mogucnosti ovih gramatika, dacemo formalne denicije. Pokazacemo kako da deniemogramatiku formalno, i uvecemo proces izvodjenja, gde je odredjeno koji stringovi su u jeziku gra-matike.

    0.1.1 Neformalni primer

    Razmotrimo jezik palindroma. Palindroma je string koji se cita isto unapred i unazad, kao to je otto ilimadamimadam (Madam I'am Adam). Drugacije receno, string ! je palindroma ako i samo ako ! = !R:Da bi pojednostavili stvari razmotricemo opisivanje samo palindroma nad azbukom f0; 1g : Ovaj jezikukljucuje stringove kao to su 0110, 11011, i ; ali ne i 011 ili 0101.

    Lako je verikovati da jezik Lpal palindroma od 0-la i 1-ca nije regularan jezik. Da bismo to uradili,koristimo pumpajucu lemu. Ako je Lpal regularan jezik , neka je n pridruena konstanta, i razmotrimopalindrome ! = 0n10n. Ako je Lpal regularan, onda moemo podeliti ! u ! = xyz; tako da se y sastojiod jedne ili vie 0-la iz prve grupe. Otuda, xz, koji bi isto trebao da bude u Lpal ako je Lpal regularan, biimao manje 0-la levo od jedine 1-ce nego to ih je desno od 1-ce. Stoga xz ne moe biti palindrome.Sada smo protivurecili pretpostavku da je Lpal regularan jezik.

    Postoji prirodna rekurzivna denicija kada je string 0-la i 1-ca u Lpal. Pocinje sa bazom koja kae danekoliko objekata stringova su u Lpal i zatim koristi ideju da ako je string palindroma, mora zapoceti iTeorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 5

    zavriti sa istim simbolom. Dalje, kada je prvi i posledji simbol sklonjen, rezultujuci string mora istiobiti palindroma. To jest:

    BAZA: ; 0; i 1 su palidromi.INDUKCIJA: Ako je ! palindrome, takodje su 0!0 i 1!1:Nijedan string nije palidrom od 0-la i 1-ca, dokto ne sledi iz baze i pravila indukcije.

    Kontekstno-slobodna gramatika je formalna gramatika za izraavanje rekurzivnih denicija jezika. Gra-matika se sastoji od jedne ili vie varijabli koji predstavljaju klase stringova, tj. jezika. U ovom primerutrebala nam je samo jedna varijabla P , koja predstavlja skup palindroma; to jest klase stringova kojiformiraju jezik Lpal. Postoje pravila koja kau kako su stringovi u svakoj klasi konstruisani. Konstrukcijamoe koristiti simbole azbuke, stringove koji su vec poznati da pripadaju jednoj od klasa, ili obe.

    Primer 5.1. Pravila koja deniu palindrome, izraeni u notaciji kontekstno-slobodne gramatike, supokazana na slici 5.1. Videcemo u sekciji 5.1.2 ta ta pravila znace.

    Prva tri pravila formiraju bazu. Ona nam govore da klasa palindroma ukljucuje stringove ; 0; i 1.Nijedna od desnih strana ovih pravila (delovi koji prate strelice) ne sadre varijable, to predstavljarazlog zato oni formiraju bazu za deniciju.

    Poslednja dva pravila formiraju induktivni deo denicije. Na primer, pravilo 4 kae da ako uzmemo bilokoji string ! iz klase P , onda 0!0 je takodje u klasi P . Pravilo 5 slicno nam govori da je 1!1 takodje uP .

    Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 6

    1.Slika 5.1. Kontekstno slobodna gramatika za palindrome

    Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 7

    0.1.2 Denicija kontekstno-slobodne gramatike

    Postoji cetiri vane komponente u opisu gramatike jezika:

    1. Postoji konacni skup simbola koji formiraju string jezika koji se denie. Ovaj skup je npr. biof0; 1g u primeru palindroma koji smo upravo videli. Zovemo ovaj alfabet terminalima, ili terminalnimsimbolima.2. Postoji konacan skup varijabli, koji se takodje nazivaju ponekad neterminalima ili sintakticnim kat-egorijama. Svaka varijabla predstavlja jezik; tj. skup stringova. U naem primeru gore, postoji samojedna varijabla, P , koja nam je potrebna da bi se predstavila klasa palindroma nad azbukom f0; 1g :3. Jedna od varijabli koja predstavlja jezik koji se denie naziva se pocetnim simbolom. Drugevarijable predstavljaju pomocne klase stringova koji se koriste da bi se mogao denisati jezik pocetnogsimbola. U naem primeru, P , jedina varijabla, je pocetni simbol.4. Postoji konacan skup produkcija ili pravila koji predstavljaju rekurzivne denicije jezika. Svakaprodukcija se sastoji od:a) varijable koja je (delom) denisana produkcijom. Ova varijabla se cesto naziva glavom produkcije.b) Produkcije simbol je! :c) String nula ili vie terminala ili varijabli. Ovaj string, koji se naziva telom produkcije, predstavljajedan nacin da se formira string u jeziku varijabli glave. Radeci to, ostavljamo terminale nepromenjenei menjamo za svaku varijablu tela bilo koji string koji je poznat da je jezik te varijable.

    Videli smo primer produkcija na slici 5.1.Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 8

    Cetiri komponente koje smo upravo opisali formiraju kontekstno-slobodnu gramatiku, ili CFG. Pred-stavicemo CFG G pomocu cetiri komponente, to jest, G = (V; T; P; S), gde V predstavlja skup varijabli,T terminala, P skup produkcije, i S je pocetni simbol.

    Primer 5.2. Gramatika Gpal za palindrome je predstavljena sa

    Gpal = (fPg ; f0; 1g ; A; P )gde A predstavlja skup pet produkcija koje smo videli na slici 5.1.

    Primer 5.3. Istraimo neto sloeniju CFG koji predstavlja (simplikaciju) izraza u tipicnom program-skom jeziku. Prvo, ogranicicemo se na operatore + i , koji predstavljaju sabiranje i mnoenje.Dozvolicemo argumentima da budu identikatori, ali cemo umesto da dozvolimo pun skup tipicnihidentikatora (slova pracena nulom ili sa vie slova ili brojeva), dozvolicemo samo slova a i b i brojeve0 i 1. Svaki identikator mora poceti sa a ili b, koji se moe pratiti sa bilo kojim stringom u fa; b; 0; 1g :

    Trebamo dve varijable u ovoj gramatici. Jedna, koju cemo nazvati E, predstavlja izraze. To je pocetnisimbol i predstavlja jezik izraza koji deniemo. Druga varijable, I, predstavljaju identikatore. Njegovjezik je u stvari regularan; to je jezik regularnog izraza

    (a + b)(a + b + 0 + 1)

    Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 9

    Medjutim, necemo koristiti regularne izraze direktno u gramatici. Radije, koristimo skup produkcijakoje kau esencijalno istu stvar kao ovaj regularni izraz.

    Gramatika za izraze se formalno predstavlja saG = ffE; Ig ; T; P; Eg ; gde je T skup simbola f+; ; (; ); a; b; 0; 1gi P je skup produkcija prikazanih na slici 5.2. Interpretiramo produkcije na sledeci nacin.

    Pravilo (1) je bazisno pravilo za izraze. Ono kae da jedan izraz moe biti jedinstveni identikator.Pravilo (2) do (4) opisuju induktivni slucaj za izraze. Pravilo (2) kae da jedan izraz mogu ciniti dvaizraza povezana sa plus znakom; pravilo (3) kae isto sa znakom mnoenja. Pravilo (4) kae da akouzmemo bilo koji izraz i stavimo zagrade oko njega, rezultat je takodje jedan izraz.

    Pravila (5) do (8) opisuju identikator I. Bazisna pravilo (5) i (6) kau da su a i b identikatori. Preostalacetiri pravila su induktivan slucaj. Oni kau da ako imamo bilo koji identikator, moemo ga pratiti saa; b; 0; ili 1, i rezultat ce biti drugi identikator.

    0.1.3 Derivacija upotrebom gramatike

    Primenjujemo produkcije od CFG da inferiemo da su odredjeni stringovi u jeziku odredjene varijable.Postoje dva pristupa za ovaj zakljucak. Neto konvencionalniji pristup je da koristimo pravila od tela doglave. To jest, mi uzimamo stringove poznate da su u jeziku svake od promenljivih u telu, konkateni-ramo ih, u odredjenom redosledu, sa bilo kojim terminalom koji se javlja u telu, i inferiemo da jerezultujuci string u jeziku varijable u glavi. Referisacemo na ovu proceduru kao rekurzivna inferenca.Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 10

    2.Slika 5.2. Kontekstno slobodna gramatika za jednostavne izraze

    Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 11

    Postoji drugi pristup da se denie jezik gramatike , u kome koristimo produkcije od tela do glave.Proiricemo pocetni simbol koricenjenjem ovih produkcija (tj., koricenjem produkcija cija glava jepocetni simbol). Daljim proirenjem rezultujuceg stringa zamenom jedne od varijabli sa telom od jedneod njenih produkcija, i tako dalje, dok ne izvedemo string koji se sastoji potpuno od terminala. Jezikod gramatike cine svi stringovi terminala koje moemo dobiti na ovaj nacin. Ova upotreba gramatikenaziva se terminalna.

    Zapocecemo sa primerom prvog pristupa - rekurzivne inference. Medjutim, cesto je prirodnije damislimo o gramatikama kao iskoricenim derivacijama, i sledece cemo razviti notaciju za opis ovihderivacija.

    Primer 5.4. Razmotrimo neke od inferencija koje moemo izvesti koricenjem gramatike za izraze saslike 5.2. Slika 5.3 sumira ove inference. Na primer, linija (i) kae da moemo infersati da je string ujeziku za I koricenjem produkcije 5. Linije (ii) do (iv) kau da moemo inferisati da je b00 identikatorkoricenjem produkcije (6) jedanput (da bi dobili b) i zatim primenom produkcije 9 dvaput (da bi dodalidve 0-le).

    Linije (v) i (vi) istrauju produkciju 1 da inferiu da, poto bilo koji dentikator predstavlja izraz, stringovia i b00, koje smo inferisali u linijama (i) i (iv) da su identikatori, su takodje jezici varijable E. Linija(vii) koristi produkciju 2 da bi inferisala da je suma ovih identikatora jedan izraz; linija (viii) koristiprodukciju, 4 da inferie da isti string sa zagradama oko njih je takodje jedan izraz, i linija (ix) koristiprodukciju 3 da pomnoi identikator a sa izrazom koji smo otkrili u liniji (viii). Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 12

    3.Slika 5.3. Inferisanje stringova koricenjem gramatike na slici 5.2

    Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 13

    Proces izvodjenja stringova primenom produkcija od glave do tela zahteva deniciju novog simbola) : Pretpostavimo da je G = (V; T; P; S) CFG. Neka je A string terminala i varijabli, gde je Avarijabla. To jest, i su stringovi u (V [ T ), i A je u V . Neka je A ! produkcija od G. Ondakaemo da A ) : Ako se G razume, dovoljno je reci A ) . Zapazimo da jedan korak uizvodjenju menja bilo koju varijablu bilo gde u stringu sa telom jedne produkcije.

    Moemo proiriti) vezu da predstavimo nula, jednu, ili vie koraka izvodjenja, skoro kao to je funkcijaporelaza konacne automatizacije bila proirena na

    ^

    : Za izvodjenje, koristimo da oznacimo "nula ilivie koraka," na sledeci nacin:

    BAZA: Za bilo koji string terminala i varijabli, kaemo da )G; To jest, bilo koji string izvodi sebe.

    INDUKCIJA: Ako )G i )

    G

    ; onda )

    G

    : To jest, ako moe postati jednim u nula ili vie

    koraka, i jedan vie korak traje do ; onda moe postati : Drugacije receno, )G znaci da

    postoji sekvenca stringova 1; 2; :::; n, za neko n 1; tako da1) = 1:2) = n; i3) za i = 1; 2; :::; n 1, imamo i ) i+1Ako se gramatika razume, onda koristimo ) umesto )

    G:

    Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 14

    Primer 5.5: Inferenca koja je a (a + b00) je u jeziku varijable E moe se reektovati u derivaciji togstringa, pocevi sa stringom E. Ovde je jedna takva derivacija:

    E ) EE ) I E ) aE ) a(E)) a(E+E)) a(I+E)) a(a+E)) a(a+I)) a(a+I0)) a (a + I00)) a (a + b00)

    U prvom koraku, E je zamenjen sa telom produkcije 3 (iz slike 5.2). U drugom koraku, produkcija 1se koristi da se zameni prvo E sa I, i tako dalje. Zapazimo da smo sistematski prihvatili procedurustalnog zamenjivanja najlevlje varijable u stringu. Medjutim, u svakom koraku moemo izabrati kojuvarijablu da zamenimo, i moemo koristiti bilo koju od produkcija za tu varijablu. Na primer, u drugomkoraku, mogli smo da zamenimo drugo E sa (E), koricenjem produkcije (4). U ovom slucaju, moglibi da kaemo E E ) E (E): Mogli smo da izaberemo da napravimo zamenu koja ne bi uspela davodi ka istom stringu terminala. Prost primer bi bio ako bismo koristili produkciju 2 u prvom koraku, irekli E ) E + E: Nijedna zamena za dva E nikada ne bi mogla da pretvori E + E u a (a + b00).

    Mogli bismo koristiti ) relaciju da bi umanjili izvodjenje. Znamo E ) E prema bazi. Ponovljenaupotreba induktivnog dela nam daje E ) E E;E ) I E; i tako dalje, dok konacno E ) a (a+b00):

    Dva pogleda - rekurzivna inferenca i izvodjenje - su ekvivalentna. To jest, string terminala ! je inferisanda je u jeziku neke varijable A ako i samo ako je A ) !. Medjutim, dokaz ove cinjenice zahteva rad, iostavljamo ga za sekciju 5.2.

    Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 15

    0.1.4 Najlevlje i najdenjije izvodjenjeDa bi uradili restrikciju broja izbora koje imamo u izvodjenju stringova, cesto je korisno zahtevati da usvakom koraku zamenimo najlevlju varijablusa jednom od njenih tela produkcija. Ovako izvodjenje senaziva najlevlje izvodjenje, i indiciramo da je izvodjenje najlevlje koricenjem relacije)

    Imi )Im, za jedan

    ili vie koraka, respektivno. Ako je gramatika G koja se koristila nije ocigledna, moemo staviti ime Gispod strelice u bilo kom od ovih simbola.

    Slicno, moguce je zahtevati da u svakom koraku dajdenja varijabla je zamenjena sa jednim od nje-govih tela. Ako je tako, zovemo derivaciju najdenjom i koristimo simbole )

    rmi )rmda indiciramo jednu

    ili vie najdenjih koraka, respektivno. Ponovo, ime gramatike moe da se javi ispod ovih simbola akonije jasno koja gramatika se koristi.

    Primer 5.6: Izvodjenje u primeru 5.5 je u stvari najlevlje izvodjenje. Otuda, moemo opisati istoizvodjenje sa:E ) E E ) I E ) a E ) a (E)) a (E + E)) a (I + E)) a (a + E)) a (a + I)) a (a + I0)) a (a + I00)) a (a + b00))Moemo takodje sumirati najlevlje izvodjenje kazavi E )

    Ima(a + b00); ili izraava nekoliko koraka

    izvodjenja izrazima kao to su EE )Ima(E):

    Postoji najdenje izvodjenje koje koristi iste zamene za svaku varijablu, mada pravi zamene na razlicitnacin. Ova najdenja izvodjenja su:Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 16

    Ovo izvodjenje nam dozvoljava da zakljucimo E )rma(a + b00)

    Svako izvodjenje ima ekvivalentno najlevlje i ekvivalentno najdenje izvodjenje. To jest, ako je !terminalni string, i A je varijabla, onda A = ! ako i samo ako A ) !; i A ) ! ako i samo ako jeA

    ) !: Mi cemo takodje dokazati ove zakljucke u sekciji 5.2.

    Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 17

    0.1.5 Jezik gramatike

    Ako je G = (V; T; P; S) CFG, jezik og G, u oznaci L(G), je skup terminalnih stringova koji imajuizvodjenja iz startnog simbola. To jest,

    L(G) =n! je u T j S )

    G!o

    Ako je jezik L jezik neke kontekstno-slobodne gramatike, onda se kae da je L kontekstno slobodnijezik, ili CFL. Na primer, tvrdili smo da gramatika na slici 5.1 denie jezik palindroma nad azbukomf0; 1g : Otuda, skup palindroma je kontekstno-slobodan. Moemo dokazati ovu izjavu, na sledecinacin.

    Teorema 5.7. L(Gpal) gde Gpal je gramatika u primeru 5.1, je skup palindroma nad f0; 1g :Dokaz: Dokazacemo da je string ! u f0; 1g je u L(Gpal) ako i samo ako je palindrome; tj., ! = !R:(ako) Pretpostavimo da je ! palindrome: Pokazujemo indukcijom na j!j da ! je u L(Gpal).BAZA: Koristimo duine 0 i 1 za baza. Ako j!j = 0 ili j!j = 1; onda je ! je ; 0; ili 1: Poto postojeprodukcije P ! ; P ! 0, i P ! 1; zakljucujemo da P ) ! u bilo kom od ovih bazisnih slucajeva.INDUKCIJA: Pretpostave j!j 2: Poto ! = !R, ! mora poceti i zavriti istim simbolom. To jest,! = 0x0 ili ! = 1x1: tavie, x mora biti palindrom; tj., x = xR. Primetimo da nam treba cinjenica daTeorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 18

    j!j 2 da bi inferisali da postoje razlicite 0-le ili 1-ce, na bilo kom kraju od !:

    Ako ! = 0x0; tada pozivamo induktivni hipotezu da bi tvrdili da P ) x: Tada postoji izvodjenje od ! izP , imenom P = 0P0 ) 0x0 = !: Ako je ! = 1x1, argument je isti, ali mi koristimo produkciju P ! 1P1u prvom koraku. U bilo kom slucaju, zakljucujemo da ! je u L(Gpal) i kompletiramo dokaz.

    (samo ako) Sada, pretpostavimo da ! je u L(Gpal); to jest, P) !: Moramo zakljuciti da je ! je

    palindrome. Dokaz je indukcija na broj koraka u izvodjenju od ! iz P .

    BAZA: Ako je izvodjenje u jednom koraku, ona mora koristiti jednu od tri produkcije koja nema P utelu. To jest, izvodjenje P ) ; P ) 0; ili P ) 1: Poto ; 0; ili 1 su svi palindrome, baza je dokaza.

    INDUKCIJA: Sada, pretpostavimo da izvodjenje traje n + 1 koraka, gde n 1; i izjava je tacna za svaizvodjenja u n koraka. To jest, ako P ) x u n koraka, onda je x palindrome.

    Razmotrimo jedan (n + 1) korak u izvodjenju od !, koji moraju biti u obliku

    P ) 0P0 ) 0x0 = !ili P ) 1P1 ) 1x1 = !; poto n + 1 korak je najmanje dva korak, i produkcije P ! 0P0 i P ! 1P1 sujedine produkcije koje nam dozvoljavaju dodatne korake u izvodjenju. Zapazimo u oba slucaja, P ) xi n koraka.Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 19

    Prema induktivnoj hipotezi, znamo da je x palindrom; to jest, x = xR. Ali, ako je tako, onda 0x0 i 1x1 sutakodje palindrome. Na primer, (0x0)R = 0xR0 = x0x. Zakljucujemo da je ! palindrom, to kompletiradokaz.

    0.1.6 Recenicna forma

    Izvodjenje od pocetnog simbola proizvodi stringove koji imaju specijalnu ulogu. Zovemo ih "recenicnimformama". To jest, ako G = (V; T; P; S) je CFG, tada bilo koji string u (V [ T ) tako da S ) jerecenicna forma. Ako je S )

    Im; onda je je levo recenicna forma, a ako je S )

    rm; onda je desno-

    recenicna forma. Zapazimo da je jezik L(G) one recenicne forme koje su u T ; tj., one se sastojeiskljucivo od terminala.

    Primer 5.8. Razmotrimo gramatika za izraze sa slike 5.2. Na primer, E(I + E) je recenicna forma,poto postoji izvodjenje

    Medjutim ovo izvodjenje nije ni najlevlje ni najdenje, poto u poslednjem koraku, srednji E je zamen-jen.

    Kao primer levo recenicne forme, razmotrimo a E, sa najlevljim izvodjemTeorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 20

    Dodatno, izvodjenje

    pokazuje da E (E + E) je desno - recenicna forma.

    Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 21

    0.2 Drva parsiranja

    Postoji prezentacija pomocu stabala koja se dokazala veoma korisnom. Ovo drvo pokazuje namajasno kako simboli terminalnog stringa su grupisani u podstringove, svaki od kojih pripada jeziku jedneod promenljivih u gramatici. Ali moda jo vanije, drvo, poznato kao drvo parsiranja, kada se ko-riste u komajleru, je struktura podataka koji su izabrani da predstavljaju izvorni program. U komajleru,struktura drveta izvornom programu omogucava translaciju izvornom programu u izvrni kod dozvolja-vanjem prirodne, rekurzivne funkcije da izvri ovaj proces translacije.

    U ovoj sekciji, mi uvodimo drvo parsiranja i pokazujemo da je postojanje drveta parsiranja vezanoblisko postojanju izvodjenju i rekurzivne inference. Kasnije cemo studirati tematiku nejasnoca u gra-matici i jezicima, koji je vana primena drveta parsiranja. Odredjene gramatike dozvoljavaju termi-nalnom stringu da imaju vie od jednog drveta parsiranja. Ova situacija cini ramatiku nepogodnomza programski jezik, poto komajler ne moe reci strukturu izvornom programu, i stoga ne moe sasigurnocu zakljuciti ta ispravan izvrni kod za program znaci.

    0.2.1 Konstruisanje drveta parsiranja

    Koncentriimo se na gramatiku G = (V; T; P; S). Drvo parsiranja za G su drveta sa sledecim uslovima:

    1) Svaki unutranji cvor jeoznacen promenljivom u V .2) Svaki list je oznacen bilo sa promenenljivom, ili terminalom, ili : Medjutim, ako je list oznacen ;onda mora biti jedino dete svog roditelja.Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 22

    3) Ako nisu svi varceni, vratite sveAko je unutranji cvor oznacen sa A, i njegova deca su oznacena sa

    X1; X2; :::; Xk

    respektivno, s leva, onda A! X1X2:::Xk je produkcija u P . Zapazimo da je jedini trenutak kada jedanod X-ova moe biti je ako je to oznaka jedinog deteta, i A! je produkcija u G.

    Primer 5.9. Slika 5.4 pokazuje drvo parsiranja koje koristi gramatiku izraza na slici 5.2. Koren jeoznacen sa promenljivom E. Vidimo da produkcija koja se koristi u korenu je E ! E + E; poto trideteta korena imaju oznake E, +, i E, respektivno, s leva. Na najlevljem detetu korena, produkcijaE ! I se koristi, poto postoji jedno dete na tom cvoru, oznaceno sa I.

    Primer 5.10. Slika 5.5 pokazuje drvo parsiranja za palindrom gramatike date na slici 5.1. Produkcijakoja se koristi u korenu je P ! 0P0; i srednje dete korena je P ! 1P1: Zapazimo da je na dnuupotrebljena P ! : Ovakva upotreba, kada je cvor oznacen sa glavom ima jedno dete, oznacena sa, je jedini nacin kada se cvor oznacen sa moe pojaviti u drvetu parsiranja.Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 23

    Slika 5.4: Drvo parsiranja kojepokazuje izvodjenje od I+E do E

    Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 24

    Slika 5.5: Drvo parsiranja kojepokazuje izvodjenje P ) 0110

    Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 25

    0.2.2 Rezultat drveta parsiranja

    Ako pogledamo listove bilo kog drveta parsiranja i konketiniramo ih sa leva, dobicemo string, koji senaziva prinos drveta, koji je uvek string koji je izveden iz korene promenljive. Cinjenica da je prinosizveden iz korena bice dokazan za kratko vreme. Od specijalnog interesa su ona drveta parsiranjatakva da:

    1) Prinos je terminalni string. To jest, svi listovi su oznaceni sa terminalom ili sa :2) Koren je oznacen sa strtnim simbolom.

    Oni su drveta parsiranja ciji prinos su stringovi u jeziku naglaene gramatike. Isto tako cemo ubrzodokazati da drugi nacin da opiemo jezik gramatike je skup koji nosi sva ona drveta parsiranja kojiimaju pocetni simbol u korenu i terminalni simbol kao prinos.

    Primer 5.11. Slika 5.6 je jedan primer drveta sa terminalnim stringom kao prinosom i pocetnim sim-bolom u korenu; baziran je na gramatici za izraze koje smo uveli na slici 5.2. Ova drveta nose stringa(a + b00) koji je izveden u primeru 5.5. U stvari, kao to cemo videti, ovo konkretno drvo parsiranjaje reprezentacija ovog izvodjenja.

    Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 26

    0.2.3 Inferenca, izvodjenje, i drveta parsiranjaSvaka od ideja koje smo uveli do sada za opis kako gramatika radi nam daje esencijalno iste cinjeniceo stringu. To jest, za datu gramatiku G = (V; T; P; S), pokazacemo da je sledece ekvivalentno:

    1) Procedura rekurzivne inference odredjuje da je terminalni string ! u jeziku promenljive A.2) A ) !3) A )

    Im!

    4) A )rm!

    5) Postoji drvo parsiranja sa korenom A koje prinosi !:

    U stvari, osim za upotrebu rekurzivne inference, koju smo samo denisali za terminalne stringove, sviostali uslovi - postojanje izvodjenja, najlevlja ili najdenje izvodjenje, i drveta izvodjenja - su takodjeekvivalentna ako je ! string koji ima neke promenljive.

    Treba da dokaemo ove ekvivalentnosti, i radimo to koricenjem plana na slici 5.7. To jest, svaki luk natom dijagramu indicira da dokazujemo teoremu koja kae da ako ! zadovoljava uslov na repu, ondazadovoljava uslov na pocetku luka. Na primer, pokazucemo u teoremi 5.12 da ako ! je inferisan da jejezik od A pomocu rekurzivne inference, onda postoji drvo parsiranja sa korenom A koje nosi !:

    Zapazimo da dva od lukova su veoma jednostavna i nece biti dokazana formalno. Ako ! ima najlevljeizvodjenje od A, onda sigurno ima izvodjenje od A, poto je najlevlje izvodjenje zapravo derivacija.Slicno, ako !, ima najdenje izvodjenje, onda sigurno ima izvodjenje. Sada nastavljamo da dokaemoTeorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 27

    4.Slika 5.6. Drvo parsiranja koje pokazuje a (a + b00) je u jeziku nae gramatike izraza

    Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 28

    5.Slika 5.7: Dokazivanje ekvivalentnosti odredjivanja odredjenih izjava o gramatici

    tee korake ove ekvivalentnosti.

    Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 29

    6.Slika 5.8: Drvo konstruisano u bazisnom slucaju Teoreme 5.12

    0.2.4 Od Inference do drveta

    Teorema 5.12: Neka je G = (V; T; P; S) jedna CFG. Ako nam procedura rekurzivne inference govorida terminalni string ! je u jeziku varijable A, onda postoji drvo parsiranja sa korenom A i prinosom !:

    Dokaz: Dokaz je indukcija na broj koraka koji se koriste da se inferie da ! je u jeziku od A.

    BAZA: Jedan korak. Onda samo baza procedure inference mora biti koricena. Stoga, mora bitiprodukcija A! !. Drvo sa slike 5.8, gde postoji jedan list za svaku poziciju od !, zadovoljava usloveda je drvo parsiranja za gramatiku G, i evidentnoima prinos ! i koren A. u specijalnom slucaju da je! = , drvo ima jedan list oznacen sa i legalno je drvo parsiranja sa korenom A i pri nosom !:

    INDUKCIJA: Pretpostavimo da je cinjenica ! u jeziku od A inferisana nakon n + 1 koraka, i da jeTeorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 30

    izjava teoreme u vanosti za sve stringove x i varijable B tako da clanstvo od x u jeziku od B je biloinferisano koricenjem n ili manje koraka inferencije. Razmotrimo poslednji korak inferencije da je !je u jeziku od A. Ova inferencija koristi neku produkciju od A, recimo A! X1X2:::Xk; gde svako Xi jebilo varijabla ili terminal.

    Mi delimo ! sve do w1w2:::wk, gde:

    1) Ako je Xi terminal, onda wi = Xi; tj., wi se sastoji od samo ovog jednog terminala od produkcije.2) Ako je Xi promenljiva, onda wi je string koji je prethodno inferisan da je u jeziku od Xi. To jest,inferenca o wi uzima najvie n od n + 1 koraka inference za w u jeziku od A. Ne moe uzeti svihn + 1 koraka, jer konacni korak, koji koristi produkciju A ! X1X2:::Xk; sigurno nije deo inference owi. Konsekventno, moemo primeniti induktivnu hipotezom za wi i Xi, i zakljucujemo da postoji drvoparsiranja koji prinosi wi i koren Xi.Mi onda konstruiemo drvo sa korenom A i prinosimo w, kao to je sugerisano na slici 5.9. Postojikoren oznacen sa A, cija deca su X1; X2; :::; Xk. Ovaj izbor je ispravan, poto A ! X1X2:::Xk jeprodukcija od G.

    Cvor svakog Xi pravi koren poddrveta koje nosi wi. U slucaju (1), gde Xi je w terminal, ovo poddrvoje trivijalno drvo sa jednim cvorom oznacenim sa Xi. To jest, poddrvo se sastoji od samo ovog detetakorena. Poto wi = Xi u slucaju (1), susrecemo uslov da je prinos podrdveta wi.

    U slucaju (2), Xi je varijabla. Onda, pozivamo se na induktivnu hipotezu da tvrdimo da postoji nekodrvo sa korenom Xi i prinosom wi. Ovo drvo je prikaceno cvoru od Xi na slici 5.9.Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 31

    7.Slika 5.9: Drvo koje se koristi u iduktivnom delu dokaza Teoreme 5.12

    Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 32

    Drvo ovako konstruisano ima koren A. Njegov prinos je prinos podrveta, konkateniran sa leva nadesno. Ovaj string je w1w2:::wk, koji je w.

    Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 33

    0.2.5 Od drveta do izvodjenja

    Sada cemo pokazati kako da konstruiemo najlevlje izvodjenje iz drveta parsiranja. Metoda za kon-struisanje najdenjeg izvodjenja koristi iste ideje, i sada necemo istraivati najdenji slucaj izvodjenja.Da bi razumeli kako izvodjenja mogu da se konstruiu, treba prvo da vidimo kako jedno izvodjenjestringa iz varijable moe biti ukljuceno unutar drugog izvodjenja. Jedan primerbi trebao da ilustrujeovu tacku.

    Primer 5.13. Razmotrimo ponovo izraz gramatike na slici 5.2. Lako je proveriti da postoji izvodjenje

    Kao rezultat, za bilo koje stringove i , takodje je tacno da

    Opravdanje je da moemo napraviti iste izmene tela produkcija za glave u kontekstu od i kao tomoemo u izolaciji.

    Na primer, ako imamo izvodjenja koje pocinje koje pocinje E ) E+E ) E+(E), mogli smo primenitiizvodjenje od ab iz drugog E tretiranjem "E + (" kao i ) kao : Ovo izvodjenje bi se onda nastaviloTeorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 34

    Sada smo sposobni da dokaemo teoremu koja nam dozvoljava da konvertujemo drvo parsiranja unajlevlje izvodjenje. Dokaz je indukcija na visinu drveta, koje je maksimalne duine na putanju kojapocinje u korenu, i nastavlja niz potomke, do lista. Na primer, visina drveta na slici 5.6 je 7. Najduakoren do lista putanja u ovom drvetu ide u list oznacena je sa b. Zapazimo da putanje konvencionalnoracunaju sve ivice, ne cvorove, tako da se putanja sastoji od jednog cvora je duine 0.

    Teorema 5.14. Neka je G = (V; T; P; S) jedna CFG, i pretpostavimo da postoji drvo parsiranja sakorenom oznacenim varijablom A i ciji je prinos w, gde w je u T . Onda postoji najlevlje izvodjenjeA

    )Imw u gramatici G.

    Dokaz: Izvravamo indukciju na visinu drveta.

    BAZA: Baza je visine 1, najmanje koliko drvo parsiranja sa prinosom terminala moe biti. U ovojslucaju, drvo mora izgledati kao na slici 5.8, sa korenom oznacenim sa A i decom koja citaju w, s levana desno. Poto ovo trvi je drvo parsiranja, A! w mora biti produkcija. Otuda, A)

    Imw je jedan korak,

    najlevlja derivacija od w od A.

    INDUKCIJA: U visini ovog drveta je n, gde n > 1, mora izgledati kao na sli 5.9. To jest, postoji korenoznacen sa A, i decom oznacenom sa X1; X2; :::; Xk sa leva:Xovi mogu biti bilo terminali ili varijable.Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 35

    1) Ako je Xi terminal, deniimo wi da bude string koji se sastoji od Xi samo.2) Ako je Xi varijabla, onda mora biti koren istog poddrveta sa prinosom od terminala, koji cemo zvatiwi. Zapazimo da u ovom slucaju, poddrvo je visine manje od n, tako da induktivna hipoteza se moeprimeniti na to. To jest, postoji najlevlje izvodjenje Xi

    )Imwi:

    Zapazimo da w = w1w2:::wk.

    Konstruiemo najlevlje izvodjenje od w na sledeci nacin. Pogotovu sa korakom A)ImX1X2:::Xk: Onda,

    za svako i = 1; 2; :::; k, redosledom, pokazujemo da

    Ovaj dokaz je zapravo druga indukcija, ovog puta na i. Za bazu, i = 0, vec znamo da A)ImX1X2:::Xk:

    Za indukciju, pretpostavimo da

    a) Ako je Xi je terminal, ne raditi nita. Medjutim, mi cemo subsekventno misliti o Xi kao terminalstringa wi. Otuda, vec imamoTeorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 36

    b) Ako Xi varijabla, nastavimo sa izvodjenjem od wi od Xi u kontekstu izvodjenja koji je konstruisan.To jest, ako je izvodjenje

    Xi )Im1 )

    Im2:::)

    Imwi

    nastavljamo saTeorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 37

    Rezultat je izvodjenje A )Imw1w2:::wiXi+1:::Xk:

    Kada je i = k, rezultat je najlevlje izvodjenje od w iz A.

    Primer 5.15. Konstruiimo najlevlje izvodjenje za drvo na slici 5.6. Pokazacemo samo konacan ko-rak, gde konstruiemo izvodjenje od celog drveta koje odgovara poddrvetu od korena. To jest, pret-postavicemo da pomocu rekurzivne aplikacije tehnike u teoremi 5.14, mi smo zakljucili da poddrvoTeorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 38

    ukorenjeno na prvom detetu korena ima najlevlje izvodjenje E ) I ) a; dok je pod drvo koje jeukorenjeno na trecem detetu korena ima najlevlje izvodjenje.

    Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 39

    Da bi se izradilo najlevlje izvodjenje za celo drvo, pocinjemo sa korakom u korenu: E )ImE _E: Onda,

    zamenimo prvo E prema njegovom izvodjenju, koji prati svaki korak sa E da se uracuna u vecemkontekstu u kome je to izvodjenje koricenoi. Najlevlje izvodjenje do sada je stoga

    E )ImE E )

    ImI E )

    Ima E

    u produkciji koja se koristi kao koren ne zahteva izvodjenja, tako da gornje najlevlje izvodjenje takodjeracuna prva dva deteta od korena. Kompletiramo najlevlje izvodjenje koricenjem izvodjenja E )

    Im

    (a + b00); u kontekstu gde je prethodjen sa a i pracen sa praznim stringom. Ovo izvodjenje zapravose javlja u Primer 5.6, to jest:Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 40

    Slicna teorema nam dozvoljava da konvertujemo drvo u najdenje izvodjenje. Konstrukcija najdenjegizvodjenja od drveta je skoro ista kao konstrukciju najlevljeg izvodjenja. Medjutim, nakon zapocinjenjasa korakom A) X1X2:::Xk, proirujemo Xk prvo, koricenjem najdenjeg izvodjenja, onda proirimoXk1, i tako dalje, do X1. Otuda, inaglasicemo bez daljeg dokaza:Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 41

    Teorema 5.16: Neka je G = (V; T; P; S) CFG, i pretpostavimo da postoji drvo sa korenom oznacenimsa varijablom A i sa prinosom w, gde w je u T . Onda postoji najdenje izvodjenje A )

    rmw u gramatici

    G.

    Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 42

    0.2.6 Od izvodjenja do rekurzivne reference

    Sada cemo kompletirati petlu sugerisanu na slici 5.7 pokazujuci da kada god postoji drvo izvodjenjaA

    ) w za neku CFG, onda cinjenica da w je u jeziku A je otkrivena u proceduri rekurzivne inference.Pre davanja teoreme i dokaza, zapazimo neto vano o izvodjenjima.

    Pretpostavimo da imamo izvodjima A ) X1X2:::Xk ) w: Onda moemo podeliti w u delove w =w1w2:::wk tako da Xi

    ) wi: Zapazimo da ako Xi je terminal , onda wi = Xi, i izvodjenje je nula koraka.Dokaz ovog osmatranja nije teak. Moete dokazati indukcijom na broj koraka izvodjenja, da akoX1X2:::Xk

    ) , tada sve pozicije od koji dolaze od izraza od Xi su levo od svih pozicija koji dolazeod izraza od Xj, ako je i < j.Ako je Xi promenljiva, moemo dobiti izvodjenje od Xi

    i) wi pocevi sa izvodjenjem A ) wa) sve pozicije recenicne forme koji su bili bilo sa leve ili desne strane koji su izvedeni od Xi, ib) svi koraci koji nisu relevantni izvodjenju od wi iz Xi.

    Jedan primer bi trebao da razjasni proces.

    Primer 5.17. Koricenjem izraza gramatike na slici 5.2, razmotrimo izvodjenje

    Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 43

    Razmotrimo trecu recenicnu formu, EE + E, i sredinu E u ovoj formi.

    Pocinjuci od EE + E, moemo pratiti korake gornjeg izvodjenja, ali odstupiti kada god su pozicijeizvedene iz E levo od centralnog E ili izcvedenog od +E na desno. Koraci izvodjenja onda postajuE;E; I; I; I; b; b. To jest, sledeci korak ne menja centralno E, korak nakon to se promeni u Im sledecadva koraka ostavljaju ga kao I, sledeci ga menja u b, i konacni korak ne menja ta je izvedeno izcentralnog E.

    Ako uzmemo samo korake koji menjaju ta dolazi iz centralnog E, sekvenca stringova E;E; I; I; I; b; bpostaje izvodjenje E ) I ) b: Ovo izvodjenje korektno opisuje kako centralno E evolvira za vremekompletnog izvodjenja.

    Teorema 5.18. Neka je G = (V; T; P; S) CFG, i pretpostavimo da postoji izvodjenje A )Gw ; gde je w u

    T . Onda je procedura rekurzivne inference primenjena na G odredjuje da w je u jeziku L varijable A.

    Dokaz: Dokaz je indukcija na duinu derivacije A ) w:BAZA: Ako je izvodjenje u jednom koraku, onda A ! w mora bitiprodukcija. Poto se w sastoji odterminala samo, cinjenica da w je u jeziku od A ce biti otkrivena u delu bazisa procedure rekurzivneinference.

    INDUKCIJA: Pretpostavimo da je izvodjenje uzima n+1 koraka, i pretpostavimo da za bilo koje izvod-jenje od n ili manje koraka, izjava vai. Zapiimo izvodjenje kao A ) X1X2:::Xk ) w: Onda, kao toje razmatrano u prethodnoj teoremi, moemo podeliti w kao w = w1w2:::wk, gde:Teorija algoritama, jezika i automata

  • Kontekstno slobodne gramatike i jezici 44

    a) Ako je Xi terminal, onda wi = Xi.b) Ako je Xi varijabla, onda Xi

    ) wi: Poto je prvi korak izvodjenja A ) w je sigurno nedeo izvodjenjaXi

    ) wi, mi znamo da je ovo izvodjenje je u n koraka ili manje koraka. Stoga, induktivna hipoteza semoe primeniti na njega, i znamo da wi je inferisano da je jezik od Xi.

    Sada, mi imamo produkciju A ! X1X2:::Xk, sa wi bilo jednaku Xi ili poznatu da je jezik od Xi. Usledecem koraku procedure rekurzivne indukcije, otkricemo da w1w2:::wk je u jeziku od A. Potow1w2:::wk = w1, pokazali smo da w je inferisan da je u jeziku od A.

    Teorija algoritama, jezika i automata