二义性文法和最右导数

Ambiguous grammar and Right Most Derivative

歧义语法定义为, "An ambiguous grammar is a context-free grammar for which there exists a string that can have more than one leftmost derivation or parse tree."

我的疑问是,

1) 如果文法有多个最右导数,是否会使文法产生歧义?

2) 如果文法有多个最右导数,是否意味着它会有多个最左导数?

并且拥有多个右最导数对 LL(1)、LR(0) 解析器、LR(1) 解析器等的解析能力有任何影响,为什么?

一切都是基于最左导数来定义和处理的。这可能是因为我们从左向右移动。但是我们可以从最右导数中获得任何见解吗?

左或右的选择完全是任意的。对于一个给定的文法,一个句子有不止一个最左边的推导,也有不止一个最右边的推导,反之亦然。所以歧义的两种可能定义是等价的。

如果考虑推导生成树而不是一系列的推导步骤,这可能会更清楚。两种推导顺序对应于遍历树的两种不同过程。 (两者都是深度优先的,但一个从左到右访问节点,另一个从右到左访问节点。)如果某个句子(即树的边缘)出现在两个不同的解析树中,则语法是有歧义的。两棵不同的树在两个遍历过程中会有不同的遍历顺序,所以遍历可以用来比较树。 (使用此 属性 的其他步行程序也是可能的。)