Bezkontextový jazyk
Bezkontextový jazyk je formální jazyk, který je akceptovaný nějakým zásobníkovým automatem. Bezkontextové jazyky mohou být vygenerovány bezkontextovými gramatikami (viz Chomského hierarchie).
Příklady[editovat | editovat zdroj]
Typickým příkladem bezkontextového jazyka je , jazyk všech slov sudé délky ve kterých první polovinu tvoří znaky a druhou polovinu znaky . je generovaný gramatikou a je akceptovaný zásobníkovým automatem kde je definována následovně:
Bezkontextové jazyky jsou využívány především v programovacích jazycích. Například dobře uzávorkovaný výraz (tj. výraz, kde počet '(' je stejný jako počet ')') je generován gramatikou nebo také
Uzávěrové vlastnosti[editovat | editovat zdroj]
Bezkontextové jazyky jsou uzavřeny vzhledem ke zřetězení, sjednocení, iteraci, substituci, morfismu a rozdíl s regulárním jazykem, ale ne na průnik a rozdíl.
Související články[editovat | editovat zdroj]
Pro bezkontextové jazyky existuje lemma o vkládání (pumping lemma) které udává nezbytnou podmínku, kterou musí jazyk splňovat, aby byl bezkontextový.
Normální formy[editovat | editovat zdroj]
Každý bezkontextový jazyk lze převést do obou z následujících normálních forem (někdy také normálního tvaru):
Chomského normální forma[editovat | editovat zdroj]
Gramatika je v chomského normální formě, pokud obsahuje pouze pravidla tvaru , kde jsou neterminály a je terminální symbol.
Greibachové normální forma[editovat | editovat zdroj]
Gramatika je v greibachové normální formě, pokud obsahuje pouze pravidla tvaru , kde obsahuje libovolný (i nulový) počet neterminálů.