Да, контекстно-зависимые грамматики (CSG) достаточно мощны для проверки неопределенных / необъявленных / несвязанных переменных, но, к сожалению, мы не знаем эффективного алгоритма для анализа строк CSG.
Настоящим примером контекстно-зависимого языка является язык программирования C. Такая функция, как объявление переменных сначала, а затем их использование, делает язык 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
) и, следовательно, грамматика не генерирует правильные выражения на английском языке.
На самом деле мы не можем написать контекстную грамматику для полного английского!
Вы могли заметить, что любой переводчик естественного языка или средство проверки грамматики работает неправильно (попробуйте использовать длинные операторы). Потому что эта проблема подпадает под алгоритм контекстного анализа.
СПРАВКА : Вы можете посмотреть лекции доктора Аруна Кумара .
В какой-то лекции он объясняет, что именно вас интересует.