Так, граматики, що залежать від контексту (CSG), є досить потужними для перевірки невизначених / недекларованих / незв'язаних змінних, але, на жаль, ми не знаємо жодного ефективного алгоритму для розбору рядків CSG.
Реальним прикладом контекстно-чутливої мови є мова програмування С. Така функція, як спочатку оголосити змінні, а потім використовувати їх, перетворить мову C на контекстно-залежну мову (CSL). ( Я не знаю про нетипізоване обчислення лямбда ).
А тому, що ми не знаємо жодного алгоритму лінійного розбору для CSL (або CSG). Саме тому в дизайні компілятора ми використовуємо CFG (і лише його алгоритм розбору) для перевірки синтаксису, оскільки ми знаємо ефективні алгоритми для розбору CFG (якщо він обмежений). Компілятори спочатку аналізують функцію, що не містить контексту, а пізніше проблематично обробляють функції, що залежать від контексту (наприклад, перевіряє будь-яку використану змінну в таблиці символів, якщо вона визначена. В іншому випадку вона генерує помилку).
Також контекстно-залежна граматика використовується в обробці природним мовою (NLP). І більшість природних мов є прикладами контекстно-чутливих мов. (Я не впевнений у санскритській мові).
Я спробую пояснити це нерозумним, але простим прикладом (це просто ідея, ви можете її вдосконалити):
NOUN --> { BlueBomber, Grijesh, I, We}
TENSE --> { am, was, is, were}
VERB --> { going, eating, working}
SENTENCE --> <NOUN> <TENSE> <VERB>
Тепер, використовуючи цю граматику, ми можемо генерувати кілька правильних тверджень, але деякі теж неправильно. Наприклад,
SENTENCE --> <NOUN> <TENSE> <VERB>
Grijesh is working [Correct statement]
Але
Grijesh am working [wrong statement]
Причина: значення <TENSE> залежить від значення <NOUN> (наприклад, I <TENNSE> --> I am
), а значить, граматика не створює правильних висловлювань в англійській мові.
Насправді ми не можемо написати безтекстову граматику для повної англійської мови!
Можливо, ви помітили, що будь-який перекладач природних мов або перевірка граматики не працює належним чином (спробуйте з довгими твердженнями). Тому що ця проблема входить в контекстно-залежний алгоритм розбору.
ДОВІДКА : Ви можете подивитися лекції доктора Аруна Кумара .
У якійсь лекції він пояснює саме те, що вас цікавить.