Ngôn ngữ C++, C# hoặc Java không có ngữ cảnh hay nhạy cảm với ngữ cảnh?Ngữ pháp của các ngôn ngữ lập trình hiện đại không có ngữ cảnh hay nhạy cảm với ngữ cảnh?
Trả lời
C++ không có ngữ cảnh hay bối cảnh nhạy cảm, kể từ khi template system is Turing-complete và xác định xem một đoạn mã C++ là hợp pháp C++ có khó xác định không. Ví dụ, tôi có thể định nghĩa một lớp mẫu mô phỏng một TM trên một chuỗi và sau đó tạo một hằng số với giá trị 1 nếu máy chấp nhận và 0 nếu nó không. Nếu tôi đã làm điều đó, sau đó đoạn mã sau sẽ là hợp pháp iff TM dừng lại trên đầu vào cho trước:
int myArray[TMTemplate</* ... args ... */>::value];
Từ nếu TM từ chối, điều này tạo ra một loạt các kích thước 0, mà không được phép.
Cả C# lẫn Java đều không có ngữ cảnh, vì kiểm tra xem biến có được sử dụng chính xác và nhất quán trong phạm vi cụ thể không được ngữ cảnh không (bằng chứng phức tạp và dựa trên Ogden's lemma). Tuy nhiên, tôi không chắc chắn liệu chúng có nhạy cảm với ngữ cảnh hay không.
Hy vọng điều này sẽ trả lời một phần cho câu hỏi của bạn!
Tôi không chắc liệu tính toàn vẹn của các mẫu có ảnh hưởng đến ngữ pháp * của C++ hay không. Chắc chắn, kết quả của lập trình meta mẫu có thể quyết định một chương trình vượt qua một số kiểm tra ngữ nghĩa nhất định, nhưng nó vượt xa phạm vi ngữ pháp. Và các mẫu không thay đổi gì về cú pháp: Nếu chương trình có lỗi cú pháp, các mẫu không được instanciated và nếu chúng được instanciated, chúng sẽ không bao giờ dẫn đến lỗi cú pháp. Bạn cũng xem xét tất cả các ngôn ngữ được đánh máy theo ngữ cảnh theo ngữ cảnh nhạy cảm vì bạn cần phải biết tất cả các loại có liên quan để quyết định thời tiết, ví dụ: câu lệnh gán là hợp lệ? – delnan
@ delnan- Tôi đã giải thích các câu hỏi như vậy mà bất kỳ ngôn ngữ gõ tĩnh nào không phải là ngữ cảnh, vì tính chính xác của chương trình phụ thuộc vào cách các kiểu liên quan. Tôi đang tiếp cận điều này từ quan điểm của "nếu bạn tập hợp tất cả các chuỗi đại diện cho các chương trình X hợp pháp, bạn sẽ lấy lại loại ngôn ngữ nào?" Bộ đó không phải là bối cảnh miễn phí, ngay cả khi điều kiện tiên quyết để hợp lệ chuỗi phải nằm trong ngữ pháp. Điều đó có ý nghĩa? Và đây có phải là cách giải thích không hợp lý của câu hỏi không? – templatetypedef
Theo diễn giải đó, câu trả lời của bạn có ý nghĩa. Nó không phải là cách tôi có thể giải thích câu hỏi, nhưng đó là bởi vì tôi cho rằng "ngôn ngữ không có ngữ cảnh" (được sử dụng bởi OP) chỉ là một cách viết tắt của "ngôn ngữ với ngữ pháp ngữ cảnh". Nhưng tôi nghĩ rằng nó có ý nghĩa (và nếu đó thực sự là câu hỏi, câu trả lời của bạn là chính xác). Bạn nên thêm giải thích đó vào câu trả lời, để ngăn chặn sự hiểu lầm thêm. – delnan
- 1. Là "regex" trong các ngôn ngữ lập trình hiện đại thực sự "ngữ pháp ngữ cảnh nhạy cảm"?
- 2. Tính tương quan văn bản nhạy cảm với ngữ cảnh
- 3. Ngôn ngữ lập trình PHP hoặc ngôn ngữ lập trình?
- 4. Thuật ngữ "mệnh đề" trong ngữ cảnh lập trình
- 5. Ngữ cảnh miễn phí ngữ cảnh cho không phải palindrome
- 6. Tiện ích biên tập ngữ pháp cho ngữ pháp không có ngữ cảnh trong Java
- 7. Sử dụng ngôn ngữ lập trình D trong ngữ cảnh .NET
- 8. Ngữ pháp ngữ cảnh miễn phí cho C
- 9. Ngữ pháp không có ngữ cảnh mô tả các biểu thức chính quy?
- 10. Ngôn ngữ lập trình Siri
- 11. Phương pháp học ngôn ngữ lập trình của Schliemann
- 12. Dịch mã byte Java sang các ngôn ngữ lập trình và ngôn ngữ lập trình khác
- 13. Có thể thực hiện một ngôn ngữ lập trình thứ hai bằng ngôn ngữ đó không?
- 14. Tạo ngôn ngữ lập trình với C#
- 15. Gọi Trình đơn ngữ cảnh của NotifyIcon
- 16. PyQt và menu ngữ cảnh
- 17. C# Ngôn ngữ lập trình
- 18. Tôi có thể tìm thấy ngữ pháp chính thức cho ngôn ngữ lập trình Perl ở đâu?
- 19. ngữ cảnh ở đâu.Entry()?
- 20. Trình đơn ngữ cảnh của iPhone/iPad
- 21. Phân tích cú pháp ngữ pháp không có ngữ cảnh bằng Python
- 22. Đa ngôn ngữ Ngôn ngữ
- 23. ngôn ngữ lập trình không xác định
- 24. Xóa ngữ cảnh WebGL
- 25. Xử lý thích hợp GetLastError (và các ngôn ngữ khác) trong ngữ cảnh đa luồng
- 26. TabControl Menu ngữ cảnh
- 27. Các phương pháp hay nhất để viết trình phân tích cú pháp ngôn ngữ lập trình
- 28. Có cách nào để truy xuất mục Sitecore bằng ngôn ngữ khác với ngữ cảnh hiện tại không?
- 29. Chuyển ngữ cảnh canvas
- 30. Triển khai ngữ cảnh
http://stackoverflow.com/questions/2929507/chomsky-hierarchy-and-programming-languages –