我可以将此推导视为最左 or/and 最右吗?

Can I consider this derivation as Leftmost or/and Rightmost?

例如,我想从给定的生产集合中导出字符串 'aabbccdd':

S -> AB  | C
A -> aAb | ab
B -> cBd | cd
C -> aCd | aDd
D -> bDc | bc

我可以使用最左推导和最右推导从 AB 推导出字符串。

但是 C 语言呢?在导出字符串时,我总是只有一个变量。

从 C 推导:

S -> C
S -> aCd
S -> aaDdd
S -> aabDcdd
S -> aabbccdd

使用了什么样的推导,我可以认为这个语法有歧义吗?

  1. 在最右推导中,推导最右非终结符。在最左推导中,推导最左边的非终结符。如果只有一个非终结符,则推导是最左和最右的。这并不矛盾。

  2. 由于以S开头的目标字符串有两个推导,语法有歧义。