我不是很清楚上下文无关语法中歧义的概念。如果有人可以帮助我解释这个概念或提供好的资源,我将不胜感激。
最佳答案
T * U;
那是指针声明还是乘法?除非您知道 T
和 U
实际上 是什么,否则您无法分辨。
因此表达式的语法 取决于表达式的语义(含义)。这不是上下文无关的——在上下文无关的语言中,这只能是一件事,而不是两件事。 (这就是为什么他们不让这样的表达式成为 D 中的有效语句的原因。)
另一个例子:
T<U> V;
这是模板用法还是大于和小于操作? (这就是他们在 D 中将语法更改为 T!(U) V
的原因——括号只有一种用途,而插入符有另一种用途。)
关于terminology - 什么是歧义上下文无关文法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6035451/