- 12
- 0
- 约5.63千字
- 约 11页
- 2017-09-02 发布于浙江
- 举报
编译原理PPT总结
编译原理PPT总结
正规文法到正规式的转换:
(1) 将正规文法中的每个非终结符表示成关于它的一个正规式方程,获得一个联立方程组。
(2) 依照求解规则:
若 x = αx | β (或 x = αx + β ) 则解为 x = α*β;
若 x = xα | β (或 x = xα + β ) 则解为 x = βα *
以及正规式的分配律、交换律和结合律求关于文法开始符号的正规式方程组的解。
例1 设有正规文法G:
Z ( 0A
A ( 0A | 0B
B ( 1A | ε
试给出该文法生成语言的正规式。
分析 首先给出相应的正规式方程组(方程组中用“+”代替正规式中的“ | ” )如下:
Z=0A (1)
A = 0A + 0B (2)
B=1A+ ε (3)
将(3)代入(2)中的B得
A=0A+01A+0 (4)
对(4)利用分配律得
A=(0+01)A+0 (5)
对(5)使用求解规则得
A=(0+01)*0 (6)
将(6)代入(1)式中的A,得
Z = 0 (0 + 01)* 0
即正规文法G[Z]所生成语言的正规式是:
R = 0 (0 | 01)* 0
例2 设有正规文法G:
A ( aB | bB
B ( aC | a | b
C ( aB
试给出该文法生成语言的正规式。
分析 首先给出相应的正规式方程组(方程组中用“+”代替正规式中的“ | ” )如下:
A = aB + bB (1)
B = aC + a + b (2)
C = aB (3)
将(3)代入(2)中的C得
B=aaB + a + b (4)
对(4)使用求解规则得
B=(aa)*(a+b) (5)
(5)代入(1)中的B得
A = (a + b)(aa)*(a + b)
即正规文法G[A]所生成语言的正规式是:
R = (a | b)(aa)*(a | b)
正规式到正规文法的转换:
(1) 令 VT=Σ
(2) 对任何正规式R选择一个非终结符Z生成规则Z(R并令S=Z。
(3) 若a和b都是正规式,对形如 A(ab 的规则转换成 A(aB 和 B(b 两规则,其中B是新增的非终结符。
(4) 对已转换的文法中, 形如A(a*b 的规则,进一步转换成 A ( aA | b 。
(5) 不断利用规则(3)和(4)进行变换,直到每条规则最多含有一个终结符为止。
例1 将 R=(a | b)(aa)*(a | b) 转换成相应的正规文法。
解:令A是文法开始符号,根据规则(2)变换为:
A ( (a | b)(aa)*(a | b)
根据规则(3)变换为:
A ( (a | b)B
B ( (aa)*(a | b)
对B根据规则(4)变换为
A ( aB | bB
B ( aaB | a | b
根据规则(3)变换为
A ( aB | bB
B ( aC | a | b
C ( aB
确定有限自动机(DFA)的定义:
确定的有限自动机DFA M是一个五元式
M =(S,(,δ ,s0 ,F )
(1) S 是一个非空有限集,它的每个元素称为一个状态
(2) ( 是一个有穷字母表,它的每个元素称为一个输入符号,所以也称为输入符号字母表
(3)δ是状态转换函数,是在S×(→S上的单值映射。δ(s,a)=s’意味着:当先行状态为s、输入字符为a时,将转到下一状态s’。我们称s’为s的一个后继状态。
(4) s0∈S,是唯一的一个初态
(5) F( S,是一个终态集(可空),终态也称可接受状态或结束状态。
例如有DFA M=({0,1,2,3},{a,b},δ,0,{3})其中δ定义为:
δ(0,a)=1 δ(0,b)=2 δ(1,a)=3
δ(1,b)=2 δ(2,a)=1 δ(2,b)=3
δ(3,a)=3 δ(3,b)=3
其它表示形式:状态转换矩阵和状态转换图
NFA和DFA的不同在于:
δ的值域是S的子集
开始状态有不止一个
在NFA中每个结点可射出若干条弧与别的结点相连接,每条弧用∑中的一个正规式做标记。
例如NFA M =({0,1,2,3,4},{a,b},δ,{0},{1,2})
其中:
δ(0,a)={0,3} δ(0,b)={0,4}
δ(1,a)={1} δ(1,b)={1}
δ(2,a)={2} δ(2,b)={2}
δ(3,a)={1} δ(3,b)=φ
δ(4,a)=φ δ(4,b)={2}
状态转换矩阵和状态转换图:
例1 试构造识别语
原创力文档

文档评论(0)