Кіріспе
Формалды тіл теориясында, контекстсіз тіл (CFL), сондай-ақ Чомскидің 2-типіндегі тіл деп аталады, — бұл контекстсіз грамматика (CFG) арқылы туындайтын тіл. Контекстсіз тілдер бағдарламалау тілдерінде кеңінен қолданылады, әсіресе, көптеген арифметикалық өрнектер контекстсіз грамматикалармен жасалады.
In formal language theory, a context free language (CFL), also called a Chomsky type 2 language, is a language generated by a context free grammar (CFG). Context free languages have many applications in programming languages, in particular, most arithmetic expressions are generated by context free grammars.
Контекстсіз грамматика
Әр түрлі контекстсіз грамматикалар бірдей контекстсіз тілді тудыра алады. Тілдің ішкі қасиеттерін, сол тілді сипаттайтын бірнеше грамматиканы салыстыру арқылы, нақты грамматиканың сыртқы қасиеттерінен ажыратуға болады.
Автоматтар
Контекстсіз тілдердің барлық жиынтығы, pushdown автоматтары қабылдайтын тілдер жиынтығымен толық сәйкес келеді, бұл осы тілдерді синтаксистік талдауға мүмкіндік береді. Сонымен қатар, берілген CFG үшін, грамматикаға (және осыған байланысты тілге) pushdown автоматын тікелей құруға болады, бірақ керісінше (автоматтан грамматиканы құру) оңай емес.
Дик тілі
Барлық дұрыс жұптасқан жақшалардың тілі грамматикамен құрастырылады.
Контекстсіз талдау
Тілдің контекстсіз табиғаты оны автоматты түрде талдауды жеңілдетеді. Мүшелік мәселесінің бір мысалын анықтау, яғни берілген тізбек үшін, берілген грамматикамен туындайтын тілге кіретінін анықтау – тану деп те аталады. Лесли Г. Валиант Чомскидің қалыпты формадағы грамматикасын контекстсіз тануды Буль матрицасын көбейтуге келтіріле алатынын көрсетті, осылайша оның күрделілігінің O(n<sup>2.3728596</sup>) жоғарғы шегін мұралады. Керісінше, Лилиан Ли O(n<sup>3-ε</sup>) Буль матрицасын көбейтуді O(n<sup>3-3ε</sup>) CFG талдауға келтіріле алатынын көрсетті, осылайша соңғысы үшін белгілі бір төменгі шек белгіледі. Контекстсіз тілдерді практикалық қолдану үшін грамматиканың берілген тізбекпен байланыстыратын құрылымын көрсететін туынды ағашын жасау қажет. Осы ағашты жасау процесі талдау деп аталады. Белгілі талдағыштардың уақыт күрделілігі талданатын тізбектің өлшеміне қатысты кубикалық болады. Формальды түрде, барлық контекстсіз тілдер жиынтығы pushdown автоматтар (PDA) қабылдайтын тілдер жиынтығымен сәйкес келеді. Контекстсіз тілдер үшін талдау алгоритмдеріне CYK алгоритмі және Эрли алгоритмі жатады. Контекстсіз тілдердің ерекше кіші класы – детерминистік контекстсіз тілдер, олар детерминистік pushdown автоматтар қабылдайтын тілдер жиынтығы ретінде анықталады және LR(k) талдағышымен талдауға болады. Грамматика мен талдағышқа баламалы тәсіл ретінде талдаушы грамматикасын қарастырыңыз.
Қиылысу, толықтыру және айырмашылық бойынша жабылмаған
Контекстен бос тілдер қиылысу операциясы бойынша жабық емес. Бұл екі контекстен бос тілді қарастыру арқылы көрініп тұр: және . Олардың қиылысы – , және контекстен бос тілдер үшін қолданылатын сорғы леммасы арқылы оның контекстен бос еместігін көрсетуге болады. Осыдан келіп, контекстен бос тілдер толықтыру операциясы бойынша да жабық емес, себебі кез келген A және B тілдері үшін олардың қиылысын одақ пен толықтыру арқылы өрнектеуге болады: . Атап айтқанда, контекстен бос тілдер айырмашылық операциясы бойынша да жабық емес, өйткені толықтыруды айырмашылық арқылы да өрнектеуге болады: . Дегенмен, егер L контекстен бос тіл болса және D – реттелген тіл болса, онда олардың қиылысы және айырмашылығы контекстен бос тілдер болады.
However, if L is a context free language and D is a regular language then both their intersection and their difference are context free languages.
Контекстен бос емес тілдер
Жинақ контекстке сезімтал тіл, бірақ осы тілді жасауға болатын контекстсіз грамматика жоқ. Демек, контекстке сезімтал, бірақ контекстсіз емес тілдер бар. Белгілі бір тілдің контекстсіз еместігін дәлелдеу үшін, контекстсіз тілдер үшін қолданылатын қақпақтау леммасын пайдалануға болады.