Razlika između inačica stranice »Kontekstno neovisni jezik«
(Bot: Automatski unos stranica) |
m (Bot: Automatska zamjena teksta (-{{cite book +{{Citiranje knjige)) |
||
Redak 29: | Redak 29: | ||
{{izvori}} | {{izvori}} | ||
* {{ | * {{Citiranje knjige | ||
|author = [[Michael Sipser]] | |author = [[Michael Sipser]] | ||
| year = 1997 | | year = 1997 | ||
Redak 36: | Redak 36: | ||
| id = {{ISBN|0-534-94728-X}}}} | | id = {{ISBN|0-534-94728-X}}}} | ||
*{{ | *{{Citiranje knjige | ||
| author = Siniša Srbljić | | author = Siniša Srbljić | ||
| title = Jezični procesori 1 | | title = Jezični procesori 1 |
Inačica od 05:22, 17. studenoga 2021.
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 [math]\displaystyle{ L = \{a^nb^n:n\geq1\} }[/math], jezik svih nepraznih nizova znakova (simbola) parne duljine, čiju prvu polovicu čine znakovi [math]\displaystyle{ a }[/math], dok drugu polovicu čine znakovi [math]\displaystyle{ b }[/math]. [math]\displaystyle{ L }[/math] generira gramatika [math]\displaystyle{ S\to aSb ~|~ ab }[/math] te prihvaća potisni automat [math]\displaystyle{ M=(\{q_0,q_1,q_f\}, \{a\}, \{a,b,z\}, \delta, q_0, \{q_f\}) }[/math] gdje je funkcija prijelaza [math]\displaystyle{ \delta }[/math] definirana na sljedeći način:
[math]\displaystyle{ \delta(q_0, a, z) = (q_0, a) }[/math]
[math]\displaystyle{ \delta(q_0, b, ax) = (q_1, x) }[/math]
[math]\displaystyle{ \delta(q_1, b, ax) = (q_1, x) }[/math]
[math]\displaystyle{ \delta(q_1, b, bz) = (q_f, z) }[/math]
Kontekstno neovisni jezici imaju mnoge primjene u programskim jezicima; na primjer - jezik svih pravilno uparenih zagrada generira gramatika [math]\displaystyle{ S\to SS ~|~ (S) ~|~ \lambda }[/math]. 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 [math]\displaystyle{ L^* }[/math] nad jezikom L
- homeomorfizam φ(L) jezika L
- nadovezivanje (konkatenacija) [math]\displaystyle{ L \circ P }[/math] jezika L i jezika P
- unija [math]\displaystyle{ L \cup P }[/math] jezika L i jezika P
- presjek (sa regularnim jezikom) [math]\displaystyle{ L \cap D }[/math] jezika L i jezika D
Kontekstno neovisni jezici nisu zatvoreni nad operacijama komplementa, presjeka i razlike.
Izvori
- ↑ Kiš Miroslav, Englesko-hrvatski i hrvatsko-engleski informatički rječnik, Zagreb, Naklada Ljevak, 2000., str. 234
- Michael Sipser (1997). Introduction to the Theory of Computation. PWS Publishing. ISBN 0-534-94728-X
- Siniša Srbljić (2003). Jezični procesori 1. Element. ISBN 953-197-129-3
Teorija automata: formalni jezici i formalne gramatike | |||
---|---|---|---|
Chomskyjeva hijerarhija |
Gramatike | Jezici | Minimalni automat |
Tip 0 | Neograničenih produkcija | Rekurzivno prebrojiv | Turingov stroj |
n/a | (nema uobičajenog imena) | Rekurzivni | Odlučitelj |
Tip 1 | Kontekstno ovisna | Kontekstno ovisni | Linearno ograničen |
n/a | Indeksirana | Indeksirani | Ugniježđenog stoga |
Tip 2 | Kontekstno neovisna | Kontekstno neovisni | Nedeterministički potisni |
n/a | Deterministička kontekstno neovisna | Deterministički kontekstno neovisni | Deterministički potisni |
Tip 3 | Regularna | Regularni | Konačni |
Svaka kategorija jezika ili gramatika je pravi podskup nadređene kategorije. |