我在學習「編譯器理論」,它說大多數語言都使用「確定性上下文無關文法」。我想知道有沒有語言使用「語境敏感語法」?哪些語言對上下文敏感?
更新:
我問一個人,他說,C++和Ruby有一些上下文敏感的語法。
例如,在C++中,這代碼:
abc();
如果有一個叫做abc
方法,然後abc()
的含義是 「方法的調用」。如果有類class abc{ }
,則表示「創建類abc的實例」。
在ruby中,由於它有元編程,所以它有更多的上下文敏感語法。
他對嗎?
我在學習「編譯器理論」,它說大多數語言都使用「確定性上下文無關文法」。我想知道有沒有語言使用「語境敏感語法」?哪些語言對上下文敏感?
更新:
我問一個人,他說,C++和Ruby有一些上下文敏感的語法。
例如,在C++中,這代碼:
abc();
如果有一個叫做abc
方法,然後abc()
的含義是 「方法的調用」。如果有類class abc{ }
,則表示「創建類abc的實例」。
在ruby中,由於它有元編程,所以它有更多的上下文敏感語法。
他對嗎?
上下文敏感語法的符號與它們在上下文中使用的各種非終止符相關地改變它們的含義。在計算機世界中,它們非常罕見,因爲它使解析器的編寫變得複雜 - 決定一個字符串是否屬於特定的上下文敏感語法是PSPACE完成的。
感謝您的回答,並請參閱我更新的問題 – Freewind
這不是一個特別強的例子,因爲'abc'是一個標識符,實際上並不是語言的一部分。一個更好的例子是C#的'使用'關鍵字,這意味着在不同的上下文中有不同的事情。 – Rik
COBOL READ語句具有取決於正在讀取的文件的訪問模式的上下文相關語法:如果是SEQUENTIAL,則AT END子句是有效的繼續,否則不是;如果RANDOM,ON INVALID KEY是有效的延續,否則不是。 – EJP
問題確實屬於計算機科學,應該已經遷移到那裏,而不是僅僅關閉。 – EJP