dio ii: kontekstno-slobodni jezici -...

49
14.4.2011. 1 Dio II: Kontekstno-slobodni jezici Robert Manger, ožujak 2011 Sveučilište u Osijeku, Rijeci, Splitu i Zagrebu Zajednički sveučilišni poslijediplomski doktorski studij matematike Standardni kolegij Matematička logika i računarstvo Drugi semestar 6. Kontekstno-slobodne gramatike 7. Potisni automati 8. Gramatike i ekvivalencije 9. Svojstva kontekstno-slobodnih jezika 10. Primjene kontekstno-slobodnih gramatika TR-II Kontekstno-slobodni jezici 2 Sadržaj dijela II

Upload: others

Post on 06-Feb-2020

5 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

1

Dio II:Kontekstno-slobodni jezici

Robert Manger, ožujak 2011

Sveučilište u Osijeku, Rijeci, Splitu i ZagrebuZajednički sveučilišni poslijediplomski doktorski studij matematike

Standardni kolegij

Matematička logika i računarstvoDrugi semestar

6. Kontekstno-slobodne gramatike

7. Potisni automati

8. Gramatike i ekvivalencije

9. Svojstva kontekstno-slobodnih jezika

10. Primjene kontekstno-slobodnih gramatika

TR-II Kontekstno-slobodni jezici 2

Sadržaj dijela II

Page 2: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

2

• U prethodnim poglavljima proučavali smo regularne jezike, koji se mogu opisati RI-ima i prepoznati KA-ima. Vidjeli smo da je porodica regularnih jezika dosta mala.

• U ovom dijelu kredemo u potragu za vedom porodicom jezika, opdenitijim načinom njihovog opisivanja i složenijim automatima za njihovo prepoznavanje.

• Počinjemo s novim mehanizmom za generiranje riječi koji se zove gramatika. Vidjet demo da gramatike mogu opisati vedu porodicu jezika nego RI.

• Za sada se ograničavamo na jednu posebnu vrstu gramatika, a to su kontekstno-slobodne gramatike.

TR-II Kontekstno-slobodni jezici 3

6.0 Uvod u kontekstno-slobodne gram

• Gramatika se sastoji od:– skupa varijabli (također se zovu neterminali),– skupa terminala (iz alfabeta),– liste produkcija (ili pravila).

• Primjer 6.1. Evo jedne kontekstno-slobodne gramatike:S 0S1S εOvdje je S jedina varijabla, terminali su 0 i 1, postoje dvije produkcije. Varijable se pišu velikim slovom.

• Kako funkcionira gramatika? Uzme se riječ koja sadrži varijablu, pa se u toj riječi varijabla zamijeni s desnom stranom produkcije.

TR-II Kontekstno-slobodni jezici 4

6.1 Produkcije i izvodi (1)

Page 3: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

3

• Kažemo da je riječ w sastavljena od samih terminala generirana gramatikom ako, krenuvši od polazne varijable S, primjenjujudi produkcije možemo dodi do w. Niz riječi koje na taj način dobivamo zove se izvod od w.

• Primijetimo da se u gramatici gotovo uvijek pojavljuje rekurzija. Dakle, produkcije na rekurzivan način opisuju građu neke riječi.

• Ovakva vrsta gramatike s kojom sada radimo zove se kontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi generirane nekom KSG.

TR-II Kontekstno-slobodni jezici 5

6.1 Produkcije i izvodi (2)

• Primjer 6.1 (nastavak). Riječ 0011 spada u jezik kojeg generira prethodno zadana gramatika. Izvod ide ovako:S 0S1 00S11 0011Prva dva koraka koriste prvu produkciju, a zadnji korak drugu produkciju.Lako se vidi da se jezik koji naša gramatika generira sastoji od svih riječi s jednakim brojem uzastopnih nula i jedinica. Dakle gramatika opisuje dobro nam poznati neregularni jezik: { 0n1n | n≥0 } .

• Kradi način zapisivanja gramatike iz Primjera 6.1 je:S 0S1 | εOkomita crta znači “ili”.

TR-II Kontekstno-slobodni jezici 6

6.1 Produkcije i izvodi (3)

Page 4: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

4

• Primjer 6.2. Znamo da jezik palindroma nad alfabetom {a, b} nije regularan. No za njega možemo nadi KSG i to služedi se rekurzivnom dekompozicijom. – Ako palindromu ogulimo prvi i zadnji znak, on ostaje

palindrom.– Ako palindrom omotamo sprijeda i straga istim znakom, on

je i dalje palindrom

Dakle imamo ovakvu KSG:P aPa | bPb | εOvime se zapravo generiraju samo palindromi parne duljine. Za vježbu probajte doraditi KSG tako da uključi sve palindrome.

TR-II Kontekstno-slobodni jezici 7

6.1 Produkcije i izvodi (4)

• Kontekstno slobodna gramatika je uređena četvorka (V, Σ, S, P) gdje je:

– V konačni skup varijabli,

– Σ alfabet čije elemente zovemo terminali,

– S startna varijabla, S je element od V,

– P konačni skup produkcija. Svaka produkcija je oblika:

element iz V element iz skupa (V Σ)*

TR-II Kontekstno-slobodni jezici 8

6.2 Formalna definicija KSG

Page 5: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

5

• Pitamo se kako za zadani jezik konstruirati KSG-u koja ga generira? Nema nekog pouzdanog recepta, služimo se iskustvom i intuicijom. U nastavku slijedi nekoliko poučnih primjera.

• Primjer 6.3. Evo KSG-e koja generira regularni jezik binarnih riječi s parnim brojem nula.– Ako je prvi znak 1, tada ostaje paran broj nula. – Ako je prvi znak 0, tada idemo do idude 0, a ono što je

ostalo iza opet je riječ s parnim brojem nula.

Dakle:S 1S | 0A0S | ε A 1A| ε

TR-II Kontekstno-slobodni jezici 9

6.3 Konstrukcija KSG za zadani jezik (1)

• Primjer 6.3 (nastavak). Isti jezik može imati više gramatika. Sad demo nadi drugu KSG za binarne riječi s parnim brojem nula. Uvodimo varijablu T koja generira binarne riječi s neparnim brojem nula.S 1S | 0T | ε T 1T| 0S

• Primjer 6.4. Slijedi KSG za regularni jezik koji odgovara RI-u 00*11*. Ideja konstrukcije je da je to jezik dobiven konkatenacijom dvaju jezika, u prvom su nizovi nula, a u drugom nizovi jedinica.S CDC 0C | 0D 1D | 1

TR-II Kontekstno-slobodni jezici 10

6.3 Konstrukcija KSG za zadani jezik (2)

Page 6: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

6

• Primjer 6.5. Sad demo napraviti KSG za komplementod prethodnog jezika { 0i1j | i, j > 0 } . Ideja je da se riječi koje nisu iz prethodnog jezika promatraju kao one koje imaju jednu od tri “manjkavosti”:– loš redoslijed, negdje postoji 1 ispred 0,– samo nule,– samo jedinice.

Dakle imamo produkcije:S A | B | C | ε …(jedna od tri manjkavosti ili prazno)

A D10D …(loš raspored)

D 0D | 1D | ε … (bilo kakav niz nula i jedinica)

B 0B | 0 … (same nule)

C 1C | 1 … (same jedinice)TR-II Kontekstno-slobodni jezici 11

6.3 Konstrukcija KSG za zadani jezik (3)

• Da bismo provjerili da se gramatika i opis jezika podudaraju, moramo provjeriti dvije stvari:– Sve što gramatika proizvodi uklapa se u opis -

konzistencija,– Sve što se uklapa u opis može se generirati gramatikom –

potpunost.

• Primjer 6.6. Promatramo sljededu KSG:S 0S1S | 1S0S | ε Riječ 011100 nalazi se u jeziku kojeg gramatika generira jer na primjer imamo ovakav izvod:S 0S1S 01S 011S0S 0111S0S0S 01110S0S 011100S 011100Što sadrži ovaj jezik?

TR-II Kontekstno-slobodni jezici 12

6.3 Konstrukcija KSG za zadani jezik (4)

Page 7: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

7

Sigurno je da svaka generirana riječ mora imati jednak broj 0 i 1 (konzistencija). No da li se svaka riječ s jednakim brojem 0 i 1 može generirati (potpunost)? Da. Evo zašto.Uzmimo riječ s jednakim brojem 0 i 1. Bez obzira kojim znakom ta riječ počinje, na nekom mjestu mora se postidi jednakost između broja 0 i 1. Ako riječ počinje s 0, tada prvo mjesto postizavanja jednakosti mora biti 1. No tada dio riječi između početne 0 i tog 1 opet mora postizavati jednakost, a isto vrijedi i za dio riječi iza tog 1. Dakle polaznu riječ možemo razbiti na 0w1x, gdje su w i x također u jeziku. Na primjer, razbijanje 00101101 izgleda ovako:

TR-II Kontekstno-slobodni jezici 13

6.3 Konstrukcija KSG za zadani jezik (5)

Ovime smo pokazali potpunost jer zadana produkcija radi baš ovakvo razbijanje, pa našu riječ možemo generirati njenom rekurzivnom primjenom.

• Evo jednostavne gramatike koja generira engleske rečenice sastavljene od imenica i glagola.S NP VPNP the NVP V NPV sings | eatsN cat | song | canary

TR-II Kontekstno-slobodni jezici 14

6.3 Konstrukcija KSG za zadani jezik (6)

Ova gramatika degenerirati “the canarysings the song”, no također i “the song eats the cat”.

Page 8: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

8

• Zadana je KSG. Za dvije riječi x i y kažemo da x daje yako je mogude od x dodi do y korištenjem produkcija. Pišemo: x* y. Izvod od y je niz koraka primjene produkcija kojima od x dolazimo do y.

• Najljeviji izvod je takav izvod gdje se u svakom koraku zamjenjuje najljevija varijabla u tekudoj riječi. U Primjeru 6.6 izvod riječi 011100 bio je najljeviji. Slično se definira i najdesniji izvod.

• Izvod se može nacrtati kao stablo izvoda.– Korijen tog stabla je označen početnom varijablom.– Unutrašnji čvorovi su označeni varijablama.– Listovi su označeni terminalima.– Djeca čvora su redom s lijeva na desno označena onime što

se pojavljuje na desnoj strani korištene produkcije.TR-II Kontekstno-slobodni jezici 15

6.4 Stabla izvoda i višeznačnost (1)

• Postoji 1-1 korespondencija između stabla izvoda i najljevijeg izvoda, odnosno stabla izvoda i najdesnijeg izvoda.

TR-II Kontekstno-slobodni jezici 16

6.4 Stabla izvoda i višeznačnost (2)

• Primjer 6.8. Stablo izvoda za izvod riječi 011100 iz Primjera 6.6 izgleda ovako. Iz tog stabla možemo reproducirati izvod ako znamo da je on bio najljeviji.

Page 9: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

9

• Gramatika je jednoznačna ako za svaku riječ iz jezika postoji jedinstveni najljeviji izvod. Ekvivalentno, gramatika je jednoznačna ako za svaku riječ iz jezika postoji jedinstveno stablo izvoda.

• Na primjer, gramatika iz Primjera 6.6 je višeznačna. To se doduše ne vidi na riječi koju smo gledali. No riječ 0101 ima dva stabla izvoda – nađite ih za vježbu!

• Gramatike se primjenjuju kod prevođenja programa. Prevodilac (compiler) provjerava je li programski tekst ili aritmetički izraz ispravan tako da pronađe njegovo stablo izvoda. To stablo dalje omoguduje pisanje prijevoda u strojnom jeziku. Više o tome bit de u Poglavlju 10.

TR-II Kontekstno-slobodni jezici 17

6.4 Stabla izvoda i višeznačnost (3)

• Primjer 6.9. Slijedi gramatika za aritmetičke izraze sastavljene od operacija množenja i zbrajanja i Startna varijabla je E.E E + T | T … expression

T T F | F … term

F (E) | broj … factor

TR-II Kontekstno-slobodni jezici 18

6.4 Stabla izvoda i višeznačnost (4)

Ova gramatika generira izraze poput 1+(3+2)5 ili 1+23. Stablo izvoda za drugi od ovih izraza izgleda ovako. Stablo bilježi ispravan prioritet operacija: množenje prije zbrajanja.

Page 10: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

10

• Pitamo se koji je odnos između regularnih i kontek-stno-slobodnih jezika. Odgovor nije iznenađujudi.

• Teorem 6.1. Bilo koji regularni jezik može se generirati pomoću neke kontekstno-slobodne gramatike. Dakle, svaki regularni jezik ujedno je i kontekstno-slobodni jezik.

• Dokaz teorema. Zasniva se na pretvorbi pripadnog RI u KSG. Pretvorba se obavlja na rekurzivan način.– Ako je polazni jezik unija dvaju dijelova, pišemo produkciju S A | B .

– Ako je polazni jezik konkatenacija dvaju dijelova, pišemo produkciju S CD .

– Ako je polazni jezik dobiven zvjezdicom nad dijelom koji se zove E, pišemo produkciju S ES | ε .

TR-II Kontekstno-slobodni jezici 19

6.5 Ponovo o regularnim jezicima (1)

• Primjer 6.10. Promatramo RI:(11 00)*11 .Pretvaramo ga u KSG. Na najvišoj razini to je konkatenacija dvaju dijelova. Prvi od ta dva dijela je zvjezdica nad unijom dvaju manjih dijelova. Prema konstrukciji iz dokaza teorema, to daje ovakvu gramatiku:S TUU 11T TV | εV 00 | 11

TR-II Kontekstno-slobodni jezici 20

6.5 Ponovo o regularnim jezicima (2)

Page 11: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

11

6. Kontekstno-slobodne gramatike

7. Potisni automati

8. Gramatike i ekvivalencije

9. Svojstva kontekstno-slobodnih jezika

10. Primjene kontekstno-slobodnih gramatika

TR-II Kontekstno-slobodni jezici 21

Sadržaj dijela II

• U ovom poglavlju uvodimo potisni automat – PA. To je model računanja koji je snažniji od KA.

• Glavna razlika između PA i KA je u tome što PA ima na raspolaganju neku vrst memorije. No riječ je o stogu, dakle o dosta ograničenoj vrsti memorije.

• Druga važna značajka PA je da je on po definiciji nedeterministički. Za razliku od KA, nedeter-minizam kod PA bitno unapređuje snagu računanja.

TR-II Kontekstno-slobodni jezici 22

7.0 Uvod u potisne automate

Page 12: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

12

• Stog (stack) omoguduje pohranjivanje informacija po principu last-in-first-out. Sve što se dodaje na stog, dodaje se na vrh, a sve što se skida sa stoga skida se s vrha. Automat tijekom svog rada “vidi” samo podatak na vrhu toga.

• Operacija dodavanja podatka na vrh stoga zove se PUSH, a operacija skidanja podatka s vrha stoga zove se POP.

• Potisni automat (pushdown automaton) – PA liči na KA po tome što se u svakom trenutku nalazi u jednom od konačno mnogo stanja. No za razliku od KA, PA raspolaže sa stogom neograničene veličine.

TR-II Kontekstno-slobodni jezici 23

7.1 Način rada PA (1)

TR-II Kontekstno-slobodni jezici 24

7.1 Način rada PA (2)

• PA radi tako da čita ulaznu riječ znak po znak. Nakon čitanja jednog znaka, ovisno o– trenutnom stanju,– znaku na vrhu

stoga,– pročitanom znaku

automat– mijenja stanje i – izvodi operaciju

POP ili PUSH s jednim znakom.

Page 13: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

13

• Zbog nedeterminizma (kojeg demo uskoro objasniti) dozvoljava se da PA obavi PUSH ili POP uz eventualnu promjenu stanja, bez da je pročitao znak s ulaza (to su zapravo ε-prijelazi).

• Posljedica je da je također mogude čitanje znaka, uz eventualnu promjenu stanja, bez diranja stoga. (To ostvarujemo tako da najprije napravimo PUSH bez čitanja znaka, a zatim čitamo znak i napravimo POP).

• Dakle, operacije čitanja ulaznog znaka, promjene stanja, odnosno PUSH ili POP možemo promatrati kao zasebne operacije. To olakšava konstrukciju automata koji rješava određeni problem.

• Formalna definicija PA nalazi se u sljededem poglavlju.TR-II Kontekstno-slobodni jezici 25

7.1 Način rada PA (3)

• PA se može prikazati pomodu usmjerenog grafa sa čvorovima i lukovima, slično kao KA. Takav prikaz obradit demo u sljededem poglavlju.

• U ovom poglavlju crtat demo PA pomodu dijagrama toka kakve poznajemo iz programiranja. Takav prikaz je obično čitljiviji jer omoguduje razdvajanje operacija čitanja ulaznih znakova od operacija sa stogom.

• Na dijagramu toka pojavljuju se sljededi elementi.– Jedinstveno početno stanje.– Jedinstveno stanje zaustavljanja i prihvadanja.– Kudica za čitanje: ona učitava jedan znak s ulaza te ovisno o

pročitanom znaku inicira prijelaz u novo stanje.

TR-II Kontekstno-slobodni jezici 26

7.2 Crtanje PA pomodu dijagrama toka(1)

Page 14: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

14

– Kudica za POP: ona skida jedan znak sa stoga te ovisno o skinutom znaku inicira prijelaz u novo stanje.

– Kudica za PUSH: ona dodaje zadani znak na stog i inicira prijelaz u novo stanje.

– Strelice koje povezuju stanja i označavaju prijelaze. Ako se prijelaz događa pod uvjetom da je bio pročitan ili skinut određeni znak, tada na strelici piše taj znak. Za automatske prijelaze na strelici ništa ne piše.

• Dijagram toka ne sadrži odbacujuda stanja. Podrazumijeva se: ako automat uđe u stanje iz kojeg prema dijagramu nema legalnog nastavka, on se zaustavlja i odbacuje ulaznu riječ.

TR-II Kontekstno-slobodni jezici 27

7.2 Crtanje PA pomodu dijagrama toka(2)

• Često nam je na dijagramu potreban posebni znak Δ. Njime se služimo da označimo kraj ulazne riječi ili da označimo rezultat operacije POP onda kad je stog prazan.

• Možemo zamišljati da se Δ automatski dodaje na kraj svake ulazne riječi, te da se automatski stavlja na vrh stoga prije početka rada.

• U idudih nekoliko primjera ograničavamo se na neprazne ulaze. Prazna riječ na ulazu obično predstavlja komplikaciju i zahtijeva posebnu brigu.

TR-II Kontekstno-slobodni jezici 28

7.2 Crtanje PA pomodu dijagrama toka(3)

Page 15: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

15

• Primjer 7.1. Nacrtat demo PA koji prepoznaje jezik : { 0n1n | n>0 } . Taj PA koristi stog kao brojač i na taj način utvrđuje da li se u ulaznoj riječi pojavljuje isti broj nula i jedinica.Automat najprije čita nule iz ulaza i stavlja ih na stog. Čim se pojavi prva jedinica, automat ulazi u novo stanje. U tom stanju automat skida po jedan znak sa stoga za svaku učitanu jedinicu. Ako se tijekom te faze susretne nula na ulazu ili ako stog postane prazan, automat odmah odbacuje riječ, Automat na kraju prihvada riječ samo ako se stog isprazni u istom trenutku kad se dosegnuo kraj ulazne riječi.

TR-II Kontekstno-slobodni jezici 29

7.2 Crtanje PA pomodu dijagrama toka(4)

Prođite kroz ovaj dijagram za ulazne riječi 000111, 0010 i 011.

TR-II Kontekstno-slobodni jezici 30

7.2 Crtanje PA pomodu dijagrama toka(5)

Page 16: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

16

• Primjer 7.2. Promatramo riječ koja se sastoji isključivo od lijevih i desnih zagrada. Takva riječ zove se balansirana ako je:– tijekom čitanja s lijeva nadesno broj lijevih zagrada

stalno vedi ili jednak broju desnih zagrada,– ukupan broj lijevih zagrada jednak ukupnom broju

desnih zagrada.

Riječ (()())() je balansirana. Riječi (() i )))( nisu. U ispravnim aritmetičkim izrazima zagrade su uvijek balansirane. Balansirane riječi mogu se opisati gramatikom: S → (S) | SS | ε

TR-II Kontekstno-slobodni jezici 31

7.2 Crtanje PA pomodu dijagrama toka(6)

Nacrtat demo PA za prepoznavanje balansiranih riječi. Taj PA svaku učitanu ( stavlja na stog, a za svaku učitanu ) skida odgovarajudu ( sa stoga. Nakon što je cijeli ulaz pročitan, stog mora biti prazan.

TR-II Kontekstno-slobodni jezici 32

7.2 Crtanje PA pomodu dijagrama toka(7)

Page 17: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

17

• PA je zapravo po definiciji nedeterministički. Determinističke PA zapravo ne proučavamo. Prethodni primjeri bili su specijalni slučajevi gdje nam nedeterminizam nije trebao pa nije došao do izražaja.

• Kažemo da PA prihvada ulaznu riječ ako postoji niz akcija koje vode u prihvadajude stanje. Inače PA odbacuje riječ.

• Postoje dva načina prikaza nedeterminizma na dijagramu toka:– dva prijelaza iz istog stanja s istim oznakama,– prijelaz označen s ε, njime se ne troši znak s ulaza.

TR-II Kontekstno-slobodni jezici 33

7.3 Nedeterminizam i daljnji primjeri (1)

• Primjer 7.3. Konstruiramo PA koji prepoznaje palindrome parne duljine nad alfabetom {0,1}. Taj PA čita ulazne znakove i stavlja ih redom na stog. U jednom trenutku automat nedeterministički pogađa da je upravo pročitao polovicu riječi, pa prelazi u fazu skidanja sa stoga uz simultanu provjeru da je skinuti znak jednak novoučitanom znaku.Može se dokazati da je za prepoznavanje palindroma pomodu PA zaista nužan nedeterminizam.

TR-II Kontekstno-slobodni jezici 34

7.3 Nedeterminizam i daljnji primjeri (2)

Page 18: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

18

Vidimo da automat u drugoj fazi rada odbacuje riječ ako:– postoji nesklad

između učitanog i skinutog znaka,

– ulaz je potrošen prije nego što je stog ispražnjen,

– stog je ispražnjen prije nego što je ulaz potrošen.

TR-II Kontekstno-slobodni jezici 35

7.3 Nedeterminizam i daljnji primjeri (3)

• Primjer 7.4. Konstruiramo PA koji prepoznaje jezik{ 0m1n | n ≤ m ≤ 2n} .

U prvoj fazi rada automat učitava nule i stavlja ih na stog. Čim se na ulazu pojavi prva jedinica, automat prelazi u drugu fazu gdje svaku učitanu jedinicu uparuje s nulama na stogu. Pritom on nedeterministički odlučuje da li de za jednu jedinicu skinuti sa stoga samo jednu ili dvije nule.U slučaju bilo kakve nekompatibilnosti, automat odbacuje riječ.

TR-II Kontekstno-slobodni jezici 36

7.3 Nedeterminizam i daljnji primjeri (4)

Page 19: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

19

TR-II Kontekstno-slobodni jezici 37

7.3 Nedeterminizam i daljnji primjeri (5)

• Primjer 7.5. Evo PA koji prepoznaje binarne riječi s jednakim brojem nula i jedinica. Taj PA prati razliku između broja do sada učitanih nula i jedinica . Pritom stavlja nule na stog ako su nule trenutno u vedini, ili stavlja jedinice na stog ako su one u vedini.Automat se sastoji od tri dijela.– U lijevom dijelu se nalazimo ako su nule u vedini. Stog

sadrži jednu nulu manje od te razlike. Dakle, stog je prazan ako je broj nula za jedan vedi od broja jedinica.

– U srednjem dijelu se nalazimo ako trenutno ima isti broj učitanih nula i jedinica.

– U desnom dijelu se nalazimo ako su jedinice u vedini. Sve ostalo je simetrično kao u lijevom dijelu.

TR-II Kontekstno-slobodni jezici 38

7.3 Nedeterminizam i daljnji primjeri (6)

Page 20: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

20

TR-II Kontekstno-slobodni jezici 39

7.3 Nedeterminizam i daljnji primjeri (7)

• Kao što vjerojatno pogađate, PA su zapravo ekvivalentni KSG u smislu da prepoznaju točno one jezike koji se mogu konstruirati pomodu KSG.

• Teorem . Jezik se može generirati pomoću KSG ako i samo ako postoji PA koji ga prepoznaje.

• Dokaz teorema slijedi u idudem poglavlju.• Prije smo definirali kontekstno-slobodne jezike kao

one jezike koji se mogu konstruirati nekom KSG.

Sad vidimo da postoji i druga (ekvivalentna) definicija:

Jezik je kontekstno-slobodan ako ga prepoznaje neki PA.

TR-II Kontekstno-slobodni jezici 40

7.4 Veza između PA i KSG

Page 21: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

21

6. Kontekstno-slobodne gramatike

7. Potisni automati

8. Gramatike i ekvivalencije

9. Svojstva kontekstno-slobodnih jezika

10. Primjene kontekstno-slobodnih gramatika

TR-II Kontekstno-slobodni jezici 41

Sadržaj dijela II

• U ovom poglavlju najprije demo pokazati da se regularni jezici, osim pomodu RI ili KA, mogu opisati i regularnim gramatikama. Riječ je o specijalnom slučaju KSG.

• Zatim demo govoriti o Chomsky-jevoj hijerarhiji gramatika. U toj hijerarhiji pojavljuju se i gramatike koje su opdenitije od KSG.

• Na kraju demo skicirati dokaz da KSG i PA imaju istu računalnu snagu, to jest generiraju odnosno prepoznaju iste jezike.

• Usput demo dodi i do formalne definicije PA te prikaza PA pomodu usmjerenog grafa.

TR-II Kontekstno-slobodni jezici 42

8.0 Uvod u gramatike i ekvivalencije

Page 22: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

22

• U Poglavlju 6 vidjeli smo da se svaki regularni jezik može generirati nekom KSG. No zapravo se može generirati i jednom specijalnijom vrstom gramatike.

• Regularna gramatika (RG) je takva gramatika gdje je svaka produkcija oblika A → bC ili A → a. Ovdje su a i b terminali, a A i C varijable.

• Očito je svaka RG ujedno i KSG, no obrat ne vrijedi, jer KSG smije imati i opdenitije produkcije, na primjer A → BC ili A →aBbC, … i slično.

• Teorem 8.1. Jezik je regularan ako i samo ako se može generirati regularnom gramatikom.

TR-II Kontekstno-slobodni jezici 43

8.1 Regularne gramatike (1)

• Dokaz teorema. Za zadani DKA konstruiramo gramatiku takvu da njezin izvod riječi oponaša način kako DKA obrađuje to riječ. Slijede detalji.– Uvedemo po jednu varijablu za svako stanje iz DKA.

Početna varijabla je ona koja odgovara početnom stanju.– Ako u automatu postoji prijelaz iz stanja A u stanje B na

osnovu ulaznog znaka x, tada u gramatiku dodajemo produkciju oblika A → xB.

– Ako takav prijelaz završava u prihvadajudem stanju B, tada osim produkcije A → xB dodajemo i produkciju A → x.

Lako se uvjeriti da je tako dobivena gramatika regularna te da ona generira točno one riječi koje automat prihvada. Dokaz u obratnom smjeru dobiva se čitanjem gornjeg teksta natraške.

TR-II Kontekstno-slobodni jezici 44

8.1 Regularne gramatike (2)

Page 23: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

23

TR-II Kontekstno-slobodni jezici 45

8.1 Regularne gramatike (3)

Prema postupku iz dokaza teorema, dobivamo sljededu regularnu gramatiku:S 0C | 1AA 1B | 1B 0C | 1AC 0S

• Primjer 8.1. Konstruirat demo RG za jezik opisan RI-om

(11 00)*11 .

Evo najprije DKA za taj jezik:

• Poznati matematičar i logičar Noam Chomskydefinirao je četiri vrste gramatika. One se razlikuju po dozvoljenom obliku za produkcije, a čine hijerarhiju jer je svaka iduda specijalni slučaj prethodne.

1. Neograničene gramatike (unrestricted grammars). Produkcije imaju najopdenitiji oblik u v, gdje su u i v proizvoljni nizovi terminala i/ili varijabli.

2. Kontekstno-osjetljive gramatike (context-sensitivegrammars). Produkcije imaju nešto specijalniji oblik xAz xyz, gdje su x, y i z nizovi terminala i/ili varijabli, a A je varijabla.

TR-II Kontekstno-slobodni jezici 46

8.2 Chomsky-jeva hijerarhija (1)

Page 24: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

24

3. Kontekstno-slobodne gramatike – KSG (context-freegrammars). Produkcije imaju još specijalniji oblik A v, gdje je A varijabla, a v niz terminala i/ili varijabli.

4. Regularne gramatike – RG (regular grammars). Produkcije imaju najspecijalniji oblik A bC ili A a, gdje su a i b terminali, A i C varijable.

• Očito je da vrste gramatika u prethodnom nizu generiraju sve uže klase jezika.

• Produkcija u kontekstno-osjetljivoj gramatici kaže da se neka varijabla A, kad se nađe u određenom kontekstu, može zamijeniti s nizom y.

• Produkcija u kontekstno-slobodnoj gramatici kaže da varijabla A uvijek može zamijeniti s nizom v, bez obzira na kontekst.

TR-II Kontekstno-slobodni jezici 47

8.2 Chomsky-jeva hijerarhija (2)

• Kontekstno-osjetljive gramatike su prilično zakučaste tvorevine. Evo poznatog primjera.

• Primjer 8.2. Sljededa kontekstno-osjetljiva gramatika generira riječi oblika 0n1n2n, n 1.

S 0BS2 | 012

B0 0B

B1 11

Možete li napisati izvod za riječ 000111222 ?

S 0BS2 0B0BS22 00BBS22 00BB01222 000BB1222 000B11222 000111222

TR-II Kontekstno-slobodni jezici 48

8.2 Chomsky-jeva hijerarhija (3)

Page 25: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

25

• Kad imamo posla s gramatikama, tada nastojimo manipulirati s njima da bi ih pojednostavili. U takvim manipulacijama pokazuje se da je korisno uočiti takozvane upotrebljive i poništive varijable.

• Varijabla je upotrebljiva (usable) ako ona može proizvesti neki niz terminala. Varijabla je poništiva(nullable) ako ona može generirati praznu riječ.

• Primjer 8.3. U sljededoj gramatici A i B su upotrebljive, no samo B je poništiva.A 0A | 1B | 2CB 0B | εC 1C

TR-II Kontekstno-slobodni jezici 49

8.3 Upotrebljive i poništive varijable (1)

• Sljededi algoritam određuje koje varijable u zadanoj KSG su poništive.

1. Inicijalno postavi za sve varijable da su neponištive.

2. Ponavljaj:

prođi kroz sve produkcije, ako bilo koja od njihima na desnoj strani ε ili same poništive varijable,

tada postavi za varijablu s lijeve strane da je

poništiva;

dok god se skup poništivih varijabli povedava.

TR-II Kontekstno-slobodni jezici 50

8.3 Upotrebljive i poništive varijable (2)

• Postoji i sličan algoritam za određivanje upotrebljivih varijabli. Oblikujte takav algoritam za vježbu!

Page 26: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

26

• Ved smo spomenuli da su KSG i PA ekvivalentni u smislu da generiraju odnosno prepoznaju iste jezike.

• Teorem 8.2. Jezik se može generirati pomoću KSG ako i samo ako postoji PA koji ga prepoznaje.

• U ovom poglavlju izložit demo u grubim crtama dokaz tog teorema. Dokaz je konstruktivan i sastoji se od dvije konverzije:– Konverzija KSG u PA. Dakle konstruiramo PA koji prepoznaje

točno onaj jezik koji generira zadana KSG.– Konverzija PA u KSG. Dakle konstruiramo KSG koja generira

točno onaj jezik koji prepoznaje zadani PA.

• Opširni dokaz teorema može se nadi u Knjizi Sipser, Poglavlje 2.2. Obavezno proučiti za pristupni ispit!

TR-II Kontekstno-slobodni jezici 51

8.4 Ekvivalencija KSG i PA

• Za zadanu KSG konstruiramo PA koji nedeterministički pogađa najljeviji izvod zadane riječi pomodu te KSG.

• Za ilustraciju, sjetimo se Primjera 6.6. Tamo smo promatrali najljeviji izvod riječi 011100 pomodu KSG S 0S1S | 1S0S | ε Taj izvod je izgledao ovako:S 0S1S 01S 011S0S 0111S0S0S 01110S0S 011100S 011100Da bi simulirao ovakav izvod, PA mora u svom stogu pamtiti tekudu riječ. U svakom koraku, PA mora transformirati tu riječ tako da najljeviju varijablu u njoj zamijeni u skladu s nedeterministički odabranom produkcijom.

TR-II Kontekstno-slobodni jezici 52

8.5 Konverzija KSG u PA (1)

Page 27: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

27

• Dio tekude riječi lijevo od najljevije varijable zapravo ne mora biti pohranjen bududi da on ved može biti uparen s ulaznom riječi. Ostatak tekude riječi sprema se na stog tako da najljevija varijabla bude na vrhu stoga.

• PA radi ovako. On počinje rad sa startnom varijablom na stogu. U svakom koraku on gleda vrh stoga:– Ako je na vrhu varijabla, PA pogađa “pravu” produkciju te

zamijeni tu varijablu na stogu s desnom stranom te produkcije.

– Ako je na vrhu terminal, PA ga skida sa stoga, učitava jedan znak iz ulazne riječi te provjerava da li se ta dva znaka podudaraju (ako se ne podudaraju, ta grana umire).

TR-II Kontekstno-slobodni jezici 53

8.5 Konverzija KSG u PA (2)

TR-II Kontekstno-slobodni jezici 54

8.5 Konverzija KSG u PA (3)

Kad se stog isprazni, PA provjerava da li je ulazna riječ potrošena. Ako je, on je prihvada, inače ta grana umire.

• Očito je da PA prihvada riječ iz jezika jer za nju može pogoditi izvod. Također, ako PA prihvati neku riječ, tada je za nju pronašao izvod, pa riječ mora biti iz jezika.

• Za KSG-i iz Primjera 6.6, grana u radu pripadnog PA kojom se prihvada riječ 011100 proizvodi sljededa stanja na stogu:

Page 28: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

28

• U nastavku ovog poglavlja bit de nam spretnije da se vratimo na originalnu definiciju PA. Ona kaže da se čitanje, promjena stanja, te PUSH ili POP odvijaju simultano, a ne svaka za sebe.

• Dakle PA radi u nizu koraka. U svakom koraku on– učita jedan znak s ulaza

pa ovisno o– trenutnom stanju,– znaku na vrhu stoga,– upravo pročitanom znaku

on– prelazi u novo stanje i– izvodi jednu operaciju PUSH ili POP s jednim znakom.

TR-II Kontekstno-slobodni jezici 55

8.6 Formalna definicija PA (1)

• Tako zamišljeni PA može se opisati sljededom formalnom definicijom. PA je uređena sedmorka(Q, Σ, Γ, q0, ha, Δ, δ), gdje je:– Q konačan skup stanja,– Σ konačni ulazni alfabet,– Γ konačni alfabet znakova na stogu,– q0 je polazno stanje, q0 je element od Q,– ha je prihvadajude stanje, ha je element od Q,– Δ je posebni znak za prazan stog ili za kraj riječi,– δ je funkcija prijelaza.

• Funkcija prijelaza δ preslikava element iz Q × (Γ {Δ}) × (Σ {ε,Δ}) u konačni podskup od Q × (Γ {Δ})* .

TR-II Kontekstno-slobodni jezici 56

8.6 Formalna definicija PA (2)

Page 29: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

29

• Dakle, δ gleda trenutno stanje, tekudi znak na vrhu stoga, te možda i ulazni znak. Ovisno o tome što je vidjela, δ mijenja stanje automata, a znak na vrhu stoga mijenja s nizom znakova. Promjena se zbiva nedeterministički (više varijanti). Po ovoj formulaciji:– POP je ekvivalentan zamjeni znaka na vrhu stoga s ničim.– PUSH je ekvivalentan zamjeni znaka na vrhu stoga s tim

istim znakom i još jednim znakom.

• Na primjer: δ(q, A, a) = { (p, AB), (r, ε) } znači da u stanju q s A na vrhu stoga u slučaju učitavanja znaka a, automat nedeterministički bira jedno od sljededeg:– Stavlja B na stog i prelazi u stanje p,– Skida znak A s vrha stoga i prelazi u stanje r.

TR-II Kontekstno-slobodni jezici 57

8.6 Formalna definicija PA (3)

• Do sada smo PA crtali pomodu dijagrama toka. No u duhu formalne definicije, PA se može crtati i pomodu usmjerenog grafa, vrlo slično kao KA.

• Kod takvog načina crtanja čvorovi predstavljaju stanja, a lukovi prijelaze iz stanja u stanje. Na svakom luku zapisani su uvjeti kad se taj prijelaz može izvršiti (znak na vrhu stoga, ulazni znak), te također operacija PUSH ili POP koja se obavlja simultano s prijelazom.

• Prihvadajude stanje označava se dvostrukim rubom čvora, a polazno stanje strelicom koja stiže niotkuda.

TR-II Kontekstno-slobodni jezici 58

8.7 Alternativni način crtanja PA (1)

Page 30: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

30

• Primjer 8.4. Promatramo PA iz Primjera 7.1 koji prepoznaje jezik : { 0n1n | n>0 } . Njega smo u Primjeru 7.1 nacrtali u obliku dijagrama toka. No zapravo taj PA ima tri stanja. Neka je F stanje iz prvog READ-a s dijagrama toka, G stanje iz drugog READ-a, a H prihvadajude stanje ACCEPT. Tada se isti PA može nacrtati pomodu sljededeg usmjerenog grafa. Ovdje na stog stavljamo znak x iz stogovogalfabeta.

TR-II Kontekstno-slobodni jezici 59

8.7 Alternativni način crtanja PA (2)

• Za zadani PA konstruiramo KSG takvu da jedan korak izvoda pomodu KSG odgovara jednom koraku PA.

• Koristimo formalnu definiciju PA i prikaz pomodu usmjerenog grafa. Štoviše, pretpostavljamo da vrijedi:– nakon čitanja ulaza, PA je u prihvadajudem stanju ako i samo

ako je stog od PA prazan,– svaki korak uključuje PUSH ili POP jednog znaka (promjene

stanja bez promjene stoga nisu dozvoljene).

Može se pokazati da ove dodatne pretpostavke ne smanjuju opdenitost, to jest svaki PA može se prevesti u takav oblik.

• Varijable od KSG bit de sve uređene trojke oblika qAp, gdje su q i p stanja PA, a A je znak iz stogovog alfabeta.

TR-II Kontekstno-slobodni jezici 60

8.8 Konverzija PA u KSG (1)

Page 31: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

31

• Cilj je konstruirati KSG takvu da za sve riječi w vrijedi:

TR-II Kontekstno-slobodni jezici 61

8.8 Konverzija PA u KSG (2)

• Ako je q0 početno stanje a ha prihvadajude stanje od PA, tada je varijabla q0 Δ ha početna varijabla za KSG. Ona de generirati riječ w ako i samo ako PA čitanjem riječi w može prijedi iz q0 u ha tako da na kraju stog bude prazan (to baš znači da PA prihvada w).

• Svaki prijelaz od PA dalje se pretvara u produkcije. Pretvorba ovisi o tome da li prijelaz sadrži PUSH iliPOP.

q A p* w Čitanjem ulazne riječi w PA može prijedi iz stanja q u stanje p, tako da neto učinak operacija nad stogom bude skidanje znaka A s vrha.

– Gledamo najprije prijelaz s POP. Na primjer (p, ε) δ(q, A, a). Dakle u stanju q mogude je napraviti POP A dok čitamo a s ulaza i prelazimo u stanje p. Ovdje a može biti znak iz ulaznog alfabeta ili ε. Tada dodajemo ovakvu produkciju:q A p a

– Dalje gledamo prijelaz s PUSH. Na primjer (p, AB) δ(q, A, a). Dakle u stanju q s A na vrhu stoga mogude je napraviti PUSH B dok čitamo a s ulaza i mijenjamo stanje u p. Tada dodajemo skup produkcija oblikaq A r a p B s s A r , i to za sva moguda stanja r i s.

– Smisao ovih dviju vrsta produkcija je sljededi. Naš cilj je da stog bude prazan. Da bismo se riješili znaka A na vrhu stoga, jedan način je da napravimo POP A, a drugi način je da napravimo PUSH B, no onda kasnije moramo postidi skidanje najprije B a zatim A sa stoga.

TR-II Kontekstno-slobodni jezici 62

8.8 Konverzija PA u KSG (3)

Page 32: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

32

• U nastavku dokaza pokazuje se da svaki izvod u ovakvoj KSG zaista odgovara ispravnom računanju u PA. Tu postoji mnogo tehničkih detalja pa demo to preskočiti.

• Primjer 8.5. Napravit demo konverziju PA za jezik: { 0n1n | n>0 } iz Primjera 8.4. Taj PA ima tri stanja F, G, H – vidi dijagram. Slijedi postupak konverzije.– F je početno a H prihvadajude stanje. Početna varijabla za KSG

je zato F Δ H .– Na dijagramu vidimo tri POP-a. Zato dodajemo u KSG sljedede

tri produkcije:F x G 1G x G 1G Δ H ε

TR-II Kontekstno-slobodni jezici 63

8.8 Konverzija PA u KSG (4)

– Dalje vidimo na dijagramu jednu operaciju PUSH. Ona bi se trebala pretvoriti u 18 produkcija oblika:F A r 0 F x s s A rza sve A {x, Δ} i r,s { F, G, H } .

– No primijetimo da se na lijevoj strani svih produkcija pojavljuje samo osam trojki. To su šest trojki dobivenih zbog PUSH-a oblika F ? ? i još dvije od POP-a oblika G ? ?. Dakle neke od 18 produkcija za PUSH su beskorisne jer imaju na desnoj strani varijablu s kojom se ne može dalje ništa raditi.

– Ako izbacimo takve beskorisne produkcije, dobivamo sljededu listu:

TR-II Kontekstno-slobodni jezici 64

8.8 Konverzija PA u KSG (5)

Page 33: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

33

1. F x F 0 F x F F x F 2. F x G 0 F x F F x G 3. F x H 0 F x F F x H 4. F Δ F 0 F x F F Δ F 5. F Δ G 0 F x F F Δ G 6. F Δ H 0 F x F F Δ H 7. F x G 0 F x G G x G 8. F Δ H 0 F x G G Δ H

– No sad primijetimo da bilo koja produkcija s F x F na lijevoj strani ima također F x F na desnoj strani. To znači da je F x F varijabla koje se ne možemo riješiti. Dakle produkcije 1 – 6 su beskorisne.

TR-II Kontekstno-slobodni jezici 65

8.8 Konverzija PA u KSG (6)

– Nakon što izbacimo i takve beskorisne produkcije, ostaje nam sljededa KSG sa startnom varijablom F Δ H :F x G 1G x G 1G Δ H εF x G 0 F x G G x G F Δ H 0 F x G G Δ H

– Preimenovanjem varijabli i daljnjim pojednostavljenjem dobivamo da je zapravo riječ o ovakvoj KSG:S 0AA 0A1 | 1 .

Za zadnju verziju KSG lako se vidi da ona zaista generira jezik { 0n1n | n>0 } .

TR-II Kontekstno-slobodni jezici 66

8.8 Konverzija PA u KSG (6)

Page 34: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

34

6. Kontekstno-slobodne gramatike

7. Potisni automati

8. Gramatike i ekvivalencije

9. Svojstva kontekstno-slobodnih jezika

10. Primjene kontekstno-slobodnih gramatika

TR-II Kontekstno-slobodni jezici 67

Sadržaj dijela II

• Makar su kontekstno-slobodni jezici opdenitiji od regularnih, oni još uvijek imaju ograničenja. Postoje brojni jezici koji nisu kontekstno-slobodni.

• U ovom poglavlju proučit demo neka svojstva kontekstno-slobodnih jezika. Ta svojstva su nam zanimljiva zato jer ona omoguduju da prepoznamo jezike koji nisu kontekstno-slobodni.

• Slično kao regularni jezici, i kontekstno-slobodni jezici imaju svoju “lemu o pumpanju”. Ona je glavni alat za pokazivanje da neki jezik nije kontekstno-slobodan.

TR-II Kontekstno-slobodni jezici 68

9.0 Zašto proučavamo svojstva KS jezika

Page 35: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

35

• Ako kontekstno-slobodni jezik ne sadrži praznu riječ ε, tada se njegova gramatika može dovesti u Chomsky-jevu normalnu formu.

• Gramatika je u Chomsky-jevoj normalnoj formi ako je svaka njena produkcija oblika A → BC ili A → c, gdje su A, B, C varijable a c znak.

• Primjer 9.1. Sljededa gramatika je u Chomsky-jevojnormalnoj formi.S → AS | aA → SA | b

• Ako jezik sadrži ε, tada je uobičajeno da se dozvoli S → ε, gdje je S početni simbol. A zatim se zabrani S na desnoj strani bilo koje produkcije.

TR-II Kontekstno-slobodni jezici 69

9.1 Chomsky-jeva normalna forma (1)

• Prednost Chomsky-jeve normalne forme je da bilo koji izvod riječi od k znakova ima točno 2k-1 koraka. Dakle možemo utvrditi da li riječ pripada jeziku tako da sistematski pretražimo sve izvode.

• Bilo koja KSG može se prebaciti u Chomsky-jevunormalnu formu primjenom sljededeg algoritma.1. Riješi se svih ε – produkcija

Pronađi sve poništive varijable (algoritam iz prethodnog poglavlja). Zatim prođi kroz sve produkcije, za svaku produkciju ispusti svaki mogudi podskup poništivih varijabli. Na primjer, ako imamo produkciju P → AxB i A i B su poništive varijable, tada dodajemo produkcije P → xB | Ax | x

TR-II Kontekstno-slobodni jezici 70

9.1 Chomsky-jeva normalna forma (2)

Page 36: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

36

(Ako produkcija ima p poništivih varijabli na desnoj strani, dodaje se najviše 2p-1 novih produkcija). Nakon toga briši sve produkcije s praznim desnim stranama.

2. Riješi se svih jednostrukih produkcija s varijablama.Jednostruka produkcija je ona gdje je na desnoj strani samo jedan simbol. Ako imamo produkciju A → B, tada za svaku produkciju oblika B → α dodajemo produkciju A→ α . Ponavljamo dok je potrebno. (Treba paziti da ne uvedemo ponovo jednostruku produkciju koju smo ved brisali).

3. Zamijeni svaku produkciju koja je predugačka s kradom.Na primjer, ako imamo produkciju A → BCD, zamijenimo je s A → BE i E → CD . Postupak se iterira za još dulje produkcije.

TR-II Kontekstno-slobodni jezici 71

9.1 Chomsky-jeva normalna forma (3)

4. Pretvori sve terminale u jednostruke produkcije.Za svaki terminal koji se nalazi na desnoj strani ne-jednostruke produkcije uvedi zamjensku varijablu. Na primjer, produkciju A → bC zamijeni s A → BC i B → b .

• Primjer 9.2. Promatramo KSG S → aXbXX → aY | bY | εY → X | cSvodimo je u Chomsky-jevu normalnu formu.Varijabla X je poništiva, pa je također i Y poništiva. Nakon eliminacije ε dobivamo:

TR-II Kontekstno-slobodni jezici 72

9.1 Chomsky-jeva normalna forma (4)

Page 37: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

37

S → aXbX | abX | aXb | abX → aY | bY | a | bY → X | c

• Nakon eliminacije jednostruke produkcije Y → X dobivamo:S → aXbX | abX | aXb | abX → aY | bY | a | bY → aY | bY | a | b | cDalje razbijamo predugačke desne strane produkcija. Također zamijenimo a s A, b s B i c sa C svugdje gdje ti terminali nisu jednostruki (to jest svugdje gdje se oni pojavljuju zajedno s još nekim simbolom). Dobivamo:

TR-II Kontekstno-slobodni jezici 73

9.1 Chomsky-jeva normalna forma (5)

S → EF | AF | EB | ABX → AY | BY | a | bY → AY | BY | a | b | cE → AXF → BXA → aB → bC → cEvo, naša KSG je svedena u Chomsky-jevu normalnu formu.

TR-II Kontekstno-slobodni jezici 74

9.1 Chomsky-jeva normalna forma (6)

Page 38: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

38

• Postoje jezici koji se ne mogu prepoznati niti pomodu KA niti pomodu PA. Jedan takav primjer je jezik sastavljen od riječi oblika 0n1n2n. Da bi to dokazali, potrebna nam je lema o pumpanju za kontekstno-slobodne jezike, koja kaže da i takvi jezici imaju u sebi neku vrstu ponovljivost.

• Teorem 9.1 (lema o pumpanju). Neka je A kontekstno-slobodan jezik. Tada postoji konstanta k takva da se svaka riječ z iz A duljine barem k može razbiti kao z = uvwxy, gdje:– vx je neprazna,– Duljina riječi vwx je k ,– uviwxiy je u A za sve i 0 .

TR-II Kontekstno-slobodni jezici 75

9.2 Lema o pumpanju za k-s jezike (1)

• Dokaz teorema. Pretpostavimo da je KSG za naš jezik A ved svedena u Chomsky-jevu normalnu formu. Neka je n broj varijabli u toj KSG. Zadajemo k = 2n+1. Neka je z A riječ duljine k. Promatramo stablo izvoda za z. Zbog posebnog oblika produkcija u Chomsky-jevoj normalnoj formi, to stablo izgleda kao binarno. Zbog duljine riječi z, to stablo ima 2n+1 listova. Slijedi da visina (dubina) stabla mora biti barem n, a to znači da u stablu postoji put od korijena do nekog lista na kojem ima više čvorova nego varijabli. Dakle na tom putu postoji bar jedna varijabla T koja se ponavlja (vidi sliku).

TR-II Kontekstno-slobodni jezici 76

9.2 Lema o pumpanju za k-s jezike (2)

Page 39: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

39

Listovi cijelog stabla čine cijelu riječ z koja sadrži vwx – neka je u podriječispred a y podriječ iza vxy.

TR-II Kontekstno-slobodni jezici 77

9.2 Lema o pumpanju za k-s jezike (3)

Listovi pod-stabla ispod druge pojave T čine riječ koju generira T – nazovimo tu riječ w. Listovi pod-stabla ispod prve pojave Tčine riječ koja sadrži w –neka je v podriječ ispred a x podriječ iza w.

Iz navedenog slijedi T* viwxi za sve i 0, pa također S* uviwxiy za sve i 0. Zaista:S* uTy* uvTxy* uvvTxxy* ….Znači uviwxiy A što je glavni rezultat leme.

Da bi dokazali ogradu da je duljina od vwx k moramo u stablu za T uzeti “najnižu” varijablu koja se još ponavlja. Naime, kad bi za takvu T vrijedilo |vwx |> k = 2n+1 tada bi u podstablu od T postojalo pravo pod-podstablo s visinom barem n za kojeg bi opet vrijedila prethodna priča o ponavljanju. Znači postojalo bi još “niže” ponavljanje varijable što bi bila kontradikcija s načinom kako smo odabrali T.

TR-II Kontekstno-slobodni jezici 78

9.2 Lema o pumpanju za k-s jezike (4)

Page 40: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

40

Riječ vx ne može biti prazna zato što “viša” pojava varijable T na slici ima barem dvoje djece (jedno koje ide u smjeru “nižeg” T i još jedno). Dvoje djece mora postojati zbog posebnog oblika produkcija u Chomsky-jevoj normalnoj formi, gdje su na desnoj strani produkcije uvijek po dvije varijable.

• Malo drukčiji dokaz leme o pumpanju (koji se ne poziva na Chomsky-jevu normalnu formu) nalazi se u knjizi Sipser, Poglavlje 2.3. Obavezno proučiti!

• U nastavku pokazujemo nekoliko primjera korištenja leme o pumpanju. Za riječ uviwxiy koristimo kradu oznaku z(i) .

TR-II.Kontekstno-slobodni jezici 79

9.2 Lema o pumpanju za k-s jezike (5)

• Primjer 9.3. Pokazujemo da jezik { 0n1n2n | n 0 } zaista nije kontekstno- slobodan. Pretpostavimo suprotno. Neka je tada k konstanta iz leme o pumpanju. Odaberimo riječ z = 0k1k2k . Promatramo rastav za z iz leme oblika z = uvwxy. Bududi da vwx ima duljinu najviše k. riječ vx ne može sadržavati i nule i dvojke. To znači da z(0) = uwy ne može imati jednak broj nula, jedinica i dvojki, pa z(0)

nije u jeziku. To je kontradikcija.

• Primjer 9.4. Promatramo jezik { x#x | x {0,1}* }. Ovdje je # posebni znak koji se pojavljuje na sredini riječi. Pokazujemo da taj jezik nije kontekstno-slobodan.TR-II.

Kontekstno-slobodni jezici 80

9.2 Lema o pumpanju za k-s jezike (6)

Page 41: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

41

Pretpostavimo suprotno. Neka je tada k konstanta iz leme o pumpanju. Odaberimo riječ z = 0k1k#0k1k. Promatramo rastav za z iz leme oblika z = uvwxy. Bududi da je z(0) = uwy u jeziku, z(0) mora imati # u sredini, dakle v u rastavu za z se pojavljuje prije sredine od z, a x se pojavljuje iza sredine. No bududi da vwx ima duljinu najviše k, v je nužno niz samih jedinica a x niz samih nula. Izlazi da z(0) = uwy ne može biti u jeziku jer je izbacivanjem v i x iz znastala neravnoteža u broju nula i jedinica prije i poslije sredine. Opet smo dobili kontradikciju.

TR-II.Kontekstno-slobodni jezici 81

9.2 Lema o pumpanju za k-s jezike (7)

• Primjer 9.5. Primijetimo da nedemo dodi u kontradikciju s lemom o pumpanju ako promatramo jezik { 0n1n | n0 } za kojeg znamo da je kontekstno-slobodan. Zaista, ako uzmemo k 2 i riječ z = 0k1k , tada možemo napraviti rastav z = uvwxy , gdje je v zadnja nula u z, x je prva jedinica, a w je prazan. Takav izbor zadovoljava sve uvjete iz leme jer je vx neprazan, duljina od vwx je k, a očito je z(i) = uviwxiy opet u jeziku.

TR-II.Kontekstno-slobodni jezici 82

9.2 Lema o pumpanju za k-s jezike (8)

Page 42: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

42

6. Kontekstno-slobodne gramatike

7. Potisni automati

8. Gramatike i ekvivalencije

9. Svojstva kontekstno-slobodnih jezika

10. Primjene kontekstno-slobodnih gramatika

TR-II Kontekstno-slobodni jezici 83

Sadržaj dijela II

• KSG i PA koriste se za prevođenje ili interpretiranje računalnih programa odnosno njihovih dijelova.

• Na primjer, sam programski jezik opisan je nekom gramatikom – uzmimo da je to KSG. Provjera sintaktičke ispravnosti programa svodi se na traženje izvoda teksta programa iz početne varijable te gramatike primjenom njezinih produkcija.

• Kao drugi primjer, spomenimo aritmetičke izraze koji se mogu opisati pomodu KSG te izvrednjavatipomodu PA odnosno stoga.

• U ovom poglavlju ilustrirat demo primjene KSG i PA služedi se spomenutim primjerima. Nedemo ulaziti u detalje jer bi nas to predaleko odvelo.

TR-II Kontekstno-slobodni jezici 84

10.0 Uvod u primjene KSG

Page 43: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

43

• Prevodilac programskog jezika počinje prevođenje tako da za zadanu riječ (izvorni tekst programa) sagradi stablo izvoda. Dakle prevodilac određuje kojim redom treba primijeniti produkcije iz gramatike da bi se početna varijabla S iz gramatike pretvorila u zadanu riječ. Ta faza prevođenja naziva se parsiranje (parsing).

• Postoje dva pristupa parsiranju.– Top-down: od S do zadane riječi.

Zahtijeva nedeterminizam ili mukotrpni backtracking.– Bottom-up: od zadane riječi natraške do S.

To je praktičniji pristup.

TR-II Kontekstno-slobodni jezici 85

10.1 Prevodioci i parsiranje

• Kod bottom-up parsiranja čitamo ulazne znakove sve dok ne skupimo grupu znakova koji odgovaraju desnoj strani neke produkcije. Nakon toga zamijenimo pročitane znakove s lijevom stranom produkcije. Dobiva se najdesniji izvod.

• Postupak parsiranja sastoji se od uzastopnih koraka. Postoje dvije vrste koraka.– Shift. Stavi idudi učitani znak na stog.– Reduce. Pretvori niz znakova pri vrhu stoga u jednu

varijablu služedi se pogodnom redukcijom. Ta varijabla ostaje na vrhu stoga.

• Postupak završava onda kad je ulazna riječ potrošena a na stogu je samo početna varijabla.

TR-II Kontekstno-slobodni jezici 86

10.2 Bottom-up parsiranje (1)

Page 44: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

44

• Primjer 10.1. Sjetimo se KSG za aritmetičke izraze iz Primjera 6.9. Uz blagu modifikaciju, ona izgleda ovako:E E + T | TT T F | FF (E) | nPromatramo parsiranje izraza (n + n) n . Pretpostavljamo da parser na neki način “zna” što treba raditi u svakom koraku. Dobivamo sljededi niz koraka.

TR-II Kontekstno-slobodni jezici 87

10.2 Bottom-up parsiranje (2)

• Osnovni problem s kojim se susredemo kod bottom-up parsiranja je: odrediti koju vrstu koraka (shift ili reduce) treba odabrati u kojem trenutku te, u slučaju reduce, koju produkciju treba odabrati. Ovaj problem nije lako riješiti (osim ako ne uvedemo nedeterminizam).

TR-II Kontekstno-slobodni jezici 88

10.2 Bottom-up parsiranje (3)Vrsta

operacije

Stog Nepročitani

ulaz

Komentar

(n+n)n

Shift ( n+n)n

Shift (n +n)n

Reduce (F +n) n

Reduce (T +n)n

Reduce (E +n)n

Shift (E+ n) n

Shift (E+n )n

Reduce (E+F )n

Reduce (E+T )n

Reduce (E )n Ne reduciramo T u E

Shift (E) n

Reduce F n

Reduce T n

Shift T n Ne reduciramo T u E

Shift Tn

Reduce T F

Reduce T Ne reduciramo F u T

Reduce E

Page 45: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

45

• Donald Knuth je odredio koji se jezici mogu prepoznati pomodu determinističkih PA. Ti jezici opisani su takozvanim LR gramatikama.

• LR(1) gramatika može se opisati kao KSG gdje je gledanje samo jednog znaka ulazne riječi unaprijed dovoljno da se odredi što kada treba raditi.

• LR(1) parser implementira se kao deterministički PA koji se osim svojim vlastitim stanjima i stogom služi i takozvanom LR(1) tablicom.

• Za svaku kombinaciju ulaznog znaka,trenutnog stanja i stanja na stogu LR(1) tablica određuje koju operaciju LR(1) parser treba poduzeti i u koje novo stanje treba prijedi.TR-II Kontekstno-slobodni jezici 89

10.4 LR gramatike, parsiranje s tablicom

• Sad demo izložiti algoritam parsiranja koji radi za bilo koju KSG. Rezultat je samo od teorijskog značaja, naime dobiveni parser je prespor za stvarnu upotrebu.

• Algoritam se po autorima Cocke, Younger i Kasaminaziva algoritam CYK. Zapravo je riječ o primjeni metode dinamičkog programiranja.

• Algoritam pretpostavlja da je naša KSG zadana u Chomsky-jevoj normalnoj formi.

• Neka je w ulazna riječ duljine n za koju želimo ustanoviti da li je KSG generira. U skladu s principom dinamičkog programiranja, rješavamo opdenitiji problem. Gledamo sve pod-riječi od w i pitamo se za svaku od njih koje varijable iz KSG nju generiraju.

TR-II Kontekstno-slobodni jezici 90

10.3 Garantirano parsiranje (1)

Page 46: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

46

• Neka je w = w1w2…wn, gdje su wi znakovi. Za 1ij noznačimo s wij podriječ wiwi+1…wj. Algoritam de generirati tablicu gdje u (i,j)-tom polju piše koje sve varijable iz KSG mogu generirati wij .

• Potrebno je pronadi relacije koje povezuju polja u tablici i omoguduju da iz ved izračunatih polja dobijemo nova polja. Te relacije oslanjaju se na svojstva Chomsky-jeve normalne forme.

• Pretpostavimo da je n2 i da početna varijabla Sizvodi w. Tada prvi korak izvoda mora biti produkcija oblika S AB koja S zamijeni s točno dvije varijable A i B. Znači da se w može podijeliti u dva dijela od kojih je prvi generiran s A a drugi s B.

TR-II Kontekstno-slobodni jezici 91

10.3 Garantirano parsiranje (2)

• Dakle određivanje da li S* w svodi se na ispitivanje da li postoji broj k i produkcija S AB takva da A* w1k i B* wk+1,n . Ako smo ved riješili primjerke problema za sve w1k i wk+1,n , modi demo riješiti i primjerak za w. Isto razmišljanje omoguduje nam da riješimo i primjerke problema za w1k i wk+1,n .

• Opdenito, određujemo da li za neku varijablu A i brojeve i, j vrijedi A * wij. Promatramo sve produkcije iz A. Za svaku od tih produkcija, na primjer A EF, isprobamo sve k, 1 k i-1. Za svaki kpitamo se da li E* wik i F* wk+1,j - odgovori ved pišu u tablici. Nakon što sve ovo isprobamo, odgovor za A* wij također upišemo u tablicu.

TR-II Kontekstno-slobodni jezici 92

10.3 Garantirano parsiranje (3)

Page 47: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

47

• Algoritam CYK može se ovako rezimirati.1. Počinjemo tako da za svaki i i za svaku varijablu A

ustanovimo da li A* wii. U ovom slučaju podriječ wii je jedan znak tako da treba gledati samo jednostruke produkcije prema terminalima.

2. Dalje za svaki i i za svaku varijablu A gledamo da li A* wi,i+1. Služimo se prethodnim rekurzivnim receptom.

3. Ponavljamo sličan postupak za sve wi,i+2 , zatim za sve wi,i+3 , i tako dalje. U svakoj fazi u potpunosti odredimo skupove varijabli koje izvode podriječi određene duljine, a zatim povedamo duljinu.

4. U zadnjem koraku određujemo varijable za podriječiduljine n. Zapravo postoji samo jedna takva podriječ, to je sama riječ w. To nam omoguduje da odgovorimo na polazno pitanje da li S* w .

TR-II Kontekstno-slobodni jezici 93

10.3 Garantirano parsiranje (4)

• U svakoj fazi algoritma CYK, dobivena rješenja za podriječi određene duljine upisuju se u tablicu. Ta upisana rješenja koristit de se u idudim fazama.

• Vidimo da svaka faza popunjava jednu dijagonalu tablice. Popunjava se samo gornji trokut, od glavne dijagonale redom sve do gornjeg desnog ugla.

• Primjer 10.2. Promatramo sljededu KSG u Chomsky-jevoj normalnoj formi s početnom varijablom S.S ST | TU | bT SU | aU SS | bZanima nas da li ta KSG generira riječ w = aababb . Algoritam CYK daje sljededu tablicu.

TR-II Kontekstno-slobodni jezici 94

10.3 Garantirano parsiranje (5)

Page 48: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

48

Bududi da element u gornjem desnom uglu sadrži S, slijedi da je početna riječ w u jeziku. S malo truda, iz tablice je mogude reproducirati izvod za w. Zapravo bi za svaki element u tablici trebalo pamtiti na koji način je on bio izračunat.

TR-II Kontekstno-slobodni jezici 95

10.3 Garantirano parsiranje (6)

j

1 2 3 4 5 6

1 T . . . S S, T, U

i2 T S S S, T, U S, T, U

3 S, U S T, U S, T, U

4 T S S, T, U

5 S, U T, U

6 S, U

Što znači ova tablica? Na primjer, polje na poziciji (3,5) kaže da bilo koja od varijabli Ti U generira w35 = bab. Zaista, T je tu zato jer T SU, a S* w34 i U* w55 .

• Promatramo opet aritmetički izraz opisan KSG-om iz Primjera 10.1. Pitamo se kako izvredniti taj izraz ako su zadane vrijednosti svih podataka u njemu.

• Jedan efikasan način izvrednjavanja izgleda ovako.– Parsiranjem izraza dobivamo njegovo stablo izvoda.– Postorder obilaskom stabla izvoda dobivamo takozvani

obratni poljski oblik izraza.– Taj oblik može se izravno upotrijebiti za izvrednjavanje izraza

pomodu stoga.

• U nastavku uzimamo da je MUL funkcija koja dvije vrijednosti na vrhu stoga zamijeni s njihovim umnoškom. Također uzimamo da je ADD funkcija koja dvije vrijednosti na vrhu stoga zamijeni s njihovim zbrojem.TR-II Kontekstno-slobodni jezici 96

10.5 Izvrednjavanje aritmetičkog izr (1)

Page 49: Dio II: Kontekstno-slobodni jezici - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/tr/TR-II.pdfkontekstno-slobodna gramatika (KSG). Jezik je kontekstno-slobodan ako su njegove riječi

14.4.2011.

49

• Primjer 10.3. Promatramo aritmetički izraz:1 + 5 (3 +2) + 4Njegovim parsiranjem dobiva se ovakvo stablo izvoda:Postorder obilaskom stabla izvoda dobivamo obratni poljski oblik izraza:1 5 3 2 + + 4 +Izvrednjavanje izraza pomodu stoga svodi se na sljededi kod koji je dobiven izravnom konverzijom obratnog poljskog oblika u računske operacije:PUSH(1) PUSH(5) PUSH(3) PUSH(2) ADD MUL ADD PUSH(4) ADD

TR-II Kontekstno-slobodni jezici 97

10.5 Izvrednjavanje aritmetičkog izr (2)