Konteksno slobodne gramatike i jezici

  • View
    109

  • Download
    2

Embed Size (px)

DESCRIPTION

Teoretske osnove KSG i KSJ

Text of Konteksno slobodne gramatike i jezici

  • 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 drug