Đúng, ngữ pháp nhạy cảm ngữ cảnh (CSG) đủ mạnh để kiểm tra các biến không xác định / không khai báo / không ràng buộc, nhưng thật không may, chúng tôi không biết bất kỳ thuật toán hiệu quả nào để phân tích chuỗi CSG.
Một ví dụ thực tế về ngôn ngữ nhạy cảm ngữ cảnh là ngôn ngữ lập trình C. Một tính năng như khai báo các biến trước rồi sau đó sử dụng chúng làm cho ngôn ngữ C trở thành ngôn ngữ nhạy cảm theo ngữ cảnh (CSL). ( Tôi không biết về phép tính lambda chưa được kiểm tra ).
Và bởi vì chúng tôi không biết bất kỳ thuật toán phân tích tuyến tính nào cho CSL (hoặc CSG). Đó là lý do trong thiết kế trình biên dịch, chúng tôi sử dụng CFG (và chỉ phân tích cú pháp algoritm) để kiểm tra cú pháp vì chúng tôi biết các thuật toán hiệu quả để phân tích CFG (nếu nó ở dạng hạn chế). Trình biên dịch trước tiên phân tích một tính năng không có ngữ cảnh và sau đó xử lý các tính năng nhạy với ngữ cảnh theo cách có vấn đề (ví dụ: kiểm tra bất kỳ biến nào được sử dụng trong bảng ký hiệu nếu được xác định. Nếu không, nó sẽ tạo ra lỗi).
Ngoài ra ngữ pháp nhạy cảm ngữ cảnh được sử dụng trong xử lý ngôn ngữ tự nhiên (NLP). Và hầu hết các ngôn ngữ tự nhiên là ví dụ về các ngôn ngữ nhạy cảm theo ngữ cảnh. (Tôi không chắc chắn về ngôn ngữ tiếng Phạn ).
Tôi sẽ cố gắng giải thích nó bằng một ví dụ ngớ ngẩn nhưng đơn giản (đó chỉ là một ý tưởng, bạn có thể tinh chỉnh nó):
NOUN --> { BlueBomber, Grijesh, I, We}
TENSE --> { am, was, is, were}
VERB --> { going, eating, working}
SENTENCE --> <NOUN> <TENSE> <VERB>
Bây giờ, sử dụng ngữ pháp này, chúng ta có thể tạo ra một số phát biểu đúng, nhưng một số cũng sai. Ví dụ,
SENTENCE --> <NOUN> <TENSE> <VERB>
Grijesh is working [Correct statement]
Nhưng
Grijesh am working [wrong statement]
Lý do: giá trị của <TENSE> phụ thuộc vào giá trị <NOUN> (ví dụ I <TENNSE> --> I am
:) và do đó ngữ pháp không tạo ra các câu đúng trong ngôn ngữ tiếng Anh.
Thật ra chúng ta không thể viết một ngữ pháp không ngữ cảnh cho tiếng Anh hoàn chỉnh!
Bạn có thể nhận thấy, bất kỳ trình dịch ngôn ngữ tự nhiên hoặc trình kiểm tra ngữ pháp nào đều không hoạt động chính xác (thử với các câu lệnh dài). Bởi vì vấn đề này xuất hiện dưới thuật toán phân tích cú pháp nhạy cảm ngữ cảnh.
THAM KHẢO : Bạn có thể xem các bài giảng của Tiến sĩ Arun Kumar .
Trong một số bài giảng, ông giải thích chính xác những gì bạn quan tâm.