如何将线性语法转换为有限状态机

时间:2013-06-06 18:58:37

标签: compiler-construction discrete-mathematics state-machine

我应该将线性右语法转换为有限状态机。 语法是

S —> bA|aD|bC
А —> aC|bA
C —> bB|aA|b
B —> aD|bC|a
D —> aA|aC

通常问题解决如下: 对于每个州,我们将非终端关联起来。如果状态从X到Y的转换,我们添加规则X→aY。添加最终状态规则X→ε。对于ε-过渡 - X→Y。

例如:

A → aB | cC
B → bD | cE
C → ε
D → aB | cC
E → aB | cC

Solution

问题。

  1. 如果有连接A和A,例如,A - > aC | 的 BA 即可。
  2. 如何处理结构C - > bB | aA | b ,结尾只是b。

1 个答案:

答案 0 :(得分:2)

1]您可以进行自循环(例如,节点Z可以添加字母o,然后转到节点Z)

2]使用陷阱状态。你不能从那里移动任何地方,但它仍然需要一个移动(因此一个字母)来到那里