terminology - 什么是歧义上下文无关文法?

标签 terminology context-free-grammar ambiguous-grammar

我不是很清楚上下文无关语法中歧义的概念。如果有人可以帮助我解释这个概念或提供好的资源,我将不胜感激。

最佳答案

T * U;

那是指针声明还是乘法?除非您知道 TU 实际上 是什么,否则您无法分辨。

因此表达式的语法 取决于表达式的语义(含义)。这不是上下文无关的——在上下文无关的语言中,这只能是一件事,而不是两件事。 (这就是为什么他们不让这样的表达式成为 D 中的有效语句的原因。)

另一个例子:

T<U> V;

这是模板用法还是大于和小于操作? (这就是他们在 D 中将语法更改为 T!(U) V 的原因——括号只有一种用途,而插入符有另一种用途。)

关于terminology - 什么是歧义上下文无关文法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6035451/

相关文章:

VimScript 还是 VimL?

byte - 为什么Big Endian以小字节结尾?

nlp - 将一阶逻辑表达式映射到数据库条目(从 FOL 表达式中提取信息)

compiler-construction - GNU Bison : Syntax Error, 意外 <token>

c# - 为什么编译器找不到正确的类型?

c - 浅/深复制术语是否适用于没有引用的对象?

terminology - 运行时定义

grammar - 所有字符串 X2Y,其中 X 和 Y 由 0 和 1 组成,且 X ≠ Y

compiler-construction - pretty-print 歧义语法

python - 如何生成二义性语法的所有可能的解析