📜  自动机派生树

📅  最后修改于: 2020-12-17 07:46:22             🧑  作者: Mango

衍生树

派生树是用于给定CFG的给定生产规则派生的图形表示。这是显示如何从一组给定的生产规则中获取某些字符串的推导的简单方法。派生树也称为解析树。

解析树遵循运算符的优先级。最深的子树首先遍历。因此,在父节点的运算符拥有的子树运算符较少的优先级。

解析树包含以下属性:

  • 根节点始终是指示开始符号的节点。
  • 从左到右读取派生。
  • 叶节点始终是终端节点。
  • 内部节点始终是非终端节点。

范例1:

生产规则:

E = E + E
E = E * E
E = a | b | c

输入值

a * b + c

第1步:

第2步:

第2步:

步骤4:

步骤5:


注意:我们可以逐步或直接一步一步绘制派生树。

范例2:

从给定的CFG绘制字符串“ bab”的派生树

S → bSb | a | b

解:

现在,字符串“ bbabb”的派生树如下:

上面的树是为派生字符串bbabb而绘制的派生树。通过简单地读取叶节点,我们可以获得所需的字符串。同一棵树也可以表示为

范例3:

为给定的CFG的字符串aabbabba构造一个派生树,

S → aB | bA
A → a | aS | bAA
B → b | bS | aBB

解:

为了绘制一棵树,我们将首先尝试获取字符串aabbabba的派生

现在,派生树如下:

范例4:

用以下语法显示字符串“ aabbbb”的派生树。

S → AB | ε
A → aB
B → Sb

解:

要绘制一棵树,我们首先将尝试获取字符串aabbbb的派生

现在,字符串“ aabbbb”的派生树如下: