第三章-词法分析
1.正规式 正规集
(1)ε、Φ都是∑上的正规式,它们所表示的正规集分别为{ε}和Φ;
(2)任何a∈∑,a是∑上的一个正规式,它所表示的正规集为{a};
(3)如果U、V都是∑上的正规式,它们所表示的正规集分别记为L(U)和L(V),那么,(U|V)、(UV)和(U) * 也是正规式,它们所表示的正规集分别为 L(U)∪L(V)、L(U)L(V)和(L(U))*;
仅由有限次使用上述步骤而得到的表达式才是∑上的正规式;仅由这些正规式所表示的字集才是∑上的正规集。
【例子】:令∑={a,b},下面是∑上的正规式和相应的正规集
2.有限自动机
确定有限自动机(DFA)
一个确定有限自动机(DFA)M是一个五元式:
M=(S,∑,δ,s0,F),其中:
- S是一个有限集,它的每个元素称为一个状态;
- ∑是一个有穷字母表,它的每个元素称为一个输入字符;
- δ是一个从S x ∑至S的单值部分映射。δ(s,a)= s′,意味着:当现行状态为s、输入为字符a时,将状态转换到下一个状态s′。我们称s′为s的一个后继状态;
- s0∈S,是唯一的初态;
- F⊆S,是一个终态集(可空)。
有限自动机DFA M接受的语言
从状态转换函数来看: | 从状态转换图来看: |
---|---|
如果对所有α∈Σ*,以下述方式递归扩张δ的定义:δ(s,ε)=s,δ(s,aα)=δ(δ(s,a),α)(a∈Σ,s∈S),则有:L(M)={α|α∈Σ*,若存在s∈F,使δ(s0,α)=s}对上例的DFA M和w = baa:δ(0,baa)= δ(2,aa)= δ(1,a)= 3(注意:其中0、1、2、3分别代表状态0、1,2,3) | 对于Σ*上的任何字α,如果存在一条从初态结点到某一终态结点的通路,且这条通路上所有弧的标记符连接成的字等于α,则称α可为DFA M所识别(读出或接受),如果M的初态结点同时又是终态结点,则空字ε可为DFAM所识别。DFA M所能识别的字的全体记为L(M)。 |
非确定有限自动机(NFA)
一个非确定有限自动机NFA M是一个五元式:
M = (S,Σ,δ,S0,F)
其中:
- S是一个有限集,它的每个元素称为一个状态;
- ∑是一个有穷字母表,它的每个元素称为一个输入字符;
- δ是一个从S x ∑至S的子集的映射,即δ:
S x ∑ →2s(S集合的幂集/S的所有子集的集合) - S0⊆S,是一个非空初态集。
- F ⊆S,是一个终态集(可空)。
3.DFA M和NFA M的等价性
定理:对于每个NFA M存在一个DFA M′,使得L(M) = L(M′)
证明思想:用M′的一个状态对应M的一个状态集合,用这种方法,能从一个NFA M构造一个DFA M′使得L(M′)= L(M), 这种方法称作子集构造法。
状态集的ε闭包定义
设I是有限自动机的状态集的子集,I的ε闭包ε_CLOSURE(I)
为:
(1) 如果状态q∈I,则q∈ε_CLOSURE(I)(既I中的状态全部属于ε_CLOSURE(I))
(2) 如果状态q∈I,那么从状态q出发经过任意ε弧而能到达的任何状态q′都属于ε_CLOSURE(I)。(注意:可以连续经过多条ε弧)
有限自动机的转移函数
假定I是非确定有限自动机的状态集的子集,则定义:Ia =ε_CLOSURE(J)
其中:a∈Σ,J是从I中的某一状态结点出发经过一条a弧而达到的状态结点的全体。
4. 从NFA M 构造DFA M的方法
5.确定有限自动机的化简
熟练掌握:
对于某一正规集,写出其正规表达式,构造其非确定有限自动机、确定有限自动机,并将其最小化;