Sì, le grammatiche sensibili al contesto (CSG) sono abbastanza potenti da controllare le variabili indefinite / non dichiarate / non legate, ma sfortunatamente non conosciamo alcun algoritmo efficiente per analizzare le stringhe di CSG.
Un vero esempio di un linguaggio sensibile al contesto è il linguaggio di programmazione C. Una caratteristica come dichiarare prima le variabili e poi usarle in seguito rende il linguaggio C un linguaggio sensibile al contesto (CSL). ( Non conosco il calcolo lambda non tipizzato ).
E poiché non conosciamo alcun algoritmo di analisi lineare per CSL (o CSG). Questo è il motivo nella progettazione del compilatore, utilizziamo CFG (e solo il suo algoritmo di analisi) per il controllo della sintassi poiché conosciamo algoritmi efficienti per analizzare CFG (se è in forma limitata). I compilatori prima analizzano una funzione libera dal contesto e successivamente gestiscono in modo problematico le funzioni sensibili al contesto (ad esempio, controlla qualsiasi variabile usata nella tabella dei simboli se è definita. Altrimenti, genera un errore).
Anche la grammatica sensibile al contesto viene utilizzata nell'elaborazione del linguaggio naturale (PNL). E la maggior parte dei linguaggi naturali sono esempi di linguaggi sensibili al contesto. (Non sono sicuro per la lingua sanscrita ).
Proverò a spiegarlo con un esempio sciocco ma semplice (è solo un'idea, puoi perfezionarlo):
NOUN --> { BlueBomber, Grijesh, I, We}
TENSE --> { am, was, is, were}
VERB --> { going, eating, working}
SENTENCE --> <NOUN> <TENSE> <VERB>
Ora, usando questa grammatica, possiamo generare alcune affermazioni corrette, ma anche alcune sono sbagliate. Per esempio,
SENTENCE --> <NOUN> <TENSE> <VERB>
Grijesh is working [Correct statement]
Ma
Grijesh am working [wrong statement]
Motivo: il valore di <TENSE> dipende dal valore <NOUN> (ad esempio, I <TENNSE> --> I am
) e quindi la grammatica non genera istruzioni corrette in lingua inglese.
In realtà non possiamo scrivere una grammatica senza contesto per un inglese completo!
Potresti aver notato che qualsiasi traduttore di lingua naturale o correttore grammaticale non funziona correttamente (prova con dichiarazioni lunghe). Perché questo problema rientra nell'algoritmo di analisi sensibile al contesto.
RIFERIMENTO : Puoi guardare le lezioni del Dr. Arun Kumar .
In alcune lezioni spiega esattamente ciò che ti interessa.