自动机理论:将无上下文语法转换为DFA

时间:2014-03-30 07:12:51

标签: finite-automata dfa

如何将无上下文语法转换为DFA?如果我们有像这样的过渡,这很容易 A-> a B.但是当我们将转换作为A-> a B c时。那么我们应该如何将其表示为DFA

2 个答案:

答案 0 :(得分:0)

首先,您应该将语言转换为CNF (Chomskey Normal Form)。 然后转换步骤如下:

  1. 将其转换为左/右语法称为常规语法。

  2. Convert the Regular Grammar into Finite Automata 自动机的转换如下获得     对于每个生产A - > aB使δ(A,a)= B成为a,从A到B标记为'a'。     对于每个生产A - > a使δ(A,a)=最终状态。     对于每个生产A - > ε,使δ(A,ε)= A,A为最终状态。

答案 1 :(得分:0)

没有将任意 CFG 转换为 DFA 的通用程序。例如,考虑这个 CFG:

<块引用>

S → aSb | ε

此语法适用于语言 { anbn | n ≥ 0 },这是一种规范的非正则语言。由于我们只能为常规语言构建 DFA,因此无法构建与此 CFG 相同语言的 DFA