Tak, gramatyki kontekstowe (CSG) mają wystarczającą moc, aby sprawdzać zmienne niezdefiniowane / niezadeklarowane / niezwiązane, ale niestety nie znamy żadnego skutecznego algorytmu do analizowania ciągów CSG.
Prawdziwym przykładem języka kontekstowego jest język programowania C. Funkcja taka jak najpierw zadeklaruj zmienne, a następnie użyj ich później, aby język C był językiem kontekstowym (CSL). ( Nie wiem o nietypowym rachunku lambda ).
A ponieważ nie znamy żadnego liniowego algorytmu analizy dla CSL (lub CSG). Dlatego w projektowaniu kompilatora używamy CFG (i tylko jego algorytmu analizującego) do sprawdzania składni, ponieważ znamy wydajne algorytmy do analizowania CFG (jeśli jest w ograniczonej formie). Kompilatory najpierw analizują funkcję bezkontekstową, a następnie problematycznie obsługują funkcje kontekstowe (na przykład sprawdzają każdą używaną zmienną w tabeli symboli, jeśli jest zdefiniowana. W przeciwnym razie generuje błąd).
Również gramatyka kontekstowa jest używana w przetwarzaniu języka naturalnego (NLP). A większość języków naturalnych to przykłady języków kontekstowych. (Nie jestem pewien języka sanskrytu ).
Spróbuję to wytłumaczyć głupim, ale prostym przykładem (to tylko pomysł, możesz to ulepszyć):
NOUN --> { BlueBomber, Grijesh, I, We}
TENSE --> { am, was, is, were}
VERB --> { going, eating, working}
SENTENCE --> <NOUN> <TENSE> <VERB>
Teraz, korzystając z tej gramatyki, możemy wygenerować kilka poprawnych instrukcji, ale niektóre też są błędne. Na przykład,
SENTENCE --> <NOUN> <TENSE> <VERB>
Grijesh is working [Correct statement]
Ale
Grijesh am working [wrong statement]
Powód: wartość <TENSE> zależy od wartości <NOUN> (na przykład I <TENNSE> --> I am
), a zatem gramatyka nie generuje poprawnych instrukcji w języku angielskim.
W rzeczywistości nie możemy napisać gramatyki bezkontekstowej dla pełnego języka angielskiego!
Być może zauważyłeś, że żaden tłumacz języka naturalnego lub moduł sprawdzania gramatyki nie działa poprawnie (spróbuj użyć długich instrukcji). Ponieważ ten problem jest objęty kontekstowym algorytmem analizy.
ODNIESIENIE : Możesz obejrzeć wykłady dr. Aruna Kumara .
W pewnym wykładzie wyjaśnia dokładnie, czym jesteś zainteresowany.