Kontekstno neovisni jezik

Izvor: testwiki
Prijeđi na navigaciju Prijeđi na pretraživanje

Kontekstno neovisni jezik (rjeđe još i kontekstno slobodni jezik ili jezik neovisan o sadržaju, te još i bezokolinski jezik[1]) je formalni jezik koji je element skupa jezika kojeg definiraju kontekstno neovisne gramatike. Skup kontekstno neovisnih jezika je identičan skupu jezika koje prihvaćaju potisni automati.

Primjeri

Kanonski primjer kontekstno neovisnog jezika jest L={anbn:n1}, jezik svih nepraznih nizova znakova (simbola) parne duljine, čiju prvu polovicu čine znakovi a, dok drugu polovicu čine znakovi b. L generira gramatika SaSb|ab te prihvaća potisni automat M=({q0,q1,qf},{a},{a,b,z},δ,q0,{qf}) gdje je funkcija prijelaza δ definirana na sljedeći način:

δ(q0,a,z)=(q0,a)
δ(q0,b,ax)=(q1,x)
δ(q1,b,ax)=(q1,x)
δ(q1,b,bz)=(qf,z)

Kontekstno neovisni jezici imaju mnoge primjene u programskim jezicima; na primjer - jezik svih pravilno uparenih zagrada generira gramatika SSS|(S)|λ. Također, većinu aritmetičkih izraza mogu generirati kontekstno neovisne gramatike.

Svojstva zatvorenosti

Kontekstno neovisni jezici su zatvoreni nad sljedećim operacijama. To jest, ako su L i P kontekstno neovisni jezici i D je regularni jezik, sljedeći jezici su također kontekstno neovisni:

  • Kleeneov operator L* nad jezikom L
  • homeomorfizam φ(L) jezika L
  • nadovezivanje (konkatenacija) LP jezika L i jezika P
  • unija LP jezika L i jezika P
  • presjek (s regularnim jezikom) LD jezika L i jezika D

Kontekstno neovisni jezici nisu zatvoreni nad operacijama komplementa, presjeka i razlike.

Izvori

Predložak:Izvori

Predložak:Formalni jezici i gramatike

  1. Kiš Miroslav, Englesko-hrvatski i hrvatsko-engleski informatički rječnik, Zagreb, Naklada Ljevak, 2000., str. 234