下面介绍从Σ上的一个正规式R构造Σ上的一个NFA M,使得L(M)=L(R)的方法。
我们所介绍的方法称为"语法制导"的方法,即按正规式的语法结构指引构造过程,首先将正规式分解成一系列子表达式,然后使用如下规则为R构造NFA,对R的各种语法结构的构造规则具体描述如下:
①(a)对于正规式 ,所构造的NFA为:
(b) 对于正规式ε,所构造的NFA为:
(c) 对于正规式a,a∈Σ,所构造的NFA为:
② 若s,t为Σ上的正规式,相应的NFA分别为N(s)和N(t),则
(a) 对正规式R=s|t,所构造的NFA(R)如下:
其中x是NFA(R)的初态,y是NFA(R)的终态,x到N(s)和N(t)的初态各有一ε弧,从N(s)和N(t)的终态各有一ε弧到y,现在N(s)和N(t)的初态或终态已不作为N(R)的初态和终态了。
(b) 对正规式R=st,所构造的NFA(R)为:
其中N(s)的初态成了N(R)的初态,N(t)的终态成了N(R)的终态。N(s)的终态与N(t)的初态合并为N(R)的一个既不是初态也不是终态的状态。 |