2

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


更新

我问了一个人,他说c++和ruby有一些上下文相关的语法。

例如,在 c++ 中,此代码:

abc();

如果有一个名为 的方法abc,则abc()表示“调用此方法”。如果有 class class abc{ },则表示“创建 abc 类的实例”。

而在 ruby​​ 中,由于它具有元编程,因此它具有更多上下文敏感的语法。

他是对的吗?

4

1 回答 1

2

上下文相关文法的符号会根据它们在上下文中使用的各种非终结符改变其含义。在计算机世界中,它们非常少见,因为它使解析器的编写变得相当复杂——判断一个字符串是否属于某个上下文相关的语法是 PSPACE 完全的。

于 2012-11-26T14:50:25.697 回答