Compiler construction 哪些语言是上下文敏感的?

Compiler construction 哪些语言是上下文敏感的?,compiler-construction,context-free-grammar,context-sensitive-grammar,Compiler Construction,Context Free Grammar,Context Sensitive Grammar,我正在学习“编译器理论”,它说大多数语言使用“确定性上下文无关语法”。我想知道“上下文敏感语法”是否有任何语言用法 更新: 我问过某人,他说C++和Ruby有一些上下文相关语法。 例如,在C++中,这个代码: abc(); 如果有一个名为abc的方法,则abc()表示“调用此方法”。如果有一个类类abc{},那么它意味着“创建一个类abc的实例” 在ruby中,因为它有元编程,所以它有更多上下文敏感的语法 他说得对吗?上下文敏感语法中的符号会改变其含义,与上下文中使用的各种非终结符相关。在计

我正在学习“编译器理论”,它说大多数语言使用“确定性上下文无关语法”。我想知道“上下文敏感语法”是否有任何语言用法


更新

我问过某人,他说C++和Ruby有一些上下文相关语法。 例如,在C++中,这个代码:

abc();
如果有一个名为
abc
的方法,则
abc()
表示“调用此方法”。如果有一个类
类abc{}
,那么它意味着“创建一个类abc的实例”

在ruby中,因为它有元编程,所以它有更多上下文敏感的语法


他说得对吗?

上下文敏感语法中的符号会改变其含义,与上下文中使用的各种非终结符相关。在计算机世界中,它们是非常罕见的,因为它使解析器的编写变得非常复杂——如果字符串属于某个上下文敏感语法,那么它就是PSPACE complete。

谢谢您的回答,请看我的最新问题,这不是一个特别有力的例子,因为
abc
是一个标识符,实际上不是语言的一部分。更好的例子是C#‘using’关键字,它在不同的上下文中表示不同的内容。COBOL READ语句具有上下文敏感语法,这取决于正在读取的文件的访问模式:如果是顺序的,则AT END子句是有效的延续,否则不是;若“随机”,则“无效密钥上的”是一个有效的延续,否则不是。这个问题实际上属于计算机科学,应该迁移到那个里,而不是仅仅关闭。@EJP:那个么你们应该用这样一条消息来标记它。在这里重新打开它将一事无成。@C.A.McCann我已经做到了。